Visual C++中MFC消息的分类
2012-11-12 11:47
956 查看
标准(窗口)消息:窗口消息一般与窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口,或从窗口发到系统。发送函数SendMessage()或者PostMessage()。除WM_COMMAND之外,所有的以WM_开头的消息。从CWnd派生的类,都可以接受到这类消息。注意:标准消息并不需要我们指定处理函数名称,是默认的对应关系。
宏名称 对应消息 消息处理函数
ON_WM_CHAR WM_CHAR OnChar
ON_WM_CLOSE WM_CLOSE OnClose
ON_WM_CREATE WM_CREATE OnCreate
ON_WM_DESTROY WM_DESTROY OnDestroy
ON_WM_LBUTTONDO WNWM_LBUTTONDOWN OnLButtonDown
ON_WM_LBUTTONUP WM_LBUTTONUP OnLButtonUp
ON_WM_MOUSEMOVE WM_MOUSEMOVE OnMouseMove
ON_WM_PAINTWM_PAINT OnPaint
命令消息:命令消息通常与处理用户请求有关,当用户单击一个菜单或工具栏时,命令消息就产生了。并发送到能处理该消息的类或函数(如装载文本,保存选项等)这类消息都以WM_COMMAND呈现。在MFC中,通过菜单标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息,其wParam 记录着该消息来自哪一个菜单项目。
ON_COMMAND(IDM_ABOUT, OnAbout)
ON_COMMAND(IDM_FILENEW, OnFileNew)
ON_COMMAND(IDM_FILEOPEN, OnFileOpen)
ON_COMMAND(IDM_FILESAVE, OnFileSave)
控件消息:由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口通(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。从CCmdTarget派生的类都可以接收到这类消息。
控件宏 消息处理函数
Button ON_BN_CLICKED(<id>,<memberFxn>) memberFxn
ComboBox ON_CBN_DBLCLK(<id>,<memberFxn>) memberFxn
Edit ON_EN_SETFOCUS(<id>,<memberFxn>) memberFxn
ListBox ON_LBN_DBLCLK(<id>,<memberFxn>) memberFxn
CWnd是CCmdTarget的派生类,在MFC的单文档程序中的CMenuApp和CMenuDoc都是属于CCmdTarget的派生类而不包含CWnd类。
MFC命令消息的路由:AfxWndProc(替换了窗口过程函数)->AfxCallWndProc->WindowProc->OnWnddMsg->(如果是命令消息则调用Oncommand;如果是通告消息则调用OnNotify)->OnCmdMsg
标准消息和非标准消息的区分:标准消息:带有控制后 后续操作;非标准消息:只是简单提示。
你可以在程序的许多类别之中设计「消息映像表格」(每一个类别只能拥有一个消息映像表格,但也可以没有),接收并处理消息。只要是 CWnd 衍生类别,就可以拦下任何 Windows 消息。与窗口无关的MFC 类别(例如 CDocument 和 CWinApp)如果也想处理消息,必须衍生自 CCmdTarget,并且只可能收到 WM_COMMAND 命令消息。
宏名称 对应消息 消息处理函数
ON_WM_CHAR WM_CHAR OnChar
ON_WM_CLOSE WM_CLOSE OnClose
ON_WM_CREATE WM_CREATE OnCreate
ON_WM_DESTROY WM_DESTROY OnDestroy
ON_WM_LBUTTONDO WNWM_LBUTTONDOWN OnLButtonDown
ON_WM_LBUTTONUP WM_LBUTTONUP OnLButtonUp
ON_WM_MOUSEMOVE WM_MOUSEMOVE OnMouseMove
ON_WM_PAINTWM_PAINT OnPaint
命令消息:命令消息通常与处理用户请求有关,当用户单击一个菜单或工具栏时,命令消息就产生了。并发送到能处理该消息的类或函数(如装载文本,保存选项等)这类消息都以WM_COMMAND呈现。在MFC中,通过菜单标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息,其wParam 记录着该消息来自哪一个菜单项目。
ON_COMMAND(IDM_ABOUT, OnAbout)
ON_COMMAND(IDM_FILENEW, OnFileNew)
ON_COMMAND(IDM_FILEOPEN, OnFileOpen)
ON_COMMAND(IDM_FILESAVE, OnFileSave)
控件消息:由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口通(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。从CCmdTarget派生的类都可以接收到这类消息。
控件宏 消息处理函数
Button ON_BN_CLICKED(<id>,<memberFxn>) memberFxn
ComboBox ON_CBN_DBLCLK(<id>,<memberFxn>) memberFxn
Edit ON_EN_SETFOCUS(<id>,<memberFxn>) memberFxn
ListBox ON_LBN_DBLCLK(<id>,<memberFxn>) memberFxn
CWnd是CCmdTarget的派生类,在MFC的单文档程序中的CMenuApp和CMenuDoc都是属于CCmdTarget的派生类而不包含CWnd类。
MFC命令消息的路由:AfxWndProc(替换了窗口过程函数)->AfxCallWndProc->WindowProc->OnWnddMsg->(如果是命令消息则调用Oncommand;如果是通告消息则调用OnNotify)->OnCmdMsg
标准消息和非标准消息的区分:标准消息:带有控制后 后续操作;非标准消息:只是简单提示。
你可以在程序的许多类别之中设计「消息映像表格」(每一个类别只能拥有一个消息映像表格,但也可以没有),接收并处理消息。只要是 CWnd 衍生类别,就可以拦下任何 Windows 消息。与窗口无关的MFC 类别(例如 CDocument 和 CWinApp)如果也想处理消息,必须衍生自 CCmdTarget,并且只可能收到 WM_COMMAND 命令消息。
您可能感兴趣的文章:
相关文章推荐
- Visual C++中MFC消息的分类
- Visual C++中MFC消息的分类
- Visual C++中MFC消息的分类
- MFC复习和学习 第二章 MFC消息映射 消息宏实现 消息分类
- MFC中消息的分类
- MFC消息分类和处理方式
- MFC 消息分类
- 第四章,简单绘图之MFC中消息分类
- MFC消息分类说明
- MFC消息的分类
- MFC学习日记八:Mfc设置菜单项及消息分类(总结)
- Visual C++ MFC 简明教程4:消息映射
- MFC 消息分类 (II)
- MFC消息的分类
- MFC消息分类和处理方式以及MFC程序的执行流程
- MFC消息分类总结
- mfc消息分类
- MFC消息分类及处理方式
- MFC学习笔记之四————菜单编程与windows消息分类
- MFC消息分类 (理论)