visual c++手工添加消息处理函数
visual c++手工添加消息处理函数
消息处理函数是VC++最常用到的函数之一,实际上,消息处理函数是通过在消息地图中声明来实现的。
请看下边的例子。手工为对话框类MyProject添加消息DIY_NEWMESSAGE(自定义消息)的消息响应函数OnNewMessage。
(1)首先,建立一个基于对话框的应用程序MyProject。
(2)单击“View”/“ResourceSymbols”,弹出“ResourceSymbols”对话框。
(3)在“ResourceSymbols”对话框中单击“New”按钮,为类添加一个新标识“DIY_NEWMESSAGE”,如图1所示。
新标识
标识对应的值

图1 “New Symbol”对话框
(4)关闭“ResourceSymbols”对话框,在Workspace中找到类CMyProjectDlg,双击CMyProjectDlg节点下的任意一个成员函数标识,代码编辑器中显示MyProjectDlg.cpp文件内容。
(5)在代码编辑器中找到下段代码:
BEGIN_MESSAGE_MAP(CMyProjectDlg, CDialog)
……
END_MESSAGE_MAP()
这是消息地图的声明。读者需要在这个消息地图中添加消息响应说明。
BEGIN_MESSAGE_MAP(CMyProjectDlg, CDialog)
……
ON_MESSAGE(DIY_NEWMESSAGE,OnNewMessage)
END_MESSAGE_MAP()
这句代码告诉编译器,当有DIY_NEWMESSAGE消息发生时,执行OnNewMessage成员函数。
(6)在Workspace中选中类CMyProjectDlg的标识,单击鼠标右键,在弹出的快捷菜单中选择“Add Member Function”项,打开“Add Member Function”对话框。
(7)在“Add Member Function”对话框中的“Function Type”文本框中添入函数的返回值;在“Function Declaration”文本框中添入“OnNewMessage”,单击“OK”按钮,将此函数添加到项目中,如图2所示。
函数返回值
函数声明
静态函数或虚函数

图2 “Add Member Function”对话框
(8)这样,一个消息响应函数就做成了,当系统捕捉到“DIY_NEWMESSAGE”消息时,会自动执行OnNewMessage成员函数。
注意:这个消息响应函数只在CMyProjectDlg对话框内部有效。