1. 程式人生 > >程序間通訊簡單實現之SendMessage/PostMessage

程序間通訊簡單實現之SendMessage/PostMessage

接收訊息方:

#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  函式名() 是不對的