MFC,VC,关闭对话框时出错,对话框关闭后又弹出一个新的,为什么?

点了确定,正常关闭,弹出messagebox;点了取消,就又会弹出一个新的同样的对话框。。。为什么?哪错了?求指点,多谢!附上一小段代码://2012年9月5日添菜单响应... 点了确定,正常关闭,弹出messagebox;点了取消,就又会弹出一个新的同样的对话框。。。为什么?哪错了?求指点,多谢!

附上一小段代码:

//2012年9月5日添 菜单响应
NEW_USER dlg;
dlg.DoModal();
CString str_time;
CTime mytime = CTime::GetCurrentTime();
str_time = mytime.Format("%Y-%m-%d");
CStringstr = "姓名:" + dlg.m_editName +
"\n年龄:" + dlg.m_editAge
+ "\n性别:" + dlg.m_editGender
+ "\n诊号:" + dlg.m_editClinicID
+ "\n建档时间:" + str_time
+ "\n";
if(dlg.DoModal() == IDOK)
MessageBox(str);
// if(dlg.DoModal() == IDCANCEL)
// return ;
按确定也是会反复弹出两次才结束

我还想顺带问一下,要怎么关闭这个对话框呢?
我用dlg.OnOk()或者CDialog.OnOk(),都提示我不可以用:cannot access protected member declared in class 'CDialog'
求教。。。。
展开
 我来答
yunfuyou
2012-09-06 · TA获得超过147个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:251万
展开全部
这是个模态对话框,你执行了两次对话框的打开,所以才弹出两次 ,分别在程序的第二行和第十二行
可以改成
NEW_USER dlg;
if(dlg.DoModal()==IDOK) {
CString str_time;
CTime mytime = CTime::GetCurrentTime();
str_time = mytime.Format("%Y-%m-%d");

CStringstr = "姓名:" + dlg.m_editName +
"\n年龄:" + dlg.m_editAge
+ "\n性别:" + dlg.m_editGender
+ "\n诊号:" + dlg.m_editClinicID
+ "\n建档时间:" + str_time
+ "\n";
MessageBox(str);
}
追问
那我要怎么判断按的是确定还是取消呢??
追答
if(dlg.DoModal()==IDOK) 这句啊,如果确定就等于IDOK,否则就是取消
百度网友3038d88
2012-09-06 · TA获得超过1097个赞
知道小有建树答主
回答量:1670
采纳率:0%
帮助的人:1168万
展开全部
if(dlg.DoModal() == IDOK)
****
else
****
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ucupracacia
2012-09-06 · TA获得超过194个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:167万
展开全部
NEW_USER dlg;
dlg.DoModal();
//你在这个地方显示了一次模态对话框。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
譲窝亲一下
2012-09-06 · 超过23用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:54.3万
展开全部
if(dlg.DoModal() == IDOK)
MessageBox(str);
// if(dlg.DoModal() == IDCANCEL)
// return ;

在if中的判断条件中 你写跳出了一个新窗口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式