刚问一个问题。我试图在消息框中显示文件名。此文件名是完整路径的一部分。我需要在CChooseDirDlg类中使用Set方法设置路径,并使用Get方法在SecondDlg类中调用它。这两个类都被声明为朋友,但是在不同的文件中。但是,消息框没有返回任何内容。有任何想法吗?谢谢你的时间......
ChooseDirDlg.h
class CChooseDirDlg : public CDialog
{
// Construction
friend class SecondDlg;
public:
CString sPath;
ChooseDirDlg.cpp:
void CChooseDirDlg::SetPath(CString path){
path = m_DirTree.GetCurrentDir(); //find path
sPath = path;
}
CString CChooseDirDlg::GetPath(){
return sPath;
}
SecondDlg.cpp:
void SecondDlg::OnOK()
{
CChooseDirDlg dlg;
dlg.SetPath(path); // set path
dlg.GetPath(); // get path
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
// Split path to isolate filename
_splitpath(dlg.GetPath(), drive, dir, fname, ext);
AfxMessageBox(fname);
}
答案 0 :(得分:0)
您的代码没有显示您设置路径的位置,但我会假设这是在OnOk
范围内的某处完成的。
该行:
CChooseDirDlg dlg;
OnOk
方法中的表示您正在创建CChoseDirDlg
类的本地实例。
此实例不与该类的其他实例共享成员变量的值(如果它们不是静态的),因此如果您在另一个实例上调用SetPath
,dlg
实例中的OnOk
实例{1}}范围不具备数据。