MFC 如何将一个对话框的值,传递给下一个对话框
A对话框和B对话框,A中有一个按钮,按下去显示B对话框。A中有输入控件,可以输入值,我在B对话框要用到这些值,怎么才能传递过去呢?...
A对话框和B对话框,A中有一个按钮,按下去显示B对话框。A中有输入控件,可以输入值,我在B对话框要用到这些值,怎么才能传递过去呢?
展开
展开全部
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.消息发送,不知道你对消息传值有何理解,暂时不长篇了。
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的友元类,这样增大了数据破坏的风险。
展开全部
通过窗口接收消息的形式来传递消息, 先取得A对话框的窗口句柄,通过sendmessage发送消息将句柄传递到对话框B上, 通过A窗口句柄取得A中的输入值交给B对话框使用!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2楼已经说了方法,我补充个。你在b对话框设置一个构造函数,其参数是指向a的指针,实例b的时候,把a的this传过去,想干啥干啥,无视b是模式还是非模式对话框。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询