在新线程中创建一个对话框

Creating a dialog in new thread

本文关键字:一个 对话框 创建 线程 新线程      更新时间:2023-10-16

假设我使用CreateThread创建一个线程,并且我想在该线程中创建一个模态或非模态对话框。我是否需要使用一个单独的消息循环,就像我在这里,

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

但是对于模态对话框,你不使用,所以为什么它不能工作,当我创建一个对话框?

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

DialogBox的文档:

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