c++ - 不同线程中的postmessage和message loop

标签 c++ mfc 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时

The function behaves like a call to PostThreadMessage with the dwThreadId parameter set to the identifier of the current thread.

这让我很困惑。看来主线程创建的t线程真的收到了msg?谁能解释一下?

顺便说一句,我是 mfc 的新手,这是我在这里的第一篇文章,如果我有任何误解,请告诉我

最佳答案

您似乎在调用 CWnd::PostMessage 函数,而不是 API PostMessage 函数。因此,该调用使用其 HWND 成员向 myClass 对话框发布一条消息,该消息将在进行调用的同一线程中接收。

关于c++ - 不同线程中的postmessage和message loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746851/

相关文章:

javascript - 跨页面异步通信

c++ - 将 Char 值分配给 vector 元素。 C++

c++ - C++ 中的图像边缘检测

c++ - 如何在 MessageBox 上执行我的代码 Ok click

javascript - 父窗口到 iframe 消息传递不起作用

target - 无法在 'postMessage' : target/origin mismatch http vs https 上执行 'DOMWindow'

c++ - QML 模块未安装错误 : running Qt app on Embedded Linux

c++ - gcc 链接器描述文件强制符号位于特定地址

c++ - 帮助在 MFC 中使用 CWinThread

c++ - 捕获未知异常