在Windows中,消息分为以下三类:
1、标准消息
除WM_COMMAND之外,所有以WM_开头的消息都是标准消息。从CWnd派生的类都可以接收到这类消息。
2、命令消息
来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMAND形式呈现在MFC中,通过菜单项的标识(ID)来区分不同的命令消息。在SDK中,通过消息的wParam参数识别。从CCmdTarget派生的类都可以接收到这类消息。
3、通告消息
由控件产生的消息,例如按钮的单击、列表框的选择等都会产生这类消息。目的是为了向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND的形式呈现。从CCmdTarget派生的类都可以接收到这类消息。
通过MSDN提供的MFC类层次结构图,可以发现CWnd类实际上派生与CCmdTarget类。CDoc类和CApp类派生自CCmdTarget类,只能接受菜单命令消息。
菜单命令消息首先由视图类处理,否则由文档类处理,否则由框架类处理,否则由应用程序类处理。