2012-01-30 82 views
0

美好的一天! 我有一個進展的MFC對話框。 對話框在使用PostMessageW(WM_CLOSE)達到100%後自動關閉。 問題是,在進行期間,我正在將對話框移到屏幕上,對話框沒有關閉,WM_CLOSE消息被忽略。有什麼建議麼?謝謝。MFC對話框關閉問題

+0

這是模型對話框嗎? – ChrisBD 2012-01-30 11:51:41

+0

是的,這是模態對話框。 – rapt0r 2012-01-30 11:53:11

+0

你的意思是,如果你長時間用鼠標繼續移動對話框並且進度結束,那麼只有鬆開鼠標後,對話框纔會關閉。 – 2012-01-30 13:39:34

回答

0

對於模式對話框,您不應該真的需要使用WM_CLOSE消息。

通常你會使用確定或取消按鈕事件關閉它,從功能代碼調用EndDialog方法或當你處理完成只是返回(假設其過程爲對話初始化爲立即運行)。您可以同時設置您的返回值,例如EndDialog(2);

無論哪種方式,一旦當前消息處理程序返回,對話框將關閉,因此在關閉時可能會有延遲,但應該不會太多。

+0

運行到,你不能調用的EndDialog從WM_KICKIDLE處理我現在總是用WM_CLOSE關閉模式對話框的陷阱後。 – Lothar 2013-01-10 23:11:31

0

進度條背後的活動是在單獨的線程中完成的嗎?它看起來就是這種情況,否則當你拖動對話框時,進度條會凍結,直到你釋放對話框而不是恢復。這意味着您可能需要查看線程間通信,消息是如何發佈到HWND對話框的。

它可能與對話框處於凍結狀態(無活動狀態)同時拖動它,這似乎是正常的Windows行爲。如果是這種情況,你可以使用signals/CEvent來告訴對話框關閉。