有两个对话框CQueryFormulaDlg,CModifyDetailMaterialDlg,现在想把第一个对话框CQueryFormulaDlg中选中的值传到第二个对话框CModifyDetailMaterialDlg中,然后将传的值在CModifyDetailMaterialDlg对应的文本框中显示出来.我是个新手,对于这些东西很模糊,希望你们帮我看看.有简单的说明代码更好!

解决方案 »

  1.   

    // 在CModifyDetailMaterialDlg弹出CQueryFormulaDlg的模式对话框CQueryFormulaDlg dlg;
    if (IDOK == dlg.DoModal)
    {
        CString strResult = dlg.m_strResult; // 定义一个保存结果的成员变量,
        // 然后在文本框内修饰strResult;
    }
    // overwrite OnOK, CQueryFormulaDlg::OnOK
    m_strResult = ...
      

  2.   

    可以两个对话框之间发送消息等来传递数据
    PostMessage(); 获得CModifyDetailMaterialDlg 的句柄,然后传递数据
      

  3.   

    CHotKeyDlg pHotKeyDlg;
    if(pHotKeyDlg.DoModal()==IDOK) 

    m_StaBegin.SetWindowText(pHotKeyDlg.m_sBegin);
    }
    这样应当是没有问题
      

  4.   

    方法很多呢:
    1.全局变量,最省事;
    2.得到第二个窗口的句柄,在第一个窗口内SendMessage,到第二个窗口的消息接受函数(此函数需要自己写);//这个方法比较实时
    3.不知道你这两个窗口是否为父子关系.如果是的话还可以{Domodal,UpdateData,通过类向导给控件绑定个变量的传统方式}
      

  5.   

    比方说在OnModify()下添加以下: 
    {      
    CModifyDetailMaterialDlg modifydetailmaterialdlg;modifydetailmaterialdlg.name=m_Datagrid.GetItem(0);//获取Datagrid控件第1个数据,以下依次推.......并赋值给第二个对话框相应的控件modifydetailmaterialdlg.DoModal();
    RefreshData();
    }可以在CModifyDetailMaterialDlg::OnInitDialog()初始化这些控件可用状况。如:
      BOOL CModifyDetailMaterialDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    GetDlgItem(IDC_Name)->EnableWindow(FALSE);
            return FALSE;
    }这样就可以得到你想要的效果了。给分咯!
      

  6.   

    哦忘了,还要在CModifyDetailMaterialDlg对话框中绑定这些控件
    比如:以上我们需要传name给IDD为:IDC_Name的文本控件,并显示需要在
    void CModifyDetailMaterialDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_Name, name);//加这个

    //{{AFX_DATA_MAP(CModifyDetailMaterialDlg)
    // NOTE: the ClassWizard will add DDX and DDV calls here
    //}}AFX_DATA_MAP
    }