mfc 模态对话框的问题

青莲隐身 2011-05-30 11:39:51
创建了一个基于对话框的MFC程序,然后又插入了一个对话框(注册的类为CAddDVR),该对话框上有一个ip控件(m_ip),和两个编辑框控件(m_name和m_password,用户名和密码),还有一个确定按钮和一个取消按钮,代码如下:
CAddDVR dlg;
CString ip,name,password;
if(dlg.DoModal()==IDOK)
{
BYTE b1,b2,b3,b4;
dlg.m_ip.GetAddress(b1,b2,b3,b4);
ip.Format("%d.%d.%d.%d",b1,b2,b3,b4);
dlg.m_name.GetWindowText(name);
dlg.m_password.GetWindowText(password);
}

这样编译没问题,可以运行,但是我输入ip地址,用户名和密码后,单击确定程序立马异常终止,检查n遍了,真快崩溃了,特来请教各位大牛啊
...全文
84 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
青莲隐身 2011-05-30
  • 打赏
  • 举报
回复
不解 自己再顶一下
青莲隐身 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hnzlk 的回复:]
引用 3 楼 zhaoyunfan 的回复:

但是为什么这样不行啊,没理由啊

你看一下GetWindowText,
[/Quote]
????
青莲隐身 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ryueiketu 的回复:]
你点了OK(IDOK)是,对话框就销毁了吧。
[/Quote]
对话框是销毁了,但是销毁时他的返回值是IDOK和DoModal()的返回值一致,if语句成立,会执行下面的语句的,或许有人会说对话框已经销毁了这些控件的就不存在了,但是我很多教科书上的例子都是这样的做的,都没问题啊
hnzlk 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhaoyunfan 的回复:]

但是为什么这样不行啊,没理由啊
[/Quote]
你看一下GetWindowText,
ryueiketu 2011-05-30
  • 打赏
  • 举报
回复
你点了OK(IDOK)是,对话框就销毁了吧。
hnzlk 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fandh 的回复:]

在CAddDVR onok里面作这些事,然后,保存成变量,供外部取用!
[/Quote]
正解,
按OK后,对话框就销毁了。
青莲隐身 2011-05-30
  • 打赏
  • 举报
回复
但是为什么这样不行啊,没理由啊
King_hhuang 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fandh 的回复:]
在CAddDVR onok里面作这些事,然后,保存成变量,供外部取用!
[/Quote]
+

或者把CString ip,name,password;
的指针或引用传入CAddDVR,作为CAddDVR的参数
然后在CAddDVR的onok中给他们赋值
fandh 2011-05-30
  • 打赏
  • 举报
回复
在CAddDVR onok里面作这些事,然后,保存成变量,供外部取用!
zjz800800 2011-05-30
  • 打赏
  • 举报
回复
UpdateData(TRUE);
abxialiang 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhaoyunfan 的回复:]

但是为什么这样不行啊,没理由啊
[/Quote]
我来说下理由看看你能否听懂:
DoModal()函数是一个阻塞类型的函数,在它调用的对话框界面关闭之前,此函数后面的语句无法执行,而你把获取数据的代码写在了此函数的后面
dlg.m_ip.GetAddress(b1,b2,b3,b4);//注意这句代码会直接从界面控件上去取得数据
当点击确定按钮后,对话框界面就关闭(但是对象还在的),所以执行获取界面上数据的代码会出错.

解决:
我上面讲了虽然界面不在了,但是对象还在,你在那个对话框类中加几个成员变量,点击确定时先给这几个变量赋值,后面就能使用这几个变量中的数据了.

qiuxin425 2011-05-30
  • 打赏
  • 举报
回复
在你的窗口上将变量用公有函数返回
帝国队长 2011-05-30
  • 打赏
  • 举报
回复
执行哪步出现了,断点看一下呀

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧