根据OPENFILENAME 结构的文档,使用以下算法选择初始目录:
Windows 7的:
- 如果lpstrInitialDir的值与应用程序第一次使用“打开”或“另存为”对话框时传递的值相同,则用户最近选择的路径将用作初始目录。
- 否则,如果lpstrFile包含路径,则该路径是初始目录。
- 否则,如果lpstrInitialDir不是NULL,它指定初始目录。
- 如果lpstrInitialDir为NULL并且当前目录包含指定过滤器类型的任何文件,则初始目录为当前目录。
- 否则,初始目录为当前用户的个人文件目录。
- 否则,初始目录是 Desktop 文件夹。
我正在使用以下代码构建文件对话框:
CFileDialog dlgFile(bOpenFileDialog);
dlgFile.m_ofn.lpstrInitialDir = strSourcePath;
dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH);
但是,它总是在 strSourcePath 中打开相同的默认文件夹。有谁知道为什么?它应该只第一次使用这个目录,随后打开的文件应该记住最后一个文件夹(算法中的要点 1.)。我在 Windows 7 上使用 VS2012。