我正在閱讀其他人的代碼,他們的代碼正在工作。我只是覺得PostMessage的有點混淆視聽,他們用postmessage和消息循環在不同的線程
#define MESSAGE XXX //some number
BEGIN_MESSAGE_MAP(myClass, CDialog)
//...
ON_THREAD_MESSAGE(...)
END_MESSAGE_MAP()
... myClass::funcA(...)
{
static HANDLE t = createThread(...., funcB,....)
.....
postmessage(MESSAGE)
}
... myClass::funcB(...)
{
....
while(...)
{
TranslateMessage(&msg);
dispatchMessage(&msg);
}
}
代碼看起來這樣的,但有一點修改
根據MSDN 時PostMessage的的_In_opt_ HWND hWnd爲設置爲null
消息循環該函數的行爲與對PostThreadMessage的調用類似,dwThreadId參數設置爲當前線程的標識符。
這讓我感到困惑。看來主線程創建的t線程實際上接收到了msg?任何人都可以解釋嗎?
順便說一句,我是新來的MFC,這是我的第一篇文章在這裏,如果我誤解了什麼,讓我知道
您是否發佈了createThread和postmessage的錯誤大小寫?這些不是MFC或API函數,如果它們在顯示時大寫。 –
@ ScottMcP-MVP哦,是的,我做了一些錯字。他們應該是PostMessage和CreateThread – HLi