B.H public: CString SourceDataBaseName; CString DestDataBaseName;A.CPPvoid A::OnSelDestDB() { // TODO: Add your control notification handler code here B CDlg; CFileDialog FileOp(TRUE); FileOp.DoModal(); CDlg.DestDataBaseName=FileOp.GetPathName();} 当在B.CPP中调用DestDataBaseName时,为空??
void A::OnSelDestDB() { // TODO: Add your control notification handler code here B CDlg; CFileDialog FileOp(TRUE); FileOp.DoModal(); CDlg.DestDataBaseName=FileOp.GetPathName();}B CDlg是函数OnSelDestDB的局部变量,OnSelDestDB退出后局部变量出了作用域,此中的B与其他地方的B不是一回事,可以在A中设置一个String变量保存结果,在B中通过A*ptr访问这个变量
class A { }class B { A dlg; } class B::Button1() { dlg.Domodal(); Cpathname = FileDlg.GetpathName();} 这样试试看;
class A
{
};class B
{
A* ptr;
};
B.H
public: CString SourceDataBaseName;
CString DestDataBaseName;A.CPPvoid A::OnSelDestDB()
{
// TODO: Add your control notification handler code here
B CDlg;
CFileDialog FileOp(TRUE);
FileOp.DoModal();
CDlg.DestDataBaseName=FileOp.GetPathName();}
当在B.CPP中调用DestDataBaseName时,为空??
{
// TODO: Add your control notification handler code here
B CDlg;
CFileDialog FileOp(TRUE);
FileOp.DoModal();
CDlg.DestDataBaseName=FileOp.GetPathName();}B CDlg是函数OnSelDestDB的局部变量,OnSelDestDB退出后局部变量出了作用域,此中的B与其他地方的B不是一回事,可以在A中设置一个String变量保存结果,在B中通过A*ptr访问这个变量
{
}class B
{
A dlg;
}
class B::Button1()
{
dlg.Domodal();
Cpathname = FileDlg.GetpathName();}
这样试试看;
B.H
public:CString SourceDataBaseName;
CString DestDataBaseName;A.CPPvoid A::OnSelDestDB()
{
// TODO: Add your control notification handler code here
//B CDlg;<--------------------------------------------------1
CFileDialog FileOp(TRUE);
FileOp.DoModal();
//CDlg.DestDataBaseName=FileOp.GetPathName();<--------------2//这两句不要.}
//另加个成员函数.假设FileOp.GetPathName()返回的是CString
CString A::GetResult()
{
return FileOp.GetPathName();
}//然后在B中要创一个A的对象.B.CPPvoid B::Button1()
{
A Dlg;
if(Dlg.DoModal() == IDOK)
{
DestDataBaseName = Dlg.GetResult();
}
}
哈哈!