gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:14:04 25 4
gpt4 key购买 nike

我们有一个对话框X,它可以被不同的线程(也是主线程)打开为模态。多个模态 X 对话框,同时来自不同线程是可能的。

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

问题是;在主窗口中,我们如何在收到 SC_CLOSE 消息时关闭所有模态 X 对话框?只有 X!所以,PostQuitMessage 没有帮助,因为它关闭了整个应用程序,我们不想关闭应用程序,如果其他模式对话框如 Y, Z ... 是打开。

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

最佳答案

我目前的解决方案是;

所有模态 X 对话框在打开期间都已注册到一个集合中(线程安全)。如果主窗口变为 SC_CLOSE 消息,则现在可以迭代所有对话框。然后对每个对话框使用这两行中的一行。

  ::PostMessage(pDlg->GetSafeHwnd(), WM_COMMAND, IDOK, 0); //end dialog with idok
::PostMessage(pDlg->GetSafeHwnd(), WM_CLOSE, 0, 0); //or, close dialog

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

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

关于c++ - MFC,如何从主窗口关闭模态对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41804675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com