dlg.DoModal() 使对话框成为应用程序的模式,而不是前一个对话框
Posted
技术标签:
【中文标题】dlg.DoModal() 使对话框成为应用程序的模式,而不是前一个对话框【英文标题】:dlg.DoModal() is making the dialog box modal to the application and not to the previous dialogue box 【发布时间】:2014-08-18 11:27:01 【问题描述】:if (IDOK == dlg.DoModal())
csFile = dlg.GetPathName();
return (LPCTSTR)csFile;
return NULL;
我有一个桌面应用程序,其中有一个对话框。当我单击此对话框中的打开按钮时,应弹出另一个打开的对话框。显示此打开的对话框后,我可以再次转到上一个对话框并单击打开。因此显示打开对话框的第二个实例。我可以多次这样做。打开的对话框对整个应用程序是模态的,而不是对前一个对话框。谁能帮我这个?根据设计,一旦显示打开的对话框,在关闭之前,其他任何东西都不应该处于活动状态。
【问题讨论】:
【参考方案1】:对话框的标准向导生成构造函数包含一个可选的构造函数参数,您可以在其中指定父窗口:
class CMyOpenDialog : public CDialog
// Construction
public:
CMyOpenDialog(CWnd* pParent = NULL); // standard constructor
...
当您从对话框中调用第二个对话框时,请提供父级,例如
CMyOpenDialogdlg(this);
【讨论】:
以上是关于dlg.DoModal() 使对话框成为应用程序的模式,而不是前一个对话框的主要内容,如果未能解决你的问题,请参考以下文章