Windows 消息分类

■ 标准消息
除WM_COMMAND之外,所有以WM_开头的消息都是标准消息。从CWnd
派生的类,都可以接收到这类消息。
■ 命令消息
来自菜单、加速键或工具栏按钮的消息。这类消息都以
WM_COMMAND的形式呈现。在 MFC 中,通过菜单项的标识(ID)来区分
不同的命令消息; 在 SDK 中, 通过消息的wParam 参数识别。从
CCmdTarget派生的类,都可以接收到这类消息。
■ 通告消息
由控件产生的消息,例如按钮的单击、列表框的选择等都会产生
这类消息,目的是为了向其父窗口(通常是对话框)通知事件的发
生。这类消息也是以WM_COMMAND形式呈现的。从CCmdTarget派生的
类,都可以接收到这类消息。
通过MSDN提供的MFC类层次结构图,可以发现CWnd类实际上派生于
CCmdTarget类。也就是说,凡是从 CWnd 派生的类既可以接收标准消
息,也可以接收命令消息和通告消息。而对于那些从CCmdTarget派生
的类,则只能接收命令消息和通告消息,不能接收标准消息。

因为在本例中的文档类(CMenuDoc)和应用程序类(CWinApp)都
派生于CCmdTarget类,所以,它们可以接收菜单命令消息。但是因为
它们不是从CWnd类派生的,所以不能接收标准消息。

     控件的通知消息

       在将静态文本框的使用之前,先大概讲讲控件的通知消息。

       当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单击了,此时控件会向父窗口发送BN_CLICKED消息,实际上也就是给父窗口发送WM_COMMAND消息,在wParam参数中包含有通知消息码(鼠标单击时的通知消息码就是BN_CLICKED)和控件ID,lParam参数中包含了控件的句柄。在MFC消息映射机制概述中,鸡啄米讲过,消息就是由三个部分组成:消息值、wParam参数和lParam参数。

       为控件通知消息添加消息映射和消息处理函数的方法,之前不止一遍讲过了。现在再来具体说明下,控件的消息映射宏的格式大致是:

       ON_通知消息码(nID, memberFun)

       nID参数是控件的ID,memberFun参数是消息处理函数名。例如,ON_BN_CLICKED(IDC_BUTTON1, &CDlg::OnBnClickedButton1)。此消息映射宏应添加到BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间。

       消息处理函数声明的语法形式为:

       afx_msg void memberFun();

你可能感兴趣的:(MFC,mfc,c++)