[問題] MFC的PostMessage與ON_Message問題

作者: eva527 (天海冰藍)   2015-12-14 10:17:44
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual studio 2013
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
目前正在學習MFC程式
想做一個單純的Windows訊息的收發程式測試
構想大概是這樣:
先定義WM_Test_User內容為(WM_USER+1234)
設計一個發送訊息的程式,只要點擊Button,就會執行PostMessage(WM_Test_User);
接著再設計另一個接收訊息的程式,ON_Message(WM_Test_User, OnMsg)
只要收到訊息,就會跳出一個視窗說已收到訊息。
問題是,當我按下Button的時候,結果沒有跳出對話視窗,
無法確定到底是沒有收到訊息,還是其他部分發生問題?
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
發送訊息之程式:專案名稱為Test_MFC_PostMessageForOnMessage
先在.h檔內定義 #define WM_Test_User (WM_USER+1234)
void CTest_MFC_PostMessageForOnMessageDlg::OnBnClickedButton1()
{
// 測試送出訊息
PostMessage(WM_Test_User,0,0);
}
接收訊息之程式:專案名稱Test_MFC_OnMessage
先在.h檔內定義 #define WM_Test_User (WM_USER+1234)
宣告 afx_msg LRESULT OnMsg(WPARAM wp, LPARAM lp);
BEGIN_MESSAGE_MAP(CTest_MFC_OnMessageDlg, CDialogEx)
...
ON_MESSAGE(WM_Test_User, OnMsg)
...
END_MESSAGE_MAP()
實作內容
LRESULT CTest_MFC_OnMessageDlg::OnMsg(WPARAM wp, LPARAM lp)
{
::AfxMessageBox(_T("Got it"));
return NULL;
}
 
補充說明(Supplement):
想知道自己是否哪裡做錯了?或者是還漏做了什麼
第一次發文,如有錯誤或者不適當的地方,還請指教m(_ _)m
作者: sosokill (vieux)   2015-12-14 16:33:00
有確實執行postmessage了嗎?
作者: jhchou (jhchou)   2015-12-14 16:40:00
看你的說明 你是要用一個程式發訊息 另一個程式接嗎?還是在同一個程式中 一個對話盒發 一個對話盒接?
作者: sosokill (vieux)   2015-12-14 16:53:00
喔 樓上點醒我了 那要把hwnd傳進去 要不是自己傳自己
作者: eva527 (天海冰藍)   2015-12-16 09:11:00
我是要用一個程式發訊息 另一個程式接訊息PostMessage一定要加hwnd嗎?我在網路上看過別人沒加的範例不過後來我也有試過加hwnd進去 可是還是不行
作者: sosokill (vieux)   2015-12-16 11:46:00
A傳給B A要有B的hwnd 或是A能直接指定傳給B如果你是兩個獨立運行的程式 你可能要先找到目標B才能傳
作者: overhead (overhead)   2015-12-17 22:50:00
要寫 ::PostMessage(目標視窗handle,WM_Test_User,0,0);如果是一個程式 送收消息的class不同的情況

Links booklink

Contact Us: admin [ a t ] ucptt.com