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