MFC之菜单相应路由说明和消息分类13

1 菜单相应路由说明

菜单里面的选项按下时,会触发消息,但是这个消息是先被接收到又被谁先处理呢?
下面我们简单看看。
1)按向导创建MFC程序后,按下面任意添加菜单栏的选项。
MFC之菜单相应路由说明和消息分类13

2)依次对下面四个类进行添加编辑,创建对应的回调函数。
MFC之菜单相应路由说明和消息分类13

3)上面创建完4个回调函数后,那么按下按钮后,它会调用哪个回调函数先呢?
经过测试,它依次先调用视图->文档->框架->应用程序。但是并不能说明MFC菜单栏的消息路由是这个顺序的。实际上菜单栏的消息路由的消息是先被框架类接收,但是框架不处理,先交给视图处理,若视图没处理,则交给文档,同理框架,最后都没处理的话就是应用程序处理。如果你学过设计模式,这个思想就是责任连模式。

2 总结菜单栏的消息路由顺序和处理顺序

  • 1)路由顺序:框架->视图->文档->应用程序。
  • 2)处理顺序:视图->文档->框架->应用程序。

3 消息分类

消息分三种:

  • 1)命令消息WM_COMMAND,就是我们的菜单栏上面按下选项触发的回调函数消息。
  • 2)标准消息:即类—>属性->消息->Add。一般与事件触发的回调函数比较多,例如OnChar键盘事件,OnCreate创建键盘后的事件回调,左键按下等等。
  • 3)通过消息:一般是控件触发的消息,然后去到对应回调函数处理。
  • 4)注意:CWnd可以处理任何消息,CCmdTarget不接受标准消息。
上一篇:MFC之自动添加事件消息处理函数06


下一篇:MFC之消息映射03