MFC,如何从主窗口关闭模态对话框?

优素福·卡拉戈斯(Yusuf R.Karagoz)

我们有一个对话框X,可以由不同的线程(也是主线程)以模式打开该对话框X可以同时从不同的线程进行多个模式对话框。

如果主窗口处理消息我们想关闭所有X(仅X)模式对话框SC_CLOSE

问题是; X当收到SC_CLOSE消息,如何从主窗口中关闭所有模式对话框只有X因此,PostQuitMessage这无济于事,因为它会关闭整个应用程序,因此,如果Y, Z ...打开了其他模式对话框,我们就不想关闭该应用程序

信息:SC_CLOSE当我们X从主线程以及其他线程打开了模态对话框时,主窗口可以处理消息并且X没有子模式窗口。

优素福·卡拉戈斯(Yusuf R.Karagoz)

我当前的解决方案是;

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

我知道这不是最好的解决方案,但希望能对某人有所帮助。

不要尝试遍历主窗口的所有子窗口来查找对话框。它没有帮助。对话框的所有者,并不意味着它是对话框的父级。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章