在父对话框上有一个按钮,点击该按钮弹出子对话框(此时父亲对话框没消失),在子对话框界面输入数据,输完数据后点击子对话框上确定按钮,父对话框显示刚刚输入的数据,该怎么做呢?

解决方案 »

  1.   

    你的子对话框应该是DoMadol调用的吧
    把相关变量设成public的
    这样可以直接访问
    例如
    yourdlg.variable
      

  2.   

    子对话框是DoMadol调用的。
      

  3.   

    int i;
    CDialog dlg;
    if(IDOK == dgl.DoModal)
    {
      i = dlg.XX;  //XX为你对话框中的变量
    }
      

  4.   

    我现在的做法是,在父对话框中添加button的响应函数,
    void CMydialog::OnButton1() 
    {
    CMyModedlg dlg;
    dlg.DoModal();
    }
     添加父对话框的公有成员变量,公有成员函数GetSetData()负责接收数据,在该函数中赋值给公有成员变量。
    添加子对话框的"确定"按钮响应函数,在该函数中取得控件的输入值,调用父对话框的GetSetData()函数将取得的控件输入值传递过去,现在的情况是,子对话框无论输入什么值,父对话框的值一直为0。
      

  5.   

    void CMydialog::OnButton1()  
    {
    CMyModedlg dlg;
    if(IDOK==dlg.DoModal())
    {
        this.value1 = dlg.value1;//CMyModedlg 类里面的公共成员,直接赋值即可...
      ... 
    }
    }
      

  6.   

    我觉得,你的这个GetSetData()完全可以是子对话框的,用于传出在子对话框中设置的值
    在父对话框中如下调用就可以了CMyModedlg dlg;
    if(IDOK==dlg.DoModal())
    {
        m_value = dlg.GetSetData();
      ... 
    }
    ...
      

  7.   

    按照你的方法,获取子对话框的值得操作应该放在哪了呢?如果放在GetSetData()中,再调用m_value=dlg.GetSetData()会报错。
      

  8.   

    我觉得 你应该给变量传值啊 子对话框 按钮点完了 记得 updatedata(True)
    父对话框接收完值记得 Updatedata(FALSE)
      

  9.   

    很简单:假设你把值显示在编辑框中,且编辑框变量为m_edit1
    void CMydialog::OnButton1()  
    {
    CMyModedlg dlg;
    if(dlg.DoModal()==IDOK)
    {
        m_edit1= dlg.value1;//dlg.value1为CMyModedlg 类里面的公共成员,编辑框
                               //数据类型与dlg.value1数据类型相同。
        UpdateData(FALSE);
    }
    }