1 菜单相应路由说明
菜单里面的选项按下时,会触发消息,但是这个消息是先被接收到又被谁先处理呢?
下面我们简单看看。
1)按向导创建MFC程序后,按下面任意添加菜单栏的选项。
2)依次对下面四个类进行添加编辑,创建对应的回调函数。
3)上面创建完4个回调函数后,那么按下按钮后,它会调用哪个回调函数先呢?
经过测试,它依次先调用视图->文档->框架->应用程序。但是并不能说明MFC菜单栏的消息路由是这个顺序的。实际上菜单栏的消息路由的消息是先被框架类接收,但是框架不处理,先交给视图处理,若视图没处理,则交给文档,同理框架,最后都没处理的话就是应用程序处理。如果你学过设计模式,这个思想就是责任连模式。
2 总结菜单栏的消息路由顺序和处理顺序
- 1)路由顺序:框架->视图->文档->应用程序。
- 2)处理顺序:视图->文档->框架->应用程序。
3 消息分类
消息分三种:
- 1)命令消息WM_COMMAND,就是我们的菜单栏上面按下选项触发的回调函数消息。
- 2)标准消息:即类—>属性->消息->Add。一般与事件触发的回调函数比较多,例如OnChar键盘事件,OnCreate创建键盘后的事件回调,左键按下等等。
- 3)通过消息:一般是控件触发的消息,然后去到对应回调函数处理。
- 4)注意:CWnd可以处理任何消息,CCmdTarget不接受标准消息。