读书人

MFC讯息映射及路由

发布时间: 2012-06-23 14:52:43 作者: rapoo

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,这个函数也不要就给默认的处理函数。

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


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




























读书人网 >VC/MFC

热点推荐