多个按钮调用同一个窗口,关闭窗口传回来的值怎么赋给不同的变量

多个按钮调用同一个窗口,关闭窗口传回来的值如何赋给不同的变量?
假设 有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();