如何变量从一个传递到另一个对话框?

ayin668 2010-11-03 09:25:19
对话框(Dialog1)中有一编辑框(Edit1),点击编辑框(Edit1)弹出一数字输入对话框(Dialog2),两个对话框分别为两个类,现在的问题是怎样才能把输入对话框(Dialog2)的数字传递到(Dialog1)中的编辑框(Edit1)中的变量?说白了就是不同类之间的变量怎么传递?我用的环境是VS2005。
...全文
277 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
morebread 2010-11-04
  • 打赏
  • 举报
回复
Cdialog1 中包含CDialog2的头文件。
CDialog1和CDialog2的编辑框都绑定一个变量edit1和edit2
在点击CDialog1的edit后
CDialog2 dlg;
dlg.edit2 = edit1;
if (IDOK == dlg.domodal())
{
edit1 = dlg.edit2;
}

就这样
xiaoyilong19 2010-11-04
  • 打赏
  • 举报
回复
CDialog2
{
private :
int num;
public:
int GetNum(){return num;}
};
CDialog1
{
public:
CDialog1(CDialog2*pDlalog2);//赋值
int GetNum(){}{m_pdlg2->GetNum(); }
private:
CDialog2*m_pdlg2;


};
//构造
CDialog2 dlg2;
CDialog1 dlg1(&dlg2);
dlg1.GetNum();
ayin668 2010-11-04
  • 打赏
  • 举报
回复
我是这样用的,因为变量是从Dialog2传到Dialog1中,
我在Dialog2定义为static int num;
然后再到Dialog1调用它,发现不行啊。应该怎样做呢?
ayin668 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 djj315 的回复:]
这个貌似方法有好多种哦,看你的用途了。
[/Quote]
方法是很多,可都不清楚啊,还请老兄讲具体点啊、。
Simao 2010-11-04
  • 打赏
  • 举报
回复
这个貌似方法有好多种哦,看你的用途了。
tigerMayDo 2010-11-04
  • 打赏
  • 举报
回复
将dlg2的头文件包含在dlg1.cpp中 然后在dlg1.cpp中 m_edit1 = dlg2.m_edit2
浩南_哥 2010-11-04
  • 打赏
  • 举报
回复
PostMessage,共享变量。。。。。
lyingbo 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 morebread 的回复:]
Cdialog1 中包含CDialog2的头文件。
CDialog1和CDialog2的编辑框都绑定一个变量edit1和edit2
在点击CDialog1的edit后
CDialog2 dlg;
dlg.edit2 = edit1;
if (IDOK == dlg.domodal())
{
edit1 = dlg.edit2;
}

就这样
[/Quote]

这个应该是比较简单的方法了
sichuanwww 2010-11-04
  • 打赏
  • 举报
回复
消息或者全局变量
Eleven 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 ayin668 的回复:]
对话框(Dialog1)中有一编辑框(Edit1),点击编辑框(Edit1)弹出一数字输入对话框(Dialog2),两个对话框分别为两个类,现在的问题是怎样才能把输入对话框(Dialog2)的数字传递到(Dialog1)中的编辑框(Edit1)中的变量?说白了就是不同类之间的变量怎么传递?我用的环境是VS2005。
[/Quote]
Dilaog1相当于是Dialog2的父窗口了,修改Dialog2的类,加个父窗口Dialog1类的指针,构造的时候传递进入,或者在Dialog2中直接使用GetParent()得到Dialog1的指针
haogeai123 2010-11-04
  • 打赏
  • 举报
回复
可以使用消息,自定义消息或者使用系统预设的消息都可以。
还有就是使用全局变量
向立天 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 morebread 的回复:]
Cdialog1 中包含CDialog2的头文件。
CDialog1和CDialog2的编辑框都绑定一个变量edit1和edit2
在点击CDialog1的edit后
CDialog2 dlg;
dlg.edit2 = edit1;
if (IDOK == dlg.domodal())
{
edit1 = dlg.edit2;
}

就这样
[/Quote]
就这样
昨夜无风 2010-11-03
  • 打赏
  • 举报
回复
最基本的模态对话框赋值啊!
liuweiele 2010-11-03
  • 打赏
  • 举报
回复
senddlgitemmessage
向立天 2010-11-03
  • 打赏
  • 举报
回复
如果弹出的数字输入对话框是模态调用
那么可以在DoModal之后只接赋值
wltg2001 2010-11-03
  • 打赏
  • 举报
回复
最方便的方法是用一个全局变量不就行了,不过这种方法破坏了封装性。
pengpeng321456 2010-11-03
  • 打赏
  • 举报
回复
何必这么麻烦呢 为什么不设一个全局变量在APP文件里呢
ayin668 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wkq87 的回复:]
获得另外一个类的指针,再调用
[/Quote]
?如何做呢?不甚清楚啊,望大哥指点。
wkq87 2010-11-03
  • 打赏
  • 举报
回复
获得另外一个类的指针,再调用
野男孩 2010-11-03
  • 打赏
  • 举报
回复
你的对话框Dialog1弹出一个对话框Dialog2,这说明Dialog1的类能操作Dialog2的类吧。

Dialog2关闭的时候,输入的数字可以记录到Dialog2的成员变量吧。

Dialog1既然能操作Dialog2,那么就可以获得Dialog2的那个记录了数字的成员变量的值吧。

Done!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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