首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MFC一个父对话框,多个子对话框

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

Stack Overflow用户
提问于 2014-01-16 12:43:28
回答 1查看 2.7K关注 0票数 1

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-17 10:30:41

因此,我成功地使用了类IDDs来完成这个任务。

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

代码语言:javascript
运行
复制
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来显示正确的对话框。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21162125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档