MFC
文章平均质量分 73
Zenhobby
这个作者很懒,什么都没留下…
展开
-
区别cin,scanf,gets,getchar
gets 【1】函数:gets(字符指针) 【2】头文件:stdio.h(c中),c++不需包含此头文件 【3】原型:char*gets(char*buffer); 【4】功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取(接受)的换行符被转转载 2015-03-27 22:20:02 · 1219 阅读 · 0 评论 -
MFC 内核对象用法简略
1、内核对象内核分配的内存块,只能由内核访问,该内存块是一种数据结构,其成员负责维护该对象的各种信息。内核的访问通过句柄来完成,非特殊情况下句柄限定在同一线程内才能传递成功。2、内核对象的创建HANDLE CreateThread( )HANDLE CreateFile( )HANDLE CreateSemaphore( )HANDLE CreateFileMapping(转载 2015-03-11 09:46:41 · 819 阅读 · 0 评论 -
MFC 线程的退出方法
A.线程函数的返回(推荐用法)(需要考虑的是catch/运行标志/错误处理等方法)B.ExitThread函数(不推荐)C.同一个进程或者另一个进程中的线程调用TerminateThread函数(应该避免这种方法)D.包含线程的进程终止(应该避免使用这种方法)线程函数的返回可以确保线程中的C++对象被撤销函数正确的撤销,操作系统正确的释放线程堆栈所使用的内存,系统将线程的退转载 2015-03-11 11:12:09 · 21925 阅读 · 1 评论 -
MFC RichEdit的用法汇总
1. 如何使用richedit添加AfxInitRichEdit();CxxxApp::InitInstance(){ AfxInitRichEdit();}AfxInitRichEdit()功能:装载 RichEdit 1.0 Control (RICHED32.DLL).2. 改变richedit指定区域的文字颜色及字体CHARFORMAT cf;ZeroMe转载 2015-03-10 16:43:06 · 4308 阅读 · 0 评论 -
MFC CButtonST的用法汇总
效果一:在按钮上加入Icon,使Icon和文字同时显示 假设按钮ID为IDC_BUTTON11. 添加成员变量CButtonST m_btn;2. 添加Icon资源,设其ID设为IDI_ICON13. 在OnInitDialog函数中初始化按钮 m_btn.SubclassDlgItem(IDC_BUTTON1,this);m_btn.SetIcon(IDI_ICON转载 2015-03-10 16:38:41 · 1497 阅读 · 0 评论 -
MFC 使用EASYSIZE使对话框程序具有拖拽属性
EASYSIZE 假设创建的对话框的类名是CMyDlg,具体过程如下:步骤一:把easysize.h拷贝到CMyDlg项目文件夹中,同时在CMyDlg的.h文件和.cpp文件中加入#include "easysize.h";设置对话框属性:Styles->Broder:Resizing步骤二:在CMyDlg类的h文件中,加入DECLARE_EASYSIZE,注意结尾处不要加“;”。转载 2015-03-10 16:32:48 · 1303 阅读 · 0 评论 -
MFC 串口编程总结
1、win32下对串口的操作可以通过两种方式:ActiveX控件和Windows API函数,第一种程序简单但是欠缺灵活,第二种自由灵活编程不易。无论哪一种方式都需要完成四个步骤:一、打开串口;二、配置串口;三、读写串口;四、关闭串口。2、win32下对文件的概念进行了扩展,无论是文件、通信设备、命名管道、邮槽、磁盘还是控制台都是用API函数CreateFile打开或者创建。HANDLE转载 2015-03-10 16:21:45 · 4281 阅读 · 0 评论 -
基于单文档程序的OCX创建方法:(OCXDoc的创建方法)
基于单文档的OCX控件,应用范围是WEB发布显示工业监控软件界面COCXDoc的建立过程:1.建立MFC ActiveX工程 (例如:MyActiveX)2.用CActiveXDocControl替换COleControl3.把ActivDoc.h和ActivDoc.cpp加入工程中4.ActivDoc.h头文件加入MyActiveXCrtl转载 2015-03-10 15:12:26 · 1208 阅读 · 0 评论 -
MFC中的函数调用约定,extern C, __declspec(dllexport)
函数在C++编译方式与C编译方式下的主要不同在于:由于C++引入了函数重载(overload),因此编译器对同名函数进行了名称重整(name mangle)。因此,在C++中引用其他C函数库时,需要对声明使用的函数做适当的处理,以告知编译器做出适应的名称处理。函数的调用约定涉及了函数参数的入栈顺序、清栈主体(负责清理栈的主体:函数自身还是调用函数者?)、部分名称重整。如,在C编转载 2015-03-10 14:55:22 · 3763 阅读 · 0 评论 -
MFC 多线程同步方法
线程的同步可分用户模式的线程同步和内核对象的线程同步两大类。用户模式中线程的同步方法主要有原子访问和临界区等方法。其特点是同步速度特别快,适合于对线程运行速度有严格要求的场合。内核对象的线程同步则主要由事件、等待定时器、信号量以及信号灯等内核对象构成。由于这种同步机制使用了内核对象,使用时必须将线程从用户模式切换到内核模式,而这种转换一般要耗费近千个CPU周期,因此同步速度较慢,但在适用性上却要远转载 2015-03-11 14:42:49 · 1364 阅读 · 0 评论 -
mfc 绘图中的坐标空间转换问题
Win32应用程序编程接口(API)使用四种坐标空间:世界坐标系空间、页面空间、设备空间和物理设备空间。世界坐标系空间和页面空间又称为逻辑空间,物理设备空间通常指程序窗口的客户区,但是它也包含整个桌面、完整的窗口(包括框架、标题栏和菜单栏)或打印机的一页或绘图仪的一页纸。物理设备的尺寸根据显示器打印机或者绘图仪的不同而不同。一、映射模式基本知识 当Windows应用程序在其客户转载 2015-03-09 16:52:37 · 2496 阅读 · 0 评论 -
Windows内核模式和用户模式
运行 Windows 的计算机中的处理器有两个不同模式:“用户模式”和“内核模式”。根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行,但某些驱动程序在用户模式下运行。当启动用户模式的应用程序时,Windows 会为该应用程序创建“进程”。进程为应用程序提供专用的“虚拟地址空间”和专用的“句柄表格转载 2015-03-11 16:34:13 · 3415 阅读 · 0 评论 -
C/C++中的字符串比较函数strcmp/memcmp/CString.Compare/CString:CompareNoCase
memcmp和strncmp的区别一、memcmp含义Compare characters in two buffers.int memcmp( const void* buf1, const void* buf2, size_t count );inline int wmemcmp ( const wchar_t* buf1, const wcha转载 2015-04-02 20:59:30 · 12245 阅读 · 0 评论 -
C++中的fstream/ifstream/ofstream和MFC中的CFile/CStdioFile
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:#include ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读取到内存中fst转载 2015-04-03 08:29:30 · 6676 阅读 · 1 评论 -
VC中常用的数据类型之间的转换string/LPCTSTR/LPSTR/VARIANT等
CString LPCTSTR区别联系 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR;typedef const char * LPC转载 2015-08-25 10:10:15 · 5638 阅读 · 0 评论 -
Win32 SDK相关常见面试题
1. Win32应用程序的基本类型.win32应用程序包含windows窗口程序和控制台程序2种.窗体程序内置模板代码,控制台程序适合编写dos程序2. 创建win32窗口程序的几个步骤,及使用到的函数。// 注册窗口类 RegisterClass(&wc);// 创建窗口 HWND hwnd = CreateWindow(转载 2017-07-09 23:11:55 · 1476 阅读 · 0 评论 -
MFC通过ADO连接ACCESS2010数据库
第一:在stdafx.h中导入动态链接库#import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")添加时注意放到文件的最后,否则会出错第二:在app文件中添加变量_ConnectionPtr m_pConnection; _Re原创 2013-02-26 17:06:14 · 1856 阅读 · 0 评论 -
C++ 字符编码知识转载
基本常识1.位和字节说起编码,我们必须从最基础的说起,位和字节(别觉得这个过于简单不值一说,我还真见过很多个不能区分这两者的程序员)。位(bit)是指计算机里存放的二进制值(0/1),而8个位组合成的“位串”称为一个字节,容易算出,8个位的组合有256( 28 )个组合方式,其取值范围是“00000000-11111111”,常用十六进制来表示。比如“01000001”就是一个字节,其对应转载 2015-03-11 09:29:13 · 1723 阅读 · 0 评论 -
CreateThread, AfxBeginThread,_beginthreadx的区别
1、CreateThread——Windows的API函数2、_beginthreadex——MS对C Runtime库的扩展SDK函数3、AfxBeginThread——MFC中线程创建的MFC函数CreateThread(API函数:SDK函数的标准形式,直截了当的创建方式,任何场合都可以使用。)提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC转载 2015-03-11 10:41:46 · 1318 阅读 · 0 评论 -
MFC 自定义类的串行化使能方法
一、MFC允许对象在程序运行的整个过程中持久化的串行化机制(1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程。(2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的状态。(3)MFC支持CObject类中的串行化,所以,所有继承于CObject的类可以利用CObject的串行化协议。(4)串行化的基本思想:转载 2015-03-10 10:27:49 · 1917 阅读 · 0 评论 -
MFC中的GDI/GDI+和双缓冲绘图
1、GDI概述 GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。 GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图形设转载 2015-03-09 15:07:12 · 7361 阅读 · 0 评论 -
MFC CScrollView中的设备坐标和逻辑坐标转换
CView派生类的说明CEdit View 实现像便签多行正文编辑器的视图CFormView 使用对话框控件模板资源来定义用户应用程序接口的滚动视图CListView 支持重点在列表控件的文档/视图结构的视图CRecordView 显示对话框控件中的数据库记录的视图CRichEditView 支持重点在金莲能编辑控件的文档/视图结构的视图CScrollView 提供转载 2015-03-09 16:55:37 · 1505 阅读 · 0 评论 -
MFC消息映射和处理机制整理
Windows应用程序是消息驱动的。在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。什么是消息 窗口消息一般由三个部分组成:(1).一个无符号整数,是消息值;(2)消息附带的WPARAM类型的参数;(3)消息附带的LPARAM类转载 2015-03-07 16:53:33 · 2647 阅读 · 0 评论 -
Windows XP 系统启动过程分析
转载标注—————————————————————————————————————————————————————————随着技术的发展,我们能够见到的计算机硬件种类越来越多。以计算机上最重要的组件CPU来说,目前就有很多选择。当然,这里的选择并不是说AMD或者Intel这种产品品牌,而是指其内部的体系结构。目前常见的CPU体系结构主要基于复杂指令集(Complex Instruction转载 2015-03-07 15:51:38 · 2384 阅读 · 0 评论 -
C++成员变量初始化列表和变量初始化顺序
一、成员变量初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。class foo{ public: foo(string s, int i):name(s), id(i){} ; // 初始化列表 private: string name ;int id ;};其中foo(str转载 2015-03-07 08:37:43 · 2361 阅读 · 0 评论 -
CString转换说明符
1.符号%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d 有符号十进制整数 %f 浮点数(包括float和doulbe) %e(%E) 浮点数指数输出[e-(E-)记数法]转载 2015-03-07 11:07:46 · 663 阅读 · 0 评论 -
MFC单文档/多文档程序各类之间的跳转总结
转载 2015-03-07 17:02:16 · 702 阅读 · 0 评论 -
C++中的成员变量的内存分配问题
在C\C++中,通常可以把内存理解为4个分区:栈、堆、全局/静态存储区和常量存储区。下面我们分别简单地介绍一下各自的特点。1 栈(stack) 通常是用于那些在编译期间就能确定存储大小的变量的存储区,用于在函数作用域内创建,在离开作用域后自动销毁的变量的存储区。通常是局部变量,函数参数等的存储区。他的存储空间是连续的,两个紧密挨着定义的局部变量,他们的存储空间也是紧挨转载 2015-03-07 09:20:27 · 4504 阅读 · 1 评论 -
写在博客开始
这天上午我正在耐下心思读一篇某菊花公司的C++培训资料,template和typename用的不甚熟练,想回头看看我做过的东西,借鉴一下,却发现笔记都以大文件方式保存在为知笔记中,篇幅逐渐增长,缺难以查询搜索,这才恍然意识到原来博客存在的目的就在于此,所以就从今天开始写博客~以摘抄转载为主,少唠嗑,少感想,多积累技术知识,望我能每日进步,日学不辍!原创 2015-03-06 10:57:15 · 669 阅读 · 0 评论 -
Visual Studio使用时需要注意的地方--收集更新
1.#include 与#include "xxx.h"的区别:!转载 2015-03-06 11:05:43 · 715 阅读 · 0 评论 -
PostMessage,SendMessage,GetMessage,PeekMessage,TranslateMessage,DispatchMessage的用法集合
SendMessage函数功能描述:将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口过程,直到窗口过程处理完消息后才返回。Postmessage函数则是将消息放入消息队列里,并立即返回。PostThreadMessage函数: BOOL PostThreadMessage( DWORD idThread, UINT M转载 2015-03-09 09:58:43 · 3039 阅读 · 0 评论 -
C++ new和malloc的使用整理
1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强转载 2015-03-09 14:32:01 · 1840 阅读 · 0 评论 -
MFC中的文件读写方法总结
1.C中文件写入:FILE *pFile=fopen("1.txt","w");fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),pFile);//fseek(pFile,0,SEEK_SET); //seek_set挪移至文件开头,一直从开头加入 SEEK_END挪移至末尾,从末尾添加//fw转载 2015-03-10 09:53:14 · 19857 阅读 · 0 评论 -
MFC SDI程序中OnDraw,OnPait,OnEraseBkGnd,Invalidate,UpdateWindow
OnDraw:窗口初始输出,OnCreate:窗口创建初始化期间,OnPait:窗口重绘。响应WM_PAINT,On_PRINT和On_PAINT都要调用On_Draw。故在OnCreate中添加的对话框会在窗口显示前显示。因此一般的图形输出都写在OnDraw里OnDraw()和OnPaint()好象兄弟俩,因为它们的工作类似。当窗口改变后,会产生无效区域,这个无效的区转载 2015-03-09 14:33:38 · 1433 阅读 · 0 评论 -
VC命名规范
一、程序风格: 1、严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。 2、提示信息字符串的位置 在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息转载 2015-03-10 15:34:31 · 673 阅读 · 0 评论 -
MFC 解决因名字改变造成的函数名称不对应而调用失败的方法
extern "C"的作用是(防止C++编译器的“名字破坏”特性),使编译器按照C的方式生成函数名,C的方式实际的函数名和你写的一样。如果没有这个,则按照C++的方式生成函数名,这样实际的函数名(LoadLibrary方式GetProcAddress传入的函数名)和你写得函数名不一样,这样你用LoadLibrary、GetProcAddress这种方式调用dll就不成功。 但是用引入库(*转载 2015-03-10 15:04:10 · 1641 阅读 · 0 评论 -
MFC消息循环和消息泵的分析
首先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情。在MFC的应用程序中(应用程序类基于CWinThread继承),必须要有一个消息循环,他的作用是从应用程序的消息队列中读取消息,并把它派送出去(::DispatchMessage)。而消息路由是指消息派送出去转载 2015-03-09 10:03:55 · 1045 阅读 · 0 评论 -
Windows线程间SendMessage产生的死锁问题
SendMessage死锁何时产生呢 ?如果Thread B 向 Thread A SendMessage一个消息,那么 Thread B 的这个SendMessage 就要等 Thread A 的队列中的 消息执行完毕才能够返回,如果在 Thread B SendMessage 的同时 Thread A 等待 Thread B 中的某一处理完毕才能够继续处理消息的话,那么这个时候就发送了死锁转载 2015-03-09 10:02:38 · 1340 阅读 · 0 评论 -
Windows Message大全
Windows是一个消息驱动式系统,SendMessage是应用程序和应用程序之间进行消息传递的主要手段之一,这里我搜集整理了SendMessage函数的详细参数介绍,以备自用。LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);参数1:hWn转载 2015-03-09 10:01:59 · 816 阅读 · 0 评论 -
主对话框与非模态对话框之间的通信
主对话框类CLeditDlg,模态对话框CMoreDlg主对话框中有一个combobox控件来显示地址,当按下一个按钮的时候打开模态对话框,模态对话框的编辑框中显示的是响应地址的天气,所以当主对话框中控件地址改变时需要改变模态对话框中的内容首先,在CLeditDlg中定义一个CMoreDlg的指针pdlg,为public,并且CMoreDlg类中定义一个public的与编辑框关联的变量m_原创 2013-01-17 20:12:32 · 1116 阅读 · 0 评论