[問題] MFC的PostMessage與ON_Message問題

看板C_and_CPP (C/C++)作者 (天海冰藍)時間10年前 (2015/12/14 10:17), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串1/1
開發平台(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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.151.75 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450059466.A.28E.html

12/14 16:33, , 1F
有確實執行postmessage了嗎?
12/14 16:33, 1F

12/14 16:40, , 2F
看你的說明 你是要用一個程式發訊息 另一個程式接嗎?
12/14 16:40, 2F

12/14 16:41, , 3F
還是在同一個程式中 一個對話盒發 一個對話盒接?
12/14 16:41, 3F

12/14 16:53, , 4F
喔 樓上點醒我了 那要把hwnd傳進去 要不是自己傳自己
12/14 16:53, 4F

12/16 09:11, , 5F
我是要用一個程式發訊息 另一個程式接訊息
12/16 09:11, 5F

12/16 09:12, , 6F
PostMessage一定要加hwnd嗎?我在網路上看過別人沒加的範例
12/16 09:12, 6F

12/16 09:13, , 7F
不過後來我也有試過加hwnd進去 可是還是不行
12/16 09:13, 7F

12/16 11:46, , 8F
A傳給B A要有B的hwnd 或是A能直接指定傳給B
12/16 11:46, 8F

12/16 11:47, , 9F
如果你是兩個獨立運行的程式 你可能要先找到目標B才能傳
12/16 11:47, 9F

12/17 22:50, , 10F
要寫 ::PostMessage(目標視窗handle,WM_Test_User,0,0);
12/17 22:50, 10F

12/17 22:51, , 11F
如果是一個程式 送收消息的class不同的情況
12/17 22:51, 11F
文章代碼(AID): #1MRYRAAE (C_and_CPP)
文章代碼(AID): #1MRYRAAE (C_and_CPP)