消息映射--Message Mapping

      Windows程序靠消息的流动而维护生命,我们已经知道了消息的一般处理方法,也就是在窗口处理函数中借助于一个大大的switch/case比较操作来判断消息,再调用对应的处理程序。为了让大大的switch/case比较操作简化,也让程序代码更模块化一些,我们设计一个消息映射表,把消息和其处理程序关联起来。

      当我们的类库成立之后,如果其中 与消息有关的类(消息标志类) 都是一条线式的继承,我们应该为每一个“消息标志类”准备好一个消息映射表,并且将基类与派生类的消息映射表连接起来。然后,当窗口的函数做消息比较时,我们就可以想办法引导它沿着这条路走过去。

      但是,MFC中用来处理消息的C++类,并不呈单线发展。作为application framework的重要结构之一的document/view,也具有处理消息的能力。因此,消息藉以攀爬的路线应该有横流的机会。消息如何流动我们暂且不管,是直线前进还是中途换跑道,我们暂时都不管,先把攀爬路线网建立起来再说。这个攀爬路线网就是所谓的消息映射表(Message Map);说它是一张地图,当然也没用错。将消息与表格中的元素比较,然后调用对应的处理程序,这种操作我们称之为消息映射。

      为了尽量降低 对正常类声明和定义 的影响,我们希望,最好能像RTTI和Dynamic Creation一样,用一个宏就完成这巨大蜘蛛网的构建。最好能像DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC宏那么方便。首先定义一个数据结构:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值