无法在MFC中使用SW_SHOW在其类中显示对话框?

时间:2010-03-06 09:02:25

标签: mfc dialog

我正在尝试使用对话框创建一个类似于结构的向导...所以我替换了CDialog1App中的代码,如下所示

CDialog1Dlg* dlg = new CDialog1Dlg;
m_pMainWnd = dlg;
dlg->Create(IDD_DIALOG1);
dlg->ShowWindow(SW_SHOW);

以上工作正常...它正在显示对话框。但我添加了另一个对话框... 因此,在第一个对话框中,如果用户单击“下一步”,则必须隐藏第一个对话框并显示第二个对话框..

// CDialog1类

void CDialog1Dlg::OnBnClickedNext()
{
    // TODO: Add your control notification handler code here
    CDialog2* dialog2 = new CDialog2();
    dialog2->Create(IDD_DIALOG2);
    dialog2->ShowWindow(SW_SHOW);
    this->ShowWindow(SW_HIDE);
}

在上面的代码中我正在为Dialog2类创建一个对象并试图显示.... 现在问题是,当我点击下一步它隐藏两个窗口..我能做什么..我尝试了几种类型,但它仍然没有工作..请不要建议我使用PropertySheet ..它将使用它,我知道......但出于某种原因我想使用Dialog Box

1 个答案:

答案 0 :(得分:2)

您正在使用默认父窗口(NULL)创建dialog2:

dialog2->Create(IDD_DIALOG2);

但是你的默认父母似乎是对话框。而且由于你隐藏了dialog1,它是dialog2的父级,所以dialog2也是隐藏的。

找到主应用程序对话框的窗口(CWnd)(如果除了向导之外还有一个可见),或者使用桌面窗口作为父窗口。

例如:

dialog2->Create(IDD_DIALOG2, GetDesktopWindow());