dlg.DoModal()使对话框模态到应用程序而不是前一个对话框

时间:2014-08-18 11:27:01

标签: visual-c++ mfc dialog modal-dialog

if (IDOK == dlg.DoModal())
    {
        csFile = dlg.GetPathName();
        return (LPCTSTR)csFile;
    }
    return NULL;

我有一个桌面应用程序,在这里我有一个对话框。当我在此对话框中单击打开按钮时,应弹出另一个打开的对话框。显示此打开的对话框后,我可以再次转到上一个对话框并单击打开。因此显示了打开对话框的第二个实例。我可以多次这样做。打开的对话框是整个应用程序的模态,而不是以前的对话框。谁能帮我这个?根据设计,一旦显示打开的对话框,在关闭之前不应该有任何其他活动。

1 个答案:

答案 0 :(得分:2)

对话框的标准向导生成的构造函数包含一个可选的constructor-parameter,您可以在其中指定父窗口:

class CMyOpenDialog : public CDialog
{
// Construction
public:
    CMyOpenDialog(CWnd* pParent = NULL);   // standard constructor
...

当您从对话框中调用此第二个对话框时,请提供父对象,例如

CMyOpenDialogdlg(this);