MFC消息映射及路由
在这个函数中,分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,这个函数也不要就给默认的处理函数。
好了,一个消息的处理就完成了。
有些地方可能会有问题,欢迎大家指正吧。