关于MDI中,各个类接收到相同消息的顺序

本文介绍了MDI程序中菜单消息的映射与传递机制。在MFC框架下,消息可以通过多个类进行处理,遵循特定的触发顺序:从CxxxView开始,依次经过CxxxDoc、CChildFrame、CxxxApp,最后到达CMainFrame。这种消息链机制确保了应用程序各部分都能接收到消息。

在写MDI程序的时候,总是按照建议把菜单消息映射函数放在CxxxView类中,实际CxxDoc,CxxApp,CMainFrame,CChildFrame这五个类中都可以放置该函数,如果有两个类以上对同一个消息编写了映射函数,那么触发顺序如下:

CxxxView——〉CxxxDoc——〉CChildFrame——〉CxxxApp——〉CMainFrame

之所以所有类都可以得到该消息,是因为mfc采用了一种被称为消息链的松耦合方式进行消息传递。消息首先发送到窗口处理过程,窗口处理过程里有如下的伪码
  if( !view ->DealMessage(...) )
   {
       if( !doc->DealMessage(...) )
      {
         if( !chidframe ->DealMessage(...) )
          {
                  ......
          }
        }
   }
通过这种方式mfc把消息传递到整个应用程序的各个部分。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值