2011-09-22 54 views
0

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

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

但对于模态对话框,你不使用,那么为什么不应该,当我创建一个对话框工作?

回答

2

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

从文档DialogBox

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

+0

我是否需要在创建窗口或对话框后立即将消息循环?我的意思是在新线程中。 – user942451

+0

@ user942451:不**后**,但最终是的 –

+0

好的,我会尝试,然后接受这个答案。 – user942451