MFC消息响应机制分析

MFC消息响应机制分析

ID:38265188

大小:34.24 KB

页数:5页

时间:2019-06-07

MFC消息响应机制分析_第1页
MFC消息响应机制分析_第2页
MFC消息响应机制分析_第3页
MFC消息响应机制分析_第4页
MFC消息响应机制分析_第5页
资源描述:

《MFC消息响应机制分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MFC消息响应机制分析----MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。1.引言----VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。MFC的框架结构大大方便了程序员的编程工作,但是为了更加有效、灵活的使用MFC编程,了解MFC的体系结构往往可以使编程工作事半功倍。它合理的封装了WIN32A

2、PI函数,并设计了一套方便的消息映射机制。但这套机制本身比较庞大和复杂,对它的分析和了解无疑有助于我们写出更为合理的高效的程序。这里我们简单的分析MFC的消息响应机制,以了解MFC是如何对Windows的消息加以封装,方便用户的开发。2.SDK下的消息机制实现----这里简单的回顾一下SDK下我们是如何进行Windows的程序开发的。一般来说,Windows的消息都是和线程相对应的。即Windows会把消息发送给和该消息相对应的线程。在SDK的模式下,程序是通过GetMessage函数从和某个线程相对应的消息队列

3、里面把消息取出来并放到一个特殊的结构里面,一个消息的结构是一个如下的STRUCTURE。typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;----其中hwnd表示和窗口过程相关的窗口的句柄,message表示消息的ID号,wParam和lParam表示和消息相关的参数,time表示消息发送的时间,pt表示消息发送时的鼠标的位置。----然后TranslateMessage函数用来把虚键

4、消息翻译成字符消息并放到响应的消息队列里面,最后DispatchMessage函数把消息分发到相关的窗口过程。然后窗口过程根据消息的类型对不同的消息进行相关的处理。在SDK编程过程中,用户需要在窗口过程中分析消息的类型和跟消息一起的参数的含义,做不同的处理,相对比较麻烦,而MFC把消息调用的过程给封装起来,使用户能够通过ClassWizard方便的使用和处理Windows的各种消息。3.MFC的消息实现机制----我们可以看到,在MFC的框架结构下,可以进行消息处理的类的头文件里面都会含有DECLARE_MESS

5、AGE_MAP()宏,这里主要进行消息映射和消息处理函数的声明。可以进行消息处理的类的实现文件里一般都含有如下的结构。BEGIN_MESSAGE_MAP(CInheritClass,CBaseClass)//{{AFX_MSG_MAP(CInheritClass)//}}AFX_MSG_MAPEND_MESSAGE_MAP()----这里主要进行消息映射的实现和消息处理函数的实现。----所有能够进行消息处理的类都是基于CCmdTarget类的,也就是说CCmdTarget类是所有可以进行消息处理类的父类。CCm

6、dTarget类是MFC处理命令消息的基础和核心。----同时MFC定义了下面的两个主要结构:AFX_MSGMAP_ENTRYstructAFX_MSGMAP_ENTRY{UINTnMessage;//windowsmessageUINTnCode;//controlcodeorWM_NOTIFYcodeUINTnID;//controlID(or0forwindowsmessages)UINTnLastID;//usedforentriesspecifyingarangeofcontrolid'sUINTnSi

7、g;//signaturetype(action)orpointertomessage#AFX_PMSGpfn;//routinetocall(orspecialvalue)};和AFX_MSGMAPstructAFX_MSGMAP{#ifdef_AFXDLLconstAFX_MSGMAP*(PASCAL*pfnGetBaseMap)();#elseconstAFX_MSGMAP*pBaseMap;#endifconstAFX_MSGMAP_ENTRY*lpEntries;};其中AFX_MSGMAP_ENTRY

8、结构包含了一个消息的所有相关信息,其中nMessage为Windows消息的ID号nCode为控制消息的通知码nID为Windows控制消息的IDnLastID表示如果是一个指定范围的消息被映射的话,nLastID用来表示它的范围。nSig表示消息的动作标识AFX_PMSGpfn它实际上是一个指向和该消息相应的执行函数的指针。----而AFX_MSGMAP主要作用是两个,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。