繁体   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