gpt4 book ai didi

c++ - DoModal() 没有将 dlg 框作为模态显示

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:59:50 24 4
gpt4 key购买 nike

我有一个窗口,在 .rc 文件中设置了以下属性:

STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU

它有一个关联类(派生自 CDialog),当我实例化它时,然后调用该对象的 DoModal()它不是真正的模式 - 我可以单击“父”窗口。

CMyDlg dlg;
int result = dlg.DoModal();

“父”窗口是一个 dlg 框,但被视为主窗口。它的属性是:

STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "My Main App"
MENU IDR_MENU_MAIN

我使用 DoModal 从主窗口调用的其他 dlg 框我想保留为非模态。但是我想要另一个模态。

我对发生的事情有点困惑。有人可以解释如何让这个“ child ”dlg 框成为模态(同时允许其他“ child ”不是模态的吗?

附加信息:

此应用的 GUI 不是应用的主线程。它是一个命令行应用程序,它启动另一个线程并加载一个包含 GUI 的 DLL。我不确定这是否对问题有任何影响。

主 dlg 窗口 == A这个新的 dlg 框窗口我想表现得像模态 == B一个不同的 dlg 框 == C

在 A 中:调用 B.DoModal 不是模态的,但我希望它是在 A 中:调用 C.DoModal 不是模态的,我想保持这种状态

在 C 中,如果我调用 D.DoModal,它是模态的,我想保持这种状态(因此应用程序确实显示模态功能)

更可怕的信息

来自 A:调用标准文件打开或另存为 dlg 框会导致 NON MODAL dlg 框。

CFileDialog dlg(TRUE);
dlg.DoModal();

这也是不可取的。

这两个问题似乎对其中一个问题有一些很好的可能性,但它们没有解决如何确保被调用的标准文件打开/保存 dlgs 是模态的...

Convert a modeless dialog to modal at runtime How do I create Modal dialog in worker thread(Non-UI thread)?

最佳答案

我没有看到您正在为模态对话框指定父窗口。

也许这就是所欠缺的。

关于c++ - DoModal() 没有将 dlg 框作为模态显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4020664/

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