为反射消息定义消息处理程序
更新:2007 年 11 月
创建了新的 MFC 控件类后,可为其定义消息处理程序。反射消息处理程序允许控件类在父级收到消息之前处理自己的消息。可使用 MFC CWnd::SendMessage 函数将消息从控件发送到父窗口。
利用此功能,比如可创建重绘自身而不是依赖父窗口完成此操作(所有者描述的)的列表框。有关反射消息的更多信息,请参见处理反射消息。
若要创建具有相同功能的 ActiveX 控件,必须为 ActiveX 控件创建项目。
![]() |
---|
不能用“属性”窗口为 ActiveX 控件添加反射消息 (OCM_Message),如下所述。必须手动添加这些消息。 |
从“属性”窗口中为反射消息定义消息处理程序
向 MFC 项目添加控件,如列表控件 (List Control)、rebar 控件、工具栏 (ToolBar) 控件或树控件 (Tree Control)。
在“类视图”中,单击控件类的名称。
在“属性”窗口中,控件类名出现在“类名”列表中。
单击“消息”按钮显示可用于添加到控件的 Windows 消息。
在“属性”窗口中向下滚动消息列表,直到可以看到标题“已反映”。或者,单击“类别”按钮并折叠视图以看到“已反映”标题。
选择要为其定义处理程序的反射消息。反射消息用等号 (=) 标记。
在“属性”窗口中,单击右列中的单元格以将建议的处理程序名称显示为 <add>HandlerName。(例如,=WM_CTLCOLOR 消息处理程序建议 <add>CtlColor 名称。)
单击建议的名称以接受。处理程序被添加到项目中。
已添加的消息处理程序名称出现在反射消息窗口的右列中。
若要编辑或删除消息处理程序,请重复第 4 到第 7 步。单击包含要编辑或删除的处理程序名称的单元格并单击适当的任务。