消息映射--Message Mapping

来源:互联网 发布:avr单片机pdf 编辑:程序博客网 时间:2024/06/05 16:40

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

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

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

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

 

原创粉丝点击