我的情况是这样。  我有两个对话框。
第一个  点击按键-》弹出第二个。。
我想把我在第一个对话框输入的数据 转到第二去,并显示出来
于是
void CMyEmailDlg::OnOk() 
{
CString temp;
DIALOGUE2 begin;
begin.DoModal ();
UpdateData();
begin.m_temp  =m_EMAILADDRESS;
       temp=begin.m_temp;
   
begin.m_email.Format ("%s",temp);
MessageBox(temp);
// TODO: Add your control notification handler code here
UpdateData(FALSE);
}
我用MessageBOX查看了,数据的确付给了TEMP。说明m_temp的值变了啊。不再是刚开始的NULL
为什么弹出来的对话框,没有数据显示...求解决方案

解决方案 »

  1.   

    UpdateData(false);放到第二个对话框的OnInitDialog()当中
      

  2.   


    DIALOGUE2 begin;
    begin.m_temp =m_EMAILADDRESS;
    begin.DoModal ();
    //UpdateData(false);放到第二个对话框的OnInitDialog()当中
      

  3.   

    begin.DoModal ();是现实对话框
    传递数据要在这句之前
      

  4.   

    晕,模式对话框,你的第二个都没关,怎么关前面的呢?
    要关闭前面的对话框,直接在begin.DoModal ();之前调用CDialog::OK()就是了
      

  5.   

    你的顺序太错乱啦!
    void CMyEmailDlg::OnOk() 
    {
    CString temp;
    DIALOGUE2 begin;
    UpdateData();//这个想必是取第一个对话框的数据存到变量m_EMAILADDRESS里
    begin.m_temp =m_EMAILADDRESS;//给第二个对话框的变量赋值,注意要在第二个对话框的OnInitDialog()中调用UpdateData(FALSE);
      temp=begin.m_temp;
    begin.DoModal ();
     
    begin.m_email.Format ("%s",temp);
    MessageBox(temp);
    // TODO: Add your control notification handler code here
    UpdateData(FALSE);
    }
      

  6.   

    逻辑很简单:
    一、取第一个对话框里的数据保存到变量里:UpdateData(TRUE)
    二、将第一个对话框的变量赋值给第二个对话框的变量
    三、在第二个对话框的初始化中将变量存到控件上UpdateData(FALSE)
    四、显示第二个对话框就可以了
      

  7.   

    改成这样:
    CString temp;
    DIALOGUE2 begin;
    begin.m_temp =m_EMAILADDRESS;//这个放在DoModal前面begin.DoModal ();
    temp=begin.m_temp;
      

  8.   

    DoModal()其实类似是阻塞了
    楼主可以在弹出对话框的初始化函数中AfxGetMainWnd()获取主对话框窗口的指针
    例如:
    C数据传递Dlg *pMainWnd=(C数据传递Dlg*)AfxGetMainWnd();
    CString strText;
    pMainWnd->GetDlgItemText(IDC_EDIT1,strText);//获取主对话框数据
    SetDlgItemText(IDC_EDIT2,strText);//设为子对话框数据
      

  9.   

    楼主代码顺序问题,begin.DoModal (); 就10楼的方法了