我正在阅读其他人的代码,他们的代码正在运行。我对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 当_In_opt_ HWND hWnd of PostMessage设置为null
时这对我来说很困惑。似乎主线程创建的t线程实际上收到了msg?任何人都能解释一下吗? 顺便说一下,我是mfc的新手,这是我在这里的第一篇文章,如果我误解了什么,请告诉我该函数的行为类似于对PostThreadMessage的调用,其中dwThreadId参数设置为当前线程的标识符。
答案 0 :(得分:0)
您似乎正在调用CWnd :: PostMessage函数,而不是API PostMessage函数。因此,调用使用其HWND成员向myClass对话框发布消息,并且消息将在进行调用的同一线程中接收。