不知你的程序是如何写的?
你可以在ClassWizard中给该EDIT控件增加一个CString变量,或是直接在对话框类mydialog中增加一个CString变量用于读取EDIT中的内容,方法如下:假设该CString变量名为m_strEdit
GetDlgItem(IDC_EDIT1/*该EDIT控件的ID*/)->GetWindowText(m_strEdit);
在其他类中要使用该类中EDIT的内容时,写如下代码:
mydialog dlg;
int nRet=dlg.DoModal();
CString strEdit=dlg.m_strEdit;
...
声明全局变量的方法也可以实现,但没这个必要。
你可以在ClassWizard中给该EDIT控件增加一个CString变量,或是直接在对话框类mydialog中增加一个CString变量用于读取EDIT中的内容,方法如下:假设该CString变量名为m_strEdit
GetDlgItem(IDC_EDIT1/*该EDIT控件的ID*/)->GetWindowText(m_strEdit);
在其他类中要使用该类中EDIT的内容时,写如下代码:
mydialog dlg;
int nRet=dlg.DoModal();
CString strEdit=dlg.m_strEdit;
...
声明全局变量的方法也可以实现,但没这个必要。
有C++类A及其成员函数b、对话框类C
A::b中调用
C mydlg;
mydlg.DoModal(),调出对话框。
在对话框的资源上有一个Edit控件,ok,cancel按钮各一个
在C::OnOK()
{CEdit* myedit;
myedit = (CEdit*) GetDlgItem(IDC_EDIT2);//DWORD dwSel = myedit->GetSel();
// LOWORD(myedit->SetSel(HIWORD(dwSel), -1));
CString m_string;
myedit->GetWindowText(m_string);
g_string=m_string;
CDialog::OnOK();
}
//IDC_EDIT2是Edit控件的ID
//g_string是在工程头文件中定义为:extern CString g_string;
//定义成static CString g_string也不行
dlg的OnOK中:UpdateData(TRUE);A::b中:C mydlg;
if(mydlg.DoModal() == IDOK)
{
m_string = mydlg.m_editstr;
}其中,m_string是类A的成员变量,m_editstr是mydlg中edit控件对应的成员。
甚至使用public的变量也不好
这样数据的封装就什么都没有了
对好自己写一个方法来获取数据
不知你的程序是如何写的?
你可以在ClassWizard中给该EDIT控件增加一个CString变量,或是直接在对话框类mydialog中增加一个CString变量用于读取EDIT中的内容,方法如下:假设该CString变量名为m_strEdit
GetDlgItem(IDC_EDIT1/*该EDIT控件的ID*/)->GetWindowText(m_strEdit);
在其他类中要使用该类中EDIT的内容时,写如下代码:
mydialog dlg;
int nRet=dlg.DoModal();
CString strEdit=dlg.m_strEdit;
...
声明全局变量的方法也可以实现,但没这个必要。
___________________________________________________
他的方法是比较好的,不过你要注意在对话框销毁之前,UpdateData(TRUE)一下,否则,你很难如愿的哦!
这个方法我屡试不爽,应该没什么问题,如果你有兴趣继续讨论的话,可以将代码发给我,通过电子邮件联系:[email protected]
example:
CMyDialog MyDialog;
if (MyDialog.DoModal() == IDOK )
{
RecvVar = MyDialog.m_MemberVar;
.....
}