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(); 展开
IDDdialog *dlg = new IDDdialog();
dlg->Create(IDD_DIALOG,NULL);
dlg->ShowWindow(SW_SHOW);
this->ShowWindow(SW_HIDE);
或 dlg->DestroyWindow(); 展开
2个回答
展开全部
两种方法
1)起两个进程
2)用你的老方法 ,但是你在dlg->DestroyWindow()的时候只是将你的新对话框destroy了,并没有将旧对话框destroy掉,所以应该响应新对话框的WM_DESTROY同时应该向旧对话框也要发送WM_DESTROY消息 这样进程就退出了.
1)起两个进程
2)用你的老方法 ,但是你在dlg->DestroyWindow()的时候只是将你的新对话框destroy了,并没有将旧对话框destroy掉,所以应该响应新对话框的WM_DESTROY同时应该向旧对话框也要发送WM_DESTROY消息 这样进程就退出了.
追问
能详细说明一下吗,应该响应,代码是怎样的,谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我说说我的理解,你自己斟酌着看。
首先,你调Create说明你调的是非模态对话框,如果是非模态对话框就需要:
1.重写CDialog::OnOk和CDialog::OnCancel在函数中调用DestroyWindow()
2.重写CWnd::PostNcDestroy函数delete this;
这样当你需要结束此对话框的时候直接调CDialog::OnOk或者CDialog::OnCancel都行
我不知道你原先的对话框是什么模式的,如果不是CDialog::DoModal(模式对话框的调用方式)的话一样应该这样处理的。
首先,你调Create说明你调的是非模态对话框,如果是非模态对话框就需要:
1.重写CDialog::OnOk和CDialog::OnCancel在函数中调用DestroyWindow()
2.重写CWnd::PostNcDestroy函数delete this;
这样当你需要结束此对话框的时候直接调CDialog::OnOk或者CDialog::OnCancel都行
我不知道你原先的对话框是什么模式的,如果不是CDialog::DoModal(模式对话框的调用方式)的话一样应该这样处理的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询