MFC如何实现对话框见的切换?

现在有两个Dialog,一个是创建工程时自己生成的Dialog1,另一个是在资源中自己添加的一个Dialog2。程序每次运行时运行的是Dialog1,现在要通过点击Dia... 现在有两个Dialog,一个是创建工程时自己生成的Dialog1,另一个是在资源中自己添加的一个Dialog2。程序每次运行时运行的是Dialog1,现在要通过点击Dialog1上的一个BUTTON来实现关闭Dialog1同时打开Dialog2 (类似于登陆跳转),也就是对话框间的跳转。我新手,求指教! 展开
 我来答
du瓶邪
推荐于2017-09-22 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2898万
展开全部
  1,新建对话框类ADlg,类BDlg,并且把属性设置为Child, border属性设置为None
  2,把ADlg类,BDlg类的生命周期设置为主对话框成员函数,或者静态,或者全局,反正不要弄成局部变量就行
  3,你可以在主对话框里面设置一个组合框 ID=IDC_Groupbox,为了的把它设置为新建对话框ADlg,BDlg的父窗口,新建对话框就在组合框上面了
  4,在主窗口启动或者其他位置添加以下代码建立子对话框:
  ADlg.Create(IDD_ADlg,GetDlgItem(IDC_Groupbox));
  ADlg.ShowWindow(SW_HIDE);
  BDlg.Create(IDD_BDlg,GetDlgItem(IDC_Groupbox));
  BDlg.ShowWindow(SW_HIDE);
  这样就建立上了,然后你直接用ShowWindow去控制两个对话框的显示和隐藏即可,比如在botton1里面做
  ADlg.ShowWindow(SW_SHOW);
  BDlg.ShowWindow(SW_HIDE);

  在botton2里面做
  ADlg.ShowWindow(SW_HIDE);
  BDlg.ShowWindow(SW_SHOW);

  这样就实现了啊 要在一个botton里面做 你在外面设置个标记,函数里面做判断也可以啊,这样A,B两个窗体就是显示在主窗口上的,而非domodle那种单独一个对话框出来。
yz4330181
2011-09-14 · TA获得超过105个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:125万
展开全部
在你的BUTTON响应函数中写下这样的代码
this->ShowWindow(FALSE);
Dialog2 dlg;
dlg.DoModal();

用模态窗口的模式是不能关闭父窗口的,如果你用非模态窗口的形式,应该是可以的,只是子窗口对象的指针你放在哪里需要好好考虑。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李工666
2013-03-19 · 超过11用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:31.1万
展开全部
隐藏会出现未知问题,建议不要使用!特别是多个页面、多次跳转时

建议使用:
CDialog::OnOk();
C**dlg dlg;
dlg.DoModal();
这样OnOk调用的EndDialog函数会设计一个flag,等此段响应函数执行完毕后关闭本对话框
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灌胶点胶机制造37
推荐于2017-10-06 · TA获得超过120个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:247万
展开全部
不能关闭父窗口,只能隐藏--在BUTTON响应函数添加
CXXDlg dlg;
ShowWindow(SW_HIDE);
dlg.DoModal();
ShowWindow(SW_SHOW);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yzxinye123
2011-09-14
知道答主
回答量:18
采纳率:0%
帮助的人:19.3万
展开全部
定义按钮的点击事件,关闭当前Dialog,并打开Dialog2.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式