c++ - MFC 一个父对话框,多个子对话框

标签 c++ mfc

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

现在,我可以在主对话框中嵌入第一个子对话框,但我想传递到下一个对话框(注意打开对话框的顺序是随机的),所以我需要隐藏第一个对话框并显示另一个.要知道当前显示哪个对话框并隐藏它,我尝试使用 CDialog 变量来存储当前打开的对话框,但我得到一个 CObject::operator =' : cannot访问类“CObject”中声明的私有(private)成员错误。

还有其他方法可以玩这个“隐藏和显示对话框”游戏吗?

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

最佳答案

所以我设法使用类 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 来显示正确的对话框。

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

关于c++ - MFC 一个父对话框,多个子对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162125/

相关文章:

c++ - 右值引用引用的内存

c++ - 多线程和 MFC

c++ - 如何解决 MFC 控件中的别名文本

c++ - 如何将对话框项的样式更改为测试模式中出现的样式?

c++ - C中If-Else和三元运算符之间的速度差异...?

c++ - 目前在 Ubuntu C/C++ 中如何将 IANA 时区名称转换为 UTC 偏移量

c++ - 按标记匹配字符串 - 概念检查

c++ - MFC 应用程序在 AfxCheckDialogTemplate 上崩溃

c++ - 使用字符串来描述函数参数

regex - MFC:如何构造一个好的正则表达式来验证 URL?