簡體   English   中英

MFC,如何關閉主窗口中的模態對話框?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM