MFC消息映射机制

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值