新手问个对话框传值并显示的问题!!!! 有两个对话框CQueryFormulaDlg,CModifyDetailMaterialDlg,现在想把第一个对话框CQueryFormulaDlg中选中的值传到第二个对话框CModifyDetailMaterialDlg中,然后将传的值在CModifyDetailMaterialDlg对应的文本框中显示出来.我是个新手,对于这些东西很模糊,希望你们帮我看看.有简单的说明代码更好! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 在CModifyDetailMaterialDlg弹出CQueryFormulaDlg的模式对话框CQueryFormulaDlg dlg;if (IDOK == dlg.DoModal){ CString strResult = dlg.m_strResult; // 定义一个保存结果的成员变量, // 然后在文本框内修饰strResult;}// overwrite OnOK, CQueryFormulaDlg::OnOKm_strResult = ... 可以两个对话框之间发送消息等来传递数据PostMessage(); 获得CModifyDetailMaterialDlg 的句柄,然后传递数据 CHotKeyDlg pHotKeyDlg;if(pHotKeyDlg.DoModal()==IDOK) { m_StaBegin.SetWindowText(pHotKeyDlg.m_sBegin);}这样应当是没有问题 方法很多呢:1.全局变量,最省事;2.得到第二个窗口的句柄,在第一个窗口内SendMessage,到第二个窗口的消息接受函数(此函数需要自己写);//这个方法比较实时3.不知道你这两个窗口是否为父子关系.如果是的话还可以{Domodal,UpdateData,通过类向导给控件绑定个变量的传统方式} 比方说在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;}这样就可以得到你想要的效果了。给分咯! 哦忘了,还要在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} 请教孙鑫老师VC++深入详解文本编程退格键代码问题 回调函数相关问题 《COM技术内幕》指针类型转换 如何选择数据结构?麻烦进来看看。 怎样将数据库的一列的内容放进CString数组里? 请问DX,是否能够把通过IHTMLDocument2得到的网页里面的链接直接触发? min_element 的使用 如何编程实现改变系统的DNS和网关? 建议到这里来的人先学好语文 static加载在后,这种问题如何解决 外部函数调用mfc建立定时器出错 谁帮我讲讲VC++中多线程时互斥量怎么使用,作用是什么?操作系统的互斥量是怎么用的?
if (IDOK == dlg.DoModal)
{
CString strResult = dlg.m_strResult; // 定义一个保存结果的成员变量,
// 然后在文本框内修饰strResult;
}
// overwrite OnOK, CQueryFormulaDlg::OnOK
m_strResult = ...
PostMessage(); 获得CModifyDetailMaterialDlg 的句柄,然后传递数据
if(pHotKeyDlg.DoModal()==IDOK)
{
m_StaBegin.SetWindowText(pHotKeyDlg.m_sBegin);
}
这样应当是没有问题
1.全局变量,最省事;
2.得到第二个窗口的句柄,在第一个窗口内SendMessage,到第二个窗口的消息接受函数(此函数需要自己写);//这个方法比较实时
3.不知道你这两个窗口是否为父子关系.如果是的话还可以{Domodal,UpdateData,通过类向导给控件绑定个变量的传统方式}
{
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;
}这样就可以得到你想要的效果了。给分咯!
比如:以上我们需要传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
}