首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

两个子对话框之间传递数据,该如何处理

2014-06-02 
两个子对话框之间传递数据我建了两个子对话框CDlg1和CDlg2,CDlg1中有几个Combo box,我想将其中的字符串传

两个子对话框之间传递数据
我建了两个子对话框CDlg1和CDlg2,CDlg1中有几个Combo box,我想将其中的字符串传递到CDlg2的文本框中,
在CDlg1中有
m_Jifen.GetWindowText(m_strjifen);

m_avgNumber.GetWindowText(m_stravgnumber);

m_pinghuadu.GetWindowText(m_strpinghuadu);
在CDlg2中有
  m_A1.SetWindowText(testDlg.m_strjifen);
m_A2.SetWindowText(testDlg.m_stravgnumber);
m_A3.SetWindowText(testDlg.m_strpinghuadu);
可在文本框中就是显示不出来或者显示的只是m_strjifen m_stravgnumber m_strpinghuadu的默认值无法改变,我该怎么办????


[解决办法]
传指针
在Dlg2中声明一个指针LPVOID类型的变量,调用Dlg2 的DoModal()之前将Dlg1的指针赋值给LPVOID类型的变量,然后调用Dlg2以后把LPVOID类型转换成Dlg1的类型就可以访问Dlg1里面的成员了。
eg:将Dlg1的CString m_strData在Dlg2中使用
LPVOID m_pVoid//Dlg2中声明

Dlg1中
this = m_pVoid;
调用DLg2的DoModal()
CString str;
str = reinterpret_cast<Dlg1*>(m_pVoid)->m_strData;

这样就行了
[解决办法]
可以这样做:
在DLG1的类中声明DLG2类的成员变量,
在DLG1的响应函数中,设置DLG2成员变量的值。
比如
m_dlg2.m_str2=m_choose.
这里m_str2为DLG2的成员变量,也就是你要在对话框2中显示的值,
m_choose为DLG1的成员变量,保存你选择Combox的值。

热点排行