2011-09-22 100 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