现在的位置: 首页 > 综合 > 正文

MFC消息映射的一些理解

2018年03月31日 ⁄ 综合 ⁄ 共 2094字 ⁄ 字号 评论关闭

有些人觉得MFC很神奇,却没有被它那稀奇古怪的typedef吓跑。本来要做这样一种自动生成代码的框架有另外一种实现,就是用可读性更强的虚拟函数来实现动态绑定,对于MFC这样一种机制,我觉得可能有两种原因,使得它呈现出这样古怪的风格。第一,可能当时C++还没有那么完善;第二,可能考虑到效率的和空间的问题。

 

MFC消息映射宏的机制并不难理解,用一句话来概括,就是在你已经实现的一些类里面去插入一些函数和变量。

 

看如下代码,估计写过MFC程序的同学都很熟悉这样的东西:

 

 

 

BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 就是两个宏,它的作用就是在你的代码中插入一些东西。看到 AFXWIN.H 的第1195行。

 

 

 

他要插入的东西其实就是这个,扩展开来就是两个函数成员,两个成员变量。再看到 AFXWIN.H 的第1165行。

 

 

 

可以知道其中AFX_MSGMAP就是一个结构体,第一个成员是一个指向回调函数的指针,第二个成员是消息相关的一个结构体,如下:

 

 

 

 

 

至此,大概知道了它是一个什么样的过程了吧。

抱歉!评论已关闭.