2013-08-22 161 views
0

我有一個對話框,用戶可以輸入信息,然後按下Go按鈕。當他們按下這個按鈕時,我禁用表單元素(按鈕等)並使用AfxBeginThread(...)創建工作線程。一旦工作線程完成,我希望它向UI線程發送消息以重新啓用表單。我正在使用::PostMessage(...)發送消息,但我找不到如何攔截這些消息。接收MFC對話框的PostMessage消息

我在網上搜索(Link #1,Link #2,Link #3)但我找不到一個可以理解的代碼實現我自己的消息監聽器的例子。在頭文件中,我可以看到一些瘋狂的定義語句(從DECLARE_MESSAGE_MAP()開始),看起來它可能與它有關,但我無法弄清楚。

任何幫助,非常感謝。謝謝。

+1

確保您使用的消息從['WM_APP'](http://msdn.microsoft.com/en-us/library /windows/desktop/ms644930(v=vs.85).aspx)範圍。 –

回答

3

消息映射表是一個表。對於您感興趣的每條消息,它都包含消息和指向消息處理函數的函數指針。要將自定義消息添加到地圖,請將ON_MESSAGE條目添加到表格中。從輔助線程這樣做的一個教程例子是在這裏:

http://vcfaq.mvps.org/mfc/12.htm

+0

我發現http://msdn.microsoft.com/en-us/library/k35k2bfs.aspx和您鏈接的文章有一個相信的錯誤。它使用'UINT'和'LONG',它應該使用'WPARAM'和'LPARAM'。我鏈接到的MSDN文章工作。感謝您的幫助。 – Luke