Windows程序设计论文_MFC消息机制的介绍.docx_第1页
Windows程序设计论文_MFC消息机制的介绍.docx_第2页
Windows程序设计论文_MFC消息机制的介绍.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

windows程序设计论文mfc消息机制的介绍学号:姓名:专业:2011年6月28日windows 是基于事件(消息) 驱动机制的图形界面操作系统,基于windows 的应用系统的运行依靠消息来驱动。windows 程序设计主要经历了传统的sdk、mfc 两个重要的发展阶段。mfc (microsoft foundation classes) 是一个windows 应用程序的可视化集成开发工具,,是一个建立在windows api 之上的c + + 类库,它以面向对象的全新面貌出现,使windows 程序设计开发过程效率更高,在mfc 中消息及对消息的操作均被封装到类中,消息通过消息映射机制传递到相应的处理函数。mfc 把消息分为三大类,一是命令消息(wm command) :来自于用户接口(ui) 对象的消息都是这种命令消息,它的处理不同于其它消息,它们可以被更多的对象处理,凡是由ccmdtarget 派生的类都有资格处理这类消息,它们依靠一种称为消息映射(message map) 的机制把消息与消息处理函数连接起来。二是窗口消息(windows messages) : 除wmcommand 以外,任何以wm 开头的消息都是这一类,任何由cwnd 派生的类均可接受此消息。三是控件通知(cont rol notification) :这种消息由控件产生,为的是向其父窗口(通常是对话框) 通知某种情况,任何由cwnd 派生的类均可接受此消息。还有一种用户自定义的消息,用于处理所有非标准的窗口消息,用户自定义的消息的处理与命令消息一样。消息映射(message map) 是mfc 消息机制中一个关键技术,mfc 中可以处理消息的类都是由ccmdtarget 派生的,这些派生类中都有一个消息映射表,消息映射表的作用就是把程序中欲处理的消息和消息处理例程关联起来,并且将基类与派生类的消息映射表连接起来,使得消息能沿着这条路寻找匹配的处理函数。消息传递,在mfc 中,消息的处理是很复杂的,线程的消息循环不断地从消息队列抓取消息,派送到窗口函数,此后消息又是如何传递的呢? 关键就在消息映射表中,mfc 中可以处理消息的类其消息映射表就构成了一个消息传递网。其次,mfc 还有一个实现消息推动的泵,推动消息沿着一定的路径传递,这个泵就隐藏在各个类的windowproc、on2command、oncmdmsg、defwindowproc 虚函数中,我们把消息循环看作消息传递的起点,消息的流动mfc消息的处理的过程:(1)函数afxwndproc接收windows操作系统发送的消息。(2)函数afxwndproc调用函数afxcallwndproc进行消息处理,这里一个进步是把对句柄的操作转换成对cwnd对象的操作。 (3)函数afxcallwndproc调用cwnd类的方法windowproc进行消息处理。(4)windowproc调用onwndmsg进行正式的消息处理,即把消息派送到相关的方法中去处理。在cwnd类中都保存了一个afx_msgmap的结构,而在afx_msgmap结构中保存有所有我们用classwizard生成的消息的数组的入口,我们把传给onwndmsg的message和数组中的所有的message进行比较,找到匹配的那一个消息。实际上系统是通过函数afxfindmessageentry来实现的。找到了那个message,实际上我们就得到一个afx_msgmap_entry结构,而我们在上面已经提到afx_msgmap_entry保存了和该消息相关的所有信息,其中主要是消息的动作标识和相关的执行函数。然后我们就可以根据消息的动作标识调用相关的执行函数,而这个执行函数实际上就是通过classwizard在类实现中定义的一个方法。这样就把消息的处理转化到类中的一个方法的实现上。windows 系统是一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论