MFC消息映射机制

来源:互联网 发布:mac os教程 编辑:程序博客网 时间:2024/06/04 18:08

MFC 自身会维护一个静态消息路由表,这个路由表在所有窗口生成之前产生(程序初始化过程中产生),生成过程如下:

(1)检索MFC程序中的用户创建的类;

(2)检索这些类的头文件(.h)是否声明 DECLARE_MESSAGE_MAP(),如果有这个声明,则对该类生成并维护一个静态路由表

(3)对有DECLARE_MESSAGE_MAP()声明的类源文件(.cpp)进行检索,将BEGIN_MESSAGE_MAP(A, B)声明下的消息路由加入该用户类的静态路由表,(A为该子类名,B为父类名)

(4)进一步检索B类,即(3)中类的父类,的源文件(.cpp),并将BEGIN_MESSAGE_MAP(B, C)声明下的消息路由加入该用户类的静态路由表,如出现同名的Message,则忽略该条Message。

(5)重复(4)知道检索到最后一层父类

(6)最后得到的静态路由表对每个DECLARE_MESSAGE_MAP()的用户类都有一个消息映射表。


例如 在这些类中除了adtmodel是非MFC类,其他类都具有自己的消息映射表。


当系统从消息队列中读取一条消息,系统将消息发送都相应的窗口上,窗口对应一个用户类,系统将在这个用户类所维护的静态路由表中查找相应的响应函数对该消息进行响应。


0 0
原创粉丝点击