MFC一个父对话框,多个子对话框

时间:2014-01-16 12:43:28

标签: c++ mfc

我想用一个主对话框构建一个MFC应用程序,所有其他对话框都是这个主对话框的子代(并嵌入其中)。

现在,我能够在主对话框中嵌入第一个子节点,但我想传递给下一个对话框(注意打开的对话框的顺序是随机的),所以我需要隐藏第一个对话框并显示另一个。要知道当前显示的对话框并将其隐藏,我尝试使用CDialog变量来存储当前打开的对话框,但我收到CObject::operator =' : cannot access private member declared in class 'CObject'错误。

还有另一种方法可以做到这个“隐藏和显示对话框”游戏吗?

编辑:我可以存储一些对话框的ID并用它来完成这项任务吗?

1 个答案:

答案 0 :(得分:0)

所以我设法使用类IDD来完成这项任务。

首先,我存储最后打开的对话框的IDD

m_dlgStartPage.Create(CStartPageDlg::IDD, this);
m_openedWin.nDialogIDD = m_dlgStartPage.IDD;
m_dlgStartPage.ShowWindow(SW_SHOW);

然后,当需要显示一个新对话框时,我向我的主对话框发送一条消息(nIDD是要显示的待处理对话框的IDD):

AfxGetApp()->m_pMainWnd->SendMessage(WM_COMMAND_CHANGE_WINDOW, nIDD, 0);

最后,在我的主对话框中,我解析了所有子对话框并检查m_openedWin.nDialogIDD是否与每个对话框的IDD匹配,因此我可以隐藏它。在此之后,我再次解析所有chid对话框并使用已发送消息中的nIDD来显示正确的对话框。

我真的不喜欢这种方法,因为所有解析和发送消息到主对话框的类,所以如果有人有更好的想法或方法,请发布它。