转自CSDN:
按钮1的代码
CFileDialog fileDlg (TRUE) ;
fileDlg.m_ofn.lpstrTitle = "读入文本" ;
fileDlg.m_ofn.lpstrFilter = "文本文档(*.txt)\0*.txt\0\0" ;
if (IDOK == fileDlg.DoModal ())
{
m_otherPath = fileDlg.GetPathName () ; // 获得全部的路径
}按钮2的代码:
CFileFind finder ;
CString FilePath ;
CString FileName ;
BOOL bWorking = finder.FindFile (".\\buildloc\\*.txt") ; // 查找文件夹下的文件
while (bWorking) // 当找到了
{
bWorking = finder.FindNextFile () ;
FileName = finder.GetFileName () ;
FilePath = finder.GetFilePath () ; }
先执行1再执行2,发现2无法找到文件,反过来先执行2再执行1,正常。
原因:调用CFileDialog之后,当前目录被更改,此时再用相对路径搜索无效;
解决:
1.在初始化fileDlg时没将style设置成OFN_NOCHANGEDIR;
2.在win 2000,win XP下,上述标志设置无效,调用
::SetCurrentDirectory((LPCTSTR)currPath);
将其修改为先前值
本文探讨了使用CFileDialog组件选择文件后对当前目录的影响,并提供了解决方案,确保后续文件查找功能正常工作。
619

被折叠的 条评论
为什么被折叠?



