2

根据OPENFILENAME 结构的文档,使用以下算法选择初始目录:

Windows 7的:

  1. 如果lpstrInitialDir的值与应用程序第一次使用“打开”或“另存为”对话框时传递的值相同,则用户最近选择的路径将用作初始目录。
  2. 否则,如果lpstrFile包含路径,则该路径是初始目录。
  3. 否则,如果lpstrInitialDir不是NULL,它指定初始目录。
  4. 如果lpstrInitialDirNULL并且当前目录包含指定过滤器类型的任何文件,则初始目录为当前目录。
  5. 否则,初始目录为当前用户的个人文件目录。
  6. 否则,初始目录是 Desktop 文件夹。

我正在使用以下代码构建文件对话框:

CFileDialog dlgFile(bOpenFileDialog);
dlgFile.m_ofn.lpstrInitialDir = strSourcePath;
dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH);

但是,它总是在 strSourcePath 中打开相同的默认文件夹。有谁知道为什么?它应该只第一次使用这个目录,随后打开的文件应该记住最后一个文件夹(算法中的要点 1.)。我在 Windows 7 上使用 VS2012。

4

1 回答 1

0

这是修复:

dlgFile.m_ofn.lpstrInitialDir = strSourcePath.GetBuffer(_MAX_PATH);

完成后别忘了打电话strSourcePath.ReleaseBuffer();

如果您使用lpstrFile指定文件名,那么您可能需要在文件名之前添加初始目录路径。

于 2015-09-19T18:06:12.373 回答