多个按钮调用同一个窗口,关闭窗口传回来的值怎么赋给不同的变量
多个按钮调用同一个窗口,关闭窗口传回来的值如何赋给不同的变量?
假设 有2个button btn1 btn2,有2个全局变量cstring str1,str2
点击btn1
弹出对话框NewDlg,可输入edit,得到strnew,关闭对话框后,把strnew复制给str1。同理btn2,str2。
CNewDlg dlg;
dlg.DoModal();
然后 str1 = dlg.strnew; 对于这条,是dlg关闭之后,才执行的,dlg关闭了,strnew已经消失了吧,能保证传给str1吗?
想用这种办法
CNewDlg dlg;
dlg.DoModal();
新对话框里
CNewDlg * parent = ( CNewDlg* )Getparent();
parent->str1 = strnew;
CDialog::EndDialog( 0 );
弹出新对话框的时候,能不能把str1和str2的标识传给新对话框,在新对话框关闭之前,把值传回来,该如何写。
------解决思路----------------------
也就是 edit 关联变量时 类型 为 CString strnew;
------解决思路----------------------
正常情况就是你的方法1
OnButton1()
{
CNewDlg dlg;
if(IDOK==dlg.DoModal();
{
str1=dlg.xxxxx;
}
}//dlg是OnButton1的局部变量,要遇到这个括号才消失
你也可以把指针传递进CNewDlg对话框
给CNewDlg对话框类增加一个CString *xxx;
给构造函数加多一个形参
CNewDlg::CNewDlg(CString *mmm,。。。。。)
{
xxx=mmm;
}
然后响应确定按钮
OnOK()
{
UpdateData(TRUE);
if(xxx) *xxx=strnew;
CDialog::OnOK();
}
调用的时候就是:
OnButton1()
{
CNewDlg dlg(&str1);
dlg.DoModal();
}
OnButton2()
{
CNewDlg dlg(&str2);
dlg.DoModal();
}
假设 有2个button btn1 btn2,有2个全局变量cstring str1,str2
点击btn1
弹出对话框NewDlg,可输入edit,得到strnew,关闭对话框后,把strnew复制给str1。同理btn2,str2。
CNewDlg dlg;
dlg.DoModal();
然后 str1 = dlg.strnew; 对于这条,是dlg关闭之后,才执行的,dlg关闭了,strnew已经消失了吧,能保证传给str1吗?
想用这种办法
CNewDlg dlg;
dlg.DoModal();
新对话框里
CNewDlg * parent = ( CNewDlg* )Getparent();
parent->str1 = strnew;
CDialog::EndDialog( 0 );
弹出新对话框的时候,能不能把str1和str2的标识传给新对话框,在新对话框关闭之前,把值传回来,该如何写。
------解决思路----------------------
也就是 edit 关联变量时 类型 为 CString strnew;
------解决思路----------------------
正常情况就是你的方法1
OnButton1()
{
CNewDlg dlg;
if(IDOK==dlg.DoModal();
{
str1=dlg.xxxxx;
}
}//dlg是OnButton1的局部变量,要遇到这个括号才消失
你也可以把指针传递进CNewDlg对话框
给CNewDlg对话框类增加一个CString *xxx;
给构造函数加多一个形参
CNewDlg::CNewDlg(CString *mmm,。。。。。)
{
xxx=mmm;
}
然后响应确定按钮
OnOK()
{
UpdateData(TRUE);
if(xxx) *xxx=strnew;
CDialog::OnOK();
}
调用的时候就是:
OnButton1()
{
CNewDlg dlg(&str1);
dlg.DoModal();
}
OnButton2()
{
CNewDlg dlg(&str2);
dlg.DoModal();
}