mfc中button按钮打开新对话框,关闭原对话框,怎么办?

我用过this->ShowWindow(SW_HIDE);可是它只是把对话框隐藏,后台在运行,并没有关闭,下次我想打开原对话框,就不行了,每次都要到任务管理器中结束此进程... 我用过this->ShowWindow(SW_HIDE);可是它只是把对话框隐藏,后台在运行,并没有关闭,下次我想打开原对话框,就不行了,每次都要到任务管理器中结束此进程,用OnOK() 或OnClose()的话,两个对话框都只是一闪而过,全关闭了,我想问要关闭原对话框,而新对话框能正常运行,应该怎么办,谢谢,希望详解......
IDDdialog *dlg = new IDDdialog();
dlg->Create(IDD_DIALOG,NULL);
dlg->ShowWindow(SW_SHOW);
this->ShowWindow(SW_HIDE);
或 dlg->DestroyWindow();
展开
 我来答
pgyepssq
2013-08-24
知道答主
回答量:18
采纳率:0%
帮助的人:17.1万
展开全部
两种方法
1)起两个进程
2)用你的老方法 ,但是你在dlg->DestroyWindow()的时候只是将你的新对话框destroy了,并没有将旧对话框destroy掉,所以应该响应新对话框的WM_DESTROY同时应该向旧对话框也要发送WM_DESTROY消息 这样进程就退出了.
追问
能详细说明一下吗,应该响应,代码是怎样的,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljt20061908
2013-08-24 · TA获得超过1033个赞
知道小有建树答主
回答量:527
采纳率:87%
帮助的人:202万
展开全部
我说说我的理解,你自己斟酌着看。

首先,你调Create说明你调的是非模态对话框,如果是非模态对话框就需要:
1.重写CDialog::OnOk和CDialog::OnCancel在函数中调用DestroyWindow()
2.重写CWnd::PostNcDestroy函数delete this;
这样当你需要结束此对话框的时候直接调CDialog::OnOk或者CDialog::OnCancel都行

我不知道你原先的对话框是什么模式的,如果不是CDialog::DoModal(模式对话框的调用方式)的话一样应该这样处理的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式