不迎不送,来去自便,无茶无酒,谈笑随缘

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

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

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

posted on 2007-07-28 23:00  wude  阅读(139)  评论(0编辑  收藏  举报