在编写MFC程序时经常需要有浏览文件的功能,使用CFileDialog非常方便,但需要注意的是CFileDialog每次打开会改变程序的当前目录,因而对于相对路径的操作,就会有影响,导致其他基于相对路径的文件操作失败,因而比较好的做法都是对于文件路径操作等,应该使用完整路径。
也可以在CFileDialog打开前用GetCurrentDirectory获取当前目录,当CFileDialog关闭后再用SetCurrentDirectory还原。
CString filter;
CString FilePath;
char CurPath[100];
filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);
GetCurrentDirectory(100,CurPath);
if (dlg.DoModal() == IDOK)
{
FilePath = dlg.GetPathName();
m_FilePath = FilePath;
UpdateData(FALSE);
}
SetCurrentDirectory(CurPath);