透过宏定义了解MFC的消息响应机制

 

消息系统是MFC的重要组成部分。MFC的消息响应机制并不复杂,而且MFC的开发环境 Visual Studio来供了非常好的自动化工具,自动生成代码。MFC也定义了丰富的宏来简化消息响应的代码。这使得很多初学者都能快速开发出基于消息响应机制的应用程序。然后也正是这些带来方便的宏,使很多人摸不着头脑。当不小心的代码操作使自动化工具不好用的时候,看着那一组更像是一堆的宏,很多人只好一头雾水。
要想真正了解MFC的消息机制,必需弄清楚这些宏。好在源码面前无秘密,我们将从这些宏的源码着手,逐步分析、了解、并学习MFC的消息响应及映射机制。
第一个宏:DECLARE_MESSAGE_MAP()
作用:为一个消息响应类声明必需的成员变量和成员函数。
我们在窗口类、应用程序类、文档类、视图类、以及这些类的子类的定义中,都能看到DECLARE_MESSAGE_MAP()宏,通常被自动化工具声明在类的最后部分,如:
//  生成的消息映射函数
protected :
     DECLARE_MESSAGE_MAP()
};
DECLARE_MESSAGE_MAP()
宏定义如下(在DLL类型和WINDOWS程序类型下,定义会有不同,本文只分析非DLL类型,下同):
#define  DECLARE_MESSAGE_MAP() 
private
     
static   const  AFX_MSGMAP_ENTRY _messageEntries[]; 
protected
     
static   const  AFX_MSGMAP messageMap; 
     
virtual   const  AFX_MSGMAP *  GetMessageMap()  const
可以看到,宏DECLARE_MESSAGE_MAP()定义了两个静态成员变量,并重载了一个虚函数。下面分析一下这三个成员:
_messageEntries被定义为一个AFX_MSGMAP_ENTRY类型的数组
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值