MFC消息分类和处理方式
2013-04-10 11:54
134 查看
在MFC中消息有三种类型,分为标准消息,命令消息,通告消息。他们的区别如下:
一、标准消息:
1、除WM_COMMAND之外,所有以WM_开头的消息。
2、从CWnd派生的类,都可以接收到这类消息。
二、命令消息:
1、来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。
2、从CCmdTarget派生的类,都可以接收到这类消息。
三、通告消息:
1、由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。
2、从CCmdTarget派生的类,都可以接收到这类消息。
至于哪些类是从CWnd类派生出来的呢?我们可以把它的类名复制下来,在MSDN上搜索一下,就可以看到它所继承的父类,就能判断它是否从CWnd类派生。工具栏,控件等都是从CWnd类派生的类。
在一个单文档MFC程序中,CMainFrame类与View类是从CWnd类派生出来的,而App类和Doc类则不是从CWnd类派生出来的,但它们都派生自CCmdTarget类。而CWnd类也是从CCmdTarget类派生而来。
菜单属于框架窗口类,点击菜单下的按钮时,会先到View类中查找相关的消息处理函数,若找不到,就把消息传送给Doc类。若在Doc类中找不到相关的消息处理函数,Doc类会把消息返转给View类,由View类来作处理。此时View类会把消息传给CMainFrm类,若在CMainFrm类中还是找不到相关的消息处理函数,同样CMainFrm类会把消息返转给View类,由View类来作处理。最后,View类会把消息传给App类,让App类来处理该消息。
一、标准消息:
1、除WM_COMMAND之外,所有以WM_开头的消息。
2、从CWnd派生的类,都可以接收到这类消息。
二、命令消息:
1、来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。
2、从CCmdTarget派生的类,都可以接收到这类消息。
三、通告消息:
1、由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。
2、从CCmdTarget派生的类,都可以接收到这类消息。
至于哪些类是从CWnd类派生出来的呢?我们可以把它的类名复制下来,在MSDN上搜索一下,就可以看到它所继承的父类,就能判断它是否从CWnd类派生。工具栏,控件等都是从CWnd类派生的类。
在一个单文档MFC程序中,CMainFrame类与View类是从CWnd类派生出来的,而App类和Doc类则不是从CWnd类派生出来的,但它们都派生自CCmdTarget类。而CWnd类也是从CCmdTarget类派生而来。
菜单属于框架窗口类,点击菜单下的按钮时,会先到View类中查找相关的消息处理函数,若找不到,就把消息传送给Doc类。若在Doc类中找不到相关的消息处理函数,Doc类会把消息返转给View类,由View类来作处理。此时View类会把消息传给CMainFrm类,若在CMainFrm类中还是找不到相关的消息处理函数,同样CMainFrm类会把消息返转给View类,由View类来作处理。最后,View类会把消息传给App类,让App类来处理该消息。
相关文章推荐
- MFC消息分类和处理方式以及MFC程序的执行流程
- MFC消息分类和处理方式
- MFC消息分类及处理方式
- MFC中的消息处理----<深入解析MFC>读书笔记
- MFC的消息处理模式
- MFC应用程序中处理消息的顺序以及对话框关闭步骤
- SDK对消息的处理过程和MFC消息映射及MFC中类产的对象与窗口
- MFC之处理消息映射的步骤...
- IOS及时通讯中消息的处理方式
- MFC中的消息处理----读书笔记
- MFC的消息处理函数
- MFC中自定义消息方法及如何得到消息处理函数的返回值
- C++ 关于MFC多线程编程中的一些注意事项 及自定义消息的处理
- VS2013/MFC编程:(对话框:为控件添加消息处理函数)
- 【转】MFC应用程序中处理消息的顺序
- MFC程序消息处理的顺序
- 解读ATL/WTL/MFC消息映射的实现方式
- C# 使用重载消息处理函数的方式,实现没有标题栏的窗体的拖动。
- mfc消息处理顺序
- 微信公众号开发之4-消息类型的分类及处理消息的工具类封装