社区
界面
帖子详情
如何关闭模态对话框
lqleiqiong
2006-12-13 11:35:00
CBaseDlg dlg;
dlg.DoModal();
上面的方法产生下面的CMyDlg对话框
CMyDlg ::OnButton1()
{
int ret = AfxMessageBox(_T("真的要关闭吗?",MB_YESNO);
if(ret == 1)
{
-----------我想点yes就关闭CMyDlg和CBaseDlg,怎么做?
}
}
...全文
3092
15
打赏
收藏
如何关闭模态对话框
CBaseDlg dlg; dlg.DoModal(); 上面的方法产生下面的CMyDlg对话框 CMyDlg ::OnButton1() { int ret = AfxMessageBox(_T("真的要关闭吗?",MB_YESNO); if(ret == 1) { -----------我想点yes就关闭CMyDlg和CBaseDlg,怎么做? } }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wsb_8224
2006-12-18
打赏
举报
回复
你打开这个帖子后
主 题: 如何关闭模态对话框
作 者: lqleiqiong () Blog
等 级:
信 誉 值: 100
所属社区: VC/MFC 界面
问题点数: 20
回复次数: 14
发表时间: 2006-12-13 11:35:01
在这个上面有
回复 | 收藏此页 | 专题 | 公告 | 管理 | 保存 | 关闭窗口
点击"管理"进去就可以给分了
lqleiqiong
2006-12-18
打赏
举报
回复
还有,那个分数怎么给你们呢
lqleiqiong
2006-12-18
打赏
举报
回复
结贴时直接这样写的吧,我结贴
lqleiqiong
2006-12-18
打赏
举报
回复
谢谢各位的解释,子对话框由于是模态的,所以关闭子对话框后,才能对子对话框进行操作,那么在子对话框中定义一个 全局的bool变量,传递给主对话框,让主对话框受到这个变量,就可以关闭了
lqleiqiong
2006-12-13
打赏
举报
回复
在vc下都不行,你试过没有,我搞了一个上午都没有出来,郁闷啊,帮帮忙,我是新手,没有积分,只能给这么点,你试下,建一个对话框的工程,在对话框上搞一个按钮,插入新对话框,并在新对话框上建一个按钮,CTestDlg::OnButton1()
{
CMyDlg dlg;
dlg.DoModal();
}
CMyDlg::OnButton1()
{
int ret = AfxMessageBox("Really?",MB_YESNO);
if(ret得到yes)
那么我要关闭CMyDlg,还要关闭CTestDlg;
else
return;
}
wsb_8224
2006-12-13
打赏
举报
回复
我的程序在vc下肯定是行的,只是你没有运用好!evc没有用过
lqleiqiong
2006-12-13
打赏
举报
回复
wsb_8224() 你的办法一点都不行,在vc下都不行,更不用说在evc下了,我是要用在evc下的
wsb_8224
2006-12-13
打赏
举报
回复
通过按钮也一样,把代码放在按钮响应消息中即可
yzcurry
2006-12-13
打赏
举报
回复
CDialog::onok();
wsb_8224
2006-12-13
打赏
举报
回复
void CYourDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
if(AfxMessageBox("确定退出吗?",MB_YESNOCANCEL)==IDYES)
{
CDialog::OnClose();
}
else
{
return ;
}
}
wsb_8224
2006-12-13
打赏
举报
回复
我的是在一个按钮函数中创建的局部变量,和你的一样,代码基本上是一样的.现在你这样,应该能够实现将两个对话框关闭了.
arronbnm
2006-12-13
打赏
举报
回复
想问一下 ,你的CBaseDlg dlg;是局部变量,还是成员变量,如果是局部变量,那你的对话框是在一个父对话框的函数中定义的,那么在这个函数中你的 代码肯定是这样的:
void CMyDlg::SomeFunction()
{
CBaseDlg dlg;
if(IDOK == dlg.DoModal()) //这时你的CBaseDlg(也就是子对话框已经关闭了)
{
SendMessage(WM_CLOSE,0,0); //关闭 主对话框CMyDlg
}
}
在CMyDlg ::OnButton1()函数中只要退出就行了
CMyDlg ::OnButton1()
{
int ret = AfxMessageBox(_T("真的要关闭吗?",MB_YESNO);
if(ret == 1)
{
OnOK(); //关闭子对话框,并使DoModal()返回 IDOK
}
}
wsb_8224
2006-12-13
打赏
举报
回复
关闭模态对话框应该用其成员函数EndDialog,这个是没有错误,通过这个函数在程序任何地方都可以关闭模式对话框,但是对话框不是有自带的"确定""取消"以及右上角的"X"按钮吗,"X"按钮响应的就是OnClose这个消息函数了.MB_YESNOCANCEL这个整型值为什么非要得到它具体对应的值呢,直接通过AfxMessageBox("确定退出吗?",MB_YESNOCANCEL)==IDYES)判断就能实现代码了吗
davyaxl
2006-12-13
打赏
举报
回复
首先你的判断条件好象有问题,YES的返回是6.关闭模态对话框应该用其成员函数EndDialog.
int ret=-1;
ret=AfxMessageBox("Really?",MB_YESNO);
if(ret == 6)
{
int result=0;
this->EndDialog(result);
((CDialog*)GetParent())->EndDialog(result);
}
wsb_8224
2006-12-13
打赏
举报
回复
void MyDlg::OnButton1()
{
// TODO: Add your control notification handler code here
if(AfxMessageBox("确定退出吗?",MB_YESNOCANCEL)==IDYES)
{
CDialog::EndDialog(TRUE);
}
else
{
return ;
}
//此时只能退出CMyDlg,还要退出CTestDlg的话,发送一个关闭的消息
//上午的代码是正确的,只是你没有写OnClose这个函数的代码而已
}
子
模态
对话框
关闭
后刷新父
模态
对话框
因系统需求,要在
关闭
子
模态
对话框
后刷新父
模态
对话框
,做的一个小测试。
vc
模态
和非
模态
对话框
关闭
过程
非
模态
对话框
相对于
模态
对话框
,他的创建和销毁过程和
模态
对话框
有一定的区别,非
模态
对话框
需要重载函数OnCanel,并且在这个函数中调用DestroyWindow。并且不能调用基类的OnCancel,因为基类的OnCancel调用了EndDialog这个函数,这个函数是针对
模态
对话框
的。 还有一个必须重载的函数就是PostNcDestroy,这也是一个虚函数,通常的非
模态
对话框
是用类的指针,通过new创建的,这就需要在PostNcDestroy函数中delete掉这个指针。
mfc中
模态
、非
模态
对话框
与主
对话框
之间的数据交换
点击运行弹出一个
对话框
,点击DIALOG1按钮弹出一个
模态
对话框
,在该
对话框
的编辑框输入文本点击确定该
对话框
消失且输入的文本被显示到主
对话框
MainDialog中,点击DAILOG2按钮弹出一个非
模态
对话框
,操作现象和
模态
对话框
一样。
VC中
模态
对话框
和非
模态
对话框
的编程
VC中
模态
对话框
和非
模态
对话框
的编程
详解VC++
模态
对话框
和非
模态
对话框
MFC中有两种类型的
对话框
:
模态
对话框
和非
模态
对话框
。
模态
对话框
是指当其显示时,程序会暂停执行,直到
关闭
这个
模态
对话框
后,才能继续执行程序中其他任务。非
模态
对话框
是指当其显示时,允许转而执行程序中其他任务,而不用
关闭
这个
对话框
。
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章