(MFC自有的消息都是在WM_USER內的,所以自定義的消息要比WM_USER大)
2.在頭文件中聲明消息處理函數(shù),可用類向導中消息->添加自定義消息,添加的消息名為WM_MyMessage,自動添加消息處理函數(shù)。則系統(tǒng)自動在頭文件中添加消息處理函數(shù)的聲明,.cpp文件中添加消息映射處理及消息處理函數(shù)的定義,只需添加定義的具體內容即可。
聲明的消息處理函數(shù):afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAMlParam);
函數(shù)返回值類型為LRESULT,參數(shù)類型為WPARAM 和 LPARAM。
VC6中的消息處理函數(shù)為 afx_msgvoid OnMyMessage( WPARAM , LPARAM );
消息映射處理:
BEGIN_MESSAGE_MAP(CDialog1, CDialogEx)
ON_MESSAGE(WM_MyMessage, &CDialog1::OnMymessage)
END_MESSAGE_MAP()
消息處理函數(shù)的定義:
afx_msg LRESULT CDialog1::OnMymessage(WPARAM wParam, LPARAMlParam)
{
return 0;
}
3. 發(fā)送自定義消息:
SendMessage(WM_MyMessage,0,0);
或者 PostMessage(WM_MyMessage,0,0);
如果要定義系統(tǒng)唯一的消息讓多個應用程序去處理,不同之處如下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); |