【问题标题】:Creating a dialog in new thread在新线程中创建对话框
【发布时间】:2011-09-22 04:35:06
【问题描述】:

假设如果我使用CreateThread 创建一个线程,并且我希望该线程中有一个模态或非模态对话框。我需要像这里一样使用单独的消息循环吗,

while(GetMessage(&msg, 0, 0, 0)) // Get any window messages
{
    TranslateMessage(&msg); // Translate the message 
    DispatchMessage(&msg); // Dispatch the message
}

但是对于模态对话框,你不使用它,那为什么我创建对话框时它不能工作?

【问题讨论】:

    标签: c++ multithreading winapi dialog


    【解决方案1】:

    当您使用模态对话框时,它会创建自己的消息队列,这就是它起作用的原因。如果你想使用无模式对话框,那么你必须自己创建一个消息队列。

    来自DialogBox 的文档:

    DialogBox 宏使用 CreateWindowEx 函数来创建对话框。 (snip) 并启动它自己的消息循环来检索和发送对话框的消息。

    【讨论】:

    • 创建窗口或对话框后是否需要立即放置消息循环?我的意思是在新线程中。
    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多