设为首页 加入收藏

TOP

3.1.6 MFC库消息映射
2013-10-06 23:57:38 来源: 作者: 【 】 浏览:74
Tags:3.1.6 MFC 消息 映射
3.1.6  MFC库消息映射
MFC库应用框架并没有采用虚函数来处理Windows消息,相反,它通过一些宏来将特定的消息映射到派生类中相应的成员函数。库类应用框架没有采用虚函数,这主要是因为以下原因:库类中包含了5个窗口类,分别和Windows的5种窗口类型相对应,如果采用虚函数的办法来处理消息,那么每个窗口基类就要对140条消息分别定义一个虚函数。C++(www.cppentry.com)对每个虚函数都要求有一个4字节的传递结构,称做“vtable”,无论该虚函数是否在派生类中被重新定义,“vtable”都必不可少。这样,对于每个特定类型的窗口或控件,应用都需要一个2.8KB大小的表来支持虚消息控制函数。
那么对于菜单命令消息及按钮命令消息来说,设计消息控制函数不能将它们定义成窗口基类中的虚函数,因为不同的应用会有不同的菜单项和按钮。MFC库的这种消息映射系统就避免了使用大的vtable表,并且能够处理各种各样应用的命令消息。这种体制也允许某些非窗口类(如文档类和应用类)来控制命令消息。这种消息映射体制同Borland作为OWL的一个组成部分所提供的“动态传递表”系统也有所不同,它不需要C++(www.cppentry.com)作任何扩展。
MFC库消息控制函数要求我们提供函数原型、函数体,以及在消息映射中的入口,而ClassWizard会帮助我们将消息控制函数引入我们所设计的类中,只要我们从列表框中选择一个Windows消息ID,ClassWizard就会自动产生具有正确参数及返回值的代码。
【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.1.3 MFC类的分层结构 下一篇3.1.4 MFC程序结构分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: