程序間通訊簡單實現之SendMessage/PostMessage
阿新 • • 發佈:2019-01-28
接收訊息方:
#define WM_MYMESSAGE WM_USER + 100 //不用括號
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
BEGIN_MESSAGE_MAP(CMyWnd2, CWnd)
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
END_MESSAGE_MAP()
LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
// Handle message here.
return 0;
}
傳送訊息方:
int main() { HWND hwnd = FindWindow(NULL,"Name"); PostMessage(hwnd,WM_USER +100,NULL,NULL); //SendMessage return 0; }
備註:
1、afx_msg 其實沒有任何作用,去掉編譯也是可以通過的,加上的好處就是讓程式碼更具有可讀性(別人就知道了這個函式是響應訊息的)
2、PostMessage與SendMessage的區別是:
PostMessage是在本程序的時間片內,傳送訊息並直接執行遠端程序的響應函
SendMessage是將訊息傳送給遠端程序,待輪到遠端程序的時間片,遠端程序自己執行取訊息,執行訊息響應函式
3、使用者自定義訊息必須宣告為上述形式,宣告成 afx_msg void 函式名() 是不對的