- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC开发软件概要
是16位编码,因此可以包含世界各地的书写系统的字符和技术符号(如中文也在unicode中),从而克服了ASCII码在表示多语言文本上的不足之处,扩大了ASCII码7位编码方案的好处。Unicode同等的对待所有的字符,并且在表示各种语言和任何字符时既不需要换码序列也不需要控制代码。
因为C++支持两种字符串,即常规的ANSI编码和Unicode编码,这样对应的就有了两套字符串字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串 。微软将这两套字符集及其操作进行了统一,通过条件编译(通过_UNICODE和UNICODE宏)控制实际使用的字符集,这样就有了_T()这样的字符串ANSI码数据,VS是编译环境为UNICODE,要用TCHAR.h将ASCII码转为UNICODE码),对应的就有了_tcslen这样的函数 。
为了存储这样的通用字符,就有了TCHAR: 当没有定义_UNICODE宏时,TCHAR = char,_tcslen = strlen;当定义了_UNICODE宏时,TCHAR = wchar_t , _tcslen = wcslen 。当我们定义了UNICODE宏,就相当于告诉了编译器:我准备采用UNICODE版本。这个时候,TCHAR就会变成了wchar_t。而未定义UNICODE宏时,TCHAR变成了unsigned char 。这样就可以很好的切换宽窄字符集
点击上面的 视图 view → 工作区 workspace
TEXTMETRIC,需在筛选依据中选择Platform SDK。而不是选择visual C++。visual C++为筛选依据时,可查找MFC中常用到的类 。
获取控件与消息映射函数的对应关系可通过ClassWizard中选择好控件的ID,并左键点击Messages栏中的COMMAND即可在Member Function栏中显示对应的消息映射函数
MFC体系结构
MFC主要组成部分:类、宏和全局函数。
类是MFC中最主要的内容。MFC类是以层次结构方式组织起来的。MFC中的类分成两部分,除了一些辅助类,大多数的MFC类是直接或间接从根类CObject派生而来。几乎每一个派生层次都与一具体的Windows实例相对应,如文档类、窗口类和视图类等。
MFC宏主要功能:消息映射、运行时对象类型服务、诊断服务、异常处理。
MFC约定:全局函数以“Afx”为前缀,全局变量以“afx”为前缀。
MFC应用程序生成的过程为:
MFC消息管理
MFC应用程序消息处理的方式与SDK应用程序有所不同。MFC应用程序框架截取了Windows向应用程序发出的消息,再确定将消息发送给哪一个对象,可以根据需要利用函数重载对消息进行处理,但不需要处理的消息将由应用程序框架自动处理。
消息管理包括消息的发送和处理。对于消息发送,MFC提供了类似于API函数功能的消息发送函数,而MFC消息处理的内部机制则相对复杂一些。从编程的角度出发,我们只需了解其大致的原理。
1、MFC消息分类
(1)输入消息:包括鼠标消息、键盘消息和窗口消息。通常以WM_前缀(但不包括WM_COMMAND)WM_MOVE 、WM_PAINTWM_COMMAND通知消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。例如,当用户修改了编辑控件中的文本后,编辑控件向其父窗口发送WM_COMMAND通知消息。
(3)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,如动态数据交换(DDE)要通过系统的消息队列,而有些则不通过系统消息队列直接送入应用程序的消息队列,如创建窗口消息。
(4)自定义消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理
typedef struct tagMSG {
HWND hWnd; // 目标窗口句柄
UINT message; // 消息标识
WPARAM wParam; // 消息参数1(附加信息,16位)
LPARAM lParam; // 消息参数2(附加信息,32位)
DWORD time; // 消息发送时间
POINT pt; // 消息发送时鼠标的屏幕坐标
} MSG;
wParam和lParam的具体含义与message成员的值有关
第一个成员变量hwnd即代表消息所属的窗口,一个消息一般都是与某个窗口相联系的,如在某个活动窗口中按下键盘,该键盘消息就是发给该窗口的,在VC中,用HWND变量类型来标识窗口。
第二个成员变量message代表消息代号,无论是键盘按
文档评论(0)