MFC 如何将一个对话框的值,传递给下一个对话框

A对话框和B对话框,A中有一个按钮,按下去显示B对话框。A中有输入控件,可以输入值,我在B对话框要用到这些值,怎么才能传递过去呢?... A对话框和B对话框,A中有一个按钮,按下去显示B对话框。A中有输入控件,可以输入值,我在B对话框要用到这些值,怎么才能传递过去呢? 展开
 我来答
龚炜林
推荐于2016-08-04 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:581万
展开全部
1.构造函数,不知道你的B对话框是模式还是非模式,还有显示的时候是创建B还是已经创建了B。
A中编辑框关联一个CString变量 m_text;
然后显示B的时候先UpdateData(TRUE);
B中增加变量const CString &m_Atext;
然后修改B的构造函数增加一个参数B::B(const CString &Atext):m_Atext(Atext),调用B构造的时候传参数m_text就是了。更多办法,得知道你B用的是模式还是非模式的对话框,显示时创建没。
2.消息发送,不知道你对消息传值有何理解,暂时不长篇了。
更多追问追答
追问
B对话框是模式的。A对话框有个按钮,我在按钮里面用了a.DoModal(),点击按钮显示出B对话框。现在是A对话框有输入控件,我是不是先用UpdateData(TRUE);,将输入的值放到A对话框的变量里面,再按照你的方法,构造函数。
追答
这样的话,为了更节约内存,你可以不用设置其他了,就在按钮单击消息响应里面这样做:
CString text;
GetDlgItem(IDC_EDIT1)->GetWindowText(text);
B b(text);
b.Domodal();
//关闭B后,在这里处理你需要的值
等B对话框关闭后,如果需要获取B对话框的一些设置,同样的方法给B对话框增加参数就是了,你这样做会比较好。还有请看下我在B中使用的是CString变量的引用。
顺便说一下lokily2010的对象指针的方法,一般为了保护数据,会把变量声明为私有,如果那样传对象指针,需要声明B为A的友元类,这样增大了数据破坏的风险。
lucerfu
2012-12-26 · 超过28用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:72万
展开全部
通过窗口接收消息的形式来传递消息, 先取得A对话框的窗口句柄,通过sendmessage发送消息将句柄传递到对话框B上, 通过A窗口句柄取得A中的输入值交给B对话框使用!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lokily2010
推荐于2018-04-30 · TA获得超过284个赞
知道小有建树答主
回答量:776
采纳率:100%
帮助的人:585万
展开全部
2楼已经说了方法,我补充个。你在b对话框设置一个构造函数,其参数是指向a的指针,实例b的时候,把a的this传过去,想干啥干啥,无视b是模式还是非模式对话框。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式