首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC讯息映射及路由

2012-06-23 
MFC消息映射及路由virtual BOOL OnWndMsg(UINT message,WPARAM wParam,LPARAM lParam,LRESULT* pResult )

MFC消息映射及路由

看到没,这个函数又提供了我们处理原生态消息的机会,如果你想要直接搞定windows消息,重写这个函数也是阔以的。

在这个函数中,分3种情况对windows消息进行了处理:

1.WM_COMMAND。调用虚函数OnCommand处理。如果处理了就直接返回。

2.WM_NOTIFY。调用虚函数OnNotify处理。如果处理了就直接返回。

3.WM_ACTIVATE。用函数_AfxHandleActivate.返回后去到第5类进行第二次处理。
4.WM_SETCURSOR。_AfxHandleSetCursor,处理了直接返回。

5.其它所有函数。首先在一个消息缓冲池中进行查找,如果能找到处理函数,就调用。找不到就根据消息映射表查找进行处理。


好了,大致的情况就是这样了,下面看看很难搞的WM_COMMAND消息。这个消息的路由还是比较复杂的。

OnCommand会调用OnCmdMsg,路由大部分是这个函数干的事情。

首先,调用当前活动窗口的OnCmdMsg,意思就是活动窗口你先处理吧。返回值表明了消息是不是被处理了。

2了,如果OnCmdMsg不处理,就给文档类处理。

3了,文档类也不要的话,就自己来了,也就是CCmdTarget::OnCmdMsg,这里框架可能会自己处理该消息。

4了,还没人要就给App::OnCmdMsg,这个函数也不要就给默认的处理函数。

好了,一个消息的处理就完成了。


有些地方可能会有问题,欢迎大家指正吧。




























热点排行