(MFC自有的消息都是在WM_USER内的,所以自定义的消息要比WM_USER大)
2.在头文件中声明消息处理函数,可用类向导中消息->添加自定义消息,添加的消息名为WM_MyMessage,自动添加消息处理函数。则系统自动在头文件中添加消息处理函数的声明,.cpp文件中添加消息映射处理及消息处理函数的定义,只需添加定义的具体内容即可。
声明的消息处理函数:afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAMlParam);
函数返回值类型为LRESULT,参数类型为WPARAM 和 LPARAM。
VC6中的消息处理函数为 afx_msgvoid OnMyMessage( WPARAM , LPARAM );
消息映射处理:
BEGIN_MESSAGE_MAP(CDialog1, CDialogEx)
ON_MESSAGE(WM_MyMessage, &CDialog1::OnMymessage)
END_MESSAGE_MAP()
消息处理函数的定义:
afx_msg LRESULT CDialog1::OnMymessage(WPARAM wParam, LPARAMlParam)
{
return 0;
}
3. 发送自定义消息:
SendMessage(WM_MyMessage,0,0);
或者 PostMessage(WM_MyMessage,0,0);
如果要定义系统唯一的消息让多个应用程序去处理,不同之处如下1. 把上面2步骤中的宏 #defineWM_MyMessage (WM_USER+100) 使用 如下代替 static UINT WM_MyMessage =RegisterWindowMessage("myMessage"); |
2.上面4步骤中的代码用如下代替 BEGIN_MESSAGE_MAP(CTestDlg,CDialog) …… ON_REGISTERED_MESSAGE(WM_MyMessage,OnMyMessage) END_MESSAGE_MAP() |
3.测试消息时,如果要让多个应用程序都接收到这个消息,使用 ::SendMessage(HWND_BROADCAST,WM_MyMessage, 0, 0); |