两个子对话框之间传递数据,该如何处理
两个子对话框之间传递数据
我建了两个子对话框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的值。
我建了两个子对话框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的值。