1.可經過SendMessage或PostMessage發送消息;函數
SendMessage是發送消息以後待消息響應執行完才返回;而PostMessage將消息發送出去以後就馬上返回。線程
2.兩種消息的原型:ci
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)原型
各參數含義:ast
hWnd:其窗口程序將接收消息的窗口的句柄。若是此參數爲HWND_BROADCAST,則消息將被髮送到系統中全部頂層窗口,包括無效或不可見的非自身擁有的窗口、被覆蓋的窗口和彈出式窗口,但消息不被髮送到子窗口。
Msg:指定被髮送的消息。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
返回值:返回值指定消息處理的結果,依賴於所發送的消息。程序
B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
各參數含義:
hWnd:其窗口程序接收消息的窗口的句柄。
可取有特定含義的兩個值:
(1)HWND_BROADCAST:消息被寄送到系統的全部頂層窗口,包括無效或不可見的非自身擁有的窗口、 被覆蓋的窗口和彈出式窗口。消息不被寄送到子窗口
(2)NULL:此函數的操做和調用參數dwThread設置爲當前線程的標識符PostThreadMessage函數同樣
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:若是函數調用成功,返回非零值:若是函數調用失敗,返回值是零。若想得到更多的錯誤信息,請調用GetLastError函數。文件
例如:(發送消息)
#define WM_TESTSENDMSG WM_USER+200//給消息一個ID
CString str="TEST";
CWnd *pWnd=CWnd::FindWindow(NULL,str);//獲得窗口句柄
if(pWnd)
{
pWnd->SendMessage(WM_TESTSENDMSG,1,0);//向窗口發送消息或者pWnd->PostMessage(WM_TESTSENDMSG,1,0)
}消息
3.消息響應
void Cxxxxx::OnReciveMessage(WPARAM wParam,LPARAM lParam)
{
//功能代碼
}錯誤
//*.h文件聲明
afx_msg void OnReciveMessage(WPARAM wParam,LPARAM lParam);參數
4.在消息接收端將消息ID和消息響應聯繫起來 BEGIN_MESSAGE_MAP(CXXXDlg, CDialog) //{{AFX_MSG_MAP(CXXXDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() //}}AFX_MSG_MAP ON_MESSAGE(WM_TESTSENDMSG,OnReciveMessage)//將消息ID和響應聯繫 END_MESSAGE_MAP()