无模式对话框中的 MFC C++ 显示模态对话框

Posted

技术标签:

【中文标题】无模式对话框中的 MFC C++ 显示模态对话框【英文标题】:MFC C++ in a Modeless Dialog Show a Modal one 【发布时间】:2013-07-26 17:55:40 【问题描述】:

我有一个无模式对话框。当我尝试从那里执行 .DoModal() 时,它会显示对话框,但它仍然允许您与无模式对话框进行交互。

这就是我创建无模式对话框的方式: MyMainEditorWindow = new CMyMain(this); MyMainEditorWindow->Create(CMyMain::IDD,GetDesktopWindow()); MyMainEditorWindow->ShowWindow(SW_SHOW);

要做一个模态的,从那个非模态窗口,我做

CMyDlg 我的Dlg; int 对话框 = myDlg.DoModal();

有什么方法可以做我想做的事吗?在无模式窗口中,来自它的对话框使其窗口等待直到它被决定。

【问题讨论】:

编辑不会改变答案。 modal 对话框需要有 modeless 对话框作为它的父级。 【参考方案1】:

您需要在模态对话框的构造函数中设置父窗口。 CDialog 构造函数的文档说,如果将其设置为NULL,它将使用主应用程序窗口作为父窗口,如果未指定,则默认为NULL

【讨论】:

+1 我总是尝试设置父级(几乎总是this),而不是使用默认的NULL

以上是关于无模式对话框中的 MFC C++ 显示模态对话框的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MFC 中的模态对话框实际上是内部无模态的?

如何使用 MFC 从控制台正确弹出无模式对话框

一个 MFC 应用程序中的两个对话框

主窗口作为无模式对话框的 MFC 应用程序

MFC模态与非模态对话框

如何创建一个模态的对话框