Re: [問題] 自訂訊息的問題(WM_USER) 用MFC

看板C_and_CPP (C/C++)作者 (星空下的鮪魚)時間16年前 (2009/02/25 16:15), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《timohu ( )》之銘言: : 我要利用SendMessage()從自訂執行緒把訊息傳回主執行緒 : 所以在開頭定義 : #define WM_FrameToViewToDoc WM_USER -31 (忘記WM_USER -31是在哪邊爬到的文章) : 然後 //}}AFX_MSG_MAP : ON_MESSAGE(WM_FrameToViewToDoc, FrameToViewToDoc) : 在自訂執行緒中利用 : SendMessage(HWND_BROADCAST,WM_FrameToViewToDoc,0,0); : 引發主執行緒的FrameToViewToDoc() : 後來因為想要再自訂另一個訊息 : 所以又定義了#define WM_XXXXX WM_USER -30 : 可是用同樣的方法卻都無法正確的把訊息送出去(SendMessage沒有把訊息送出去) : 上網看其他文章,又把位置改成WM_USER + 100或是其他值 : 也都沒辦法送出訊息,(偏偏只有WM_USER - 31可以@@) : 請問是我哪邊寫錯了嗎? : 還是SendMessage函數裡面的參數要修改呢? 自定義message 1. 定義一下這個macro #define DECLARE_USER_MESSAGE(name) \ static const UINT name = ::RegisterWindowMessage(name##_MSG); 2. DECLARE_USER_MESSAGE(UWM_RESET_VIEW) 這樣就有一個UWM_RESET_VIEW的message了 這麼做的好處是,用#define一個常數的話,如果有import別的 .dll,可能會搶用同一個 message的值。 MFC裡的SendMessage應該是 SendMessage(UWM_RESET_VIEW); 這樣就行了吧 win32應該就是像你寫的一樣了 -- 給自己自信 不管面對什麼 總是能勇於創造 給自己謙虛 使自己能不斷的再學習 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.59.242 ※ 編輯: aecho 來自: 59.120.59.242 (02/25 16:16)
文章代碼(AID): #19fFuAEF (C_and_CPP)
文章代碼(AID): #19fFuAEF (C_and_CPP)