[英]MFC, How to close Modal Dialogs from Main Window?
我們有一個對話框X
,可以通過不同的線程(也就是主線程)作為模態打開。 可以從不同的線程同時進行多個模態X
對話。
如果主窗口處理SC_CLOSE
消息,我們想要關閉所有X
(僅X
)模式對話框。
問題是; 在主窗口中,當它SC_CLOSE
消息時,我們如何關閉所有模態X
對話框? 只有X
! 因此, PostQuitMessage
沒有幫助,因為它關閉整個應用程序,我們不想關閉應用程序,如果打開其他模式對話框,如Y, Z ...
信息:當我們從主線程也從其他線程打開模態X
對話框時,主窗口可以處理SC_CLOSE
消息。 並且X
沒有子模態窗口。
我目前的解決方案是;
在打開它們期間,所有模態X
對話框都已在集合中(線程安全地)注冊。 如果主窗口變為SC_CLOSE
-message,則現在可以迭代所有對話框。 然后對每個對話框使用這兩行中的一行。
::PostMessage(pDlg->GetSafeHwnd(), WM_COMMAND, IDOK, 0); //end dialog with idok
::PostMessage(pDlg->GetSafeHwnd(), WM_CLOSE, 0, 0); //or, close dialog
我知道這不是最好的解決方案,但希望可以幫助別人。
不要嘗試迭代主窗口的所有子節點來查找對話框。 它無濟於事。 對話框的所有者,並不意味着它是對話框的父級。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.