在 Win7 上 GetOpenFileName 函数忽略 lpstrInitialDir 参数

Joh*_*nie 5 windows-7

我正在使用结构体成员GetOpenFileName并将其设置为我想要作为初始目录的目录。然而,在 Win7 上,我的应用程序似乎会记住用户上次打开的目录,并且它会忽略设置并转到最后一个目录。 lpstrInitialDirOPENFILENAMElpstrInitialDir

显然这是设计使然

lpstrInitialDir
LPCTSTR
初始目录。不同平台选择初始目录的算法有所不同。

Windows 7的:

1.如果 lpstrInitialDir 的值与应用程序第一次使用“打开”或“另存为”对话框时传递的值相同,则用户最近选择的路径将用作初始目录。
2.否则,如果lpstrFile包含路径,则该路径是初始目录。
3.否则,如果lpstrInitialDir不为NULL,则指定初始目录。

有谁知道如何阻止这种情况发生?

我希望我指定的目录成为初始目录,无论用户上次打开的文件是什么,即我希望应用上面的条件 3。我做了显而易见的事情并通过注册表进行了搜索,但我找不到与该问题相关的任何内容。

swa*_*kat 3

lpstrFile如果您设置为所需的初始目录路径(即) ,会发生什么lpstrInitialDir。如果您要lpstrFile指定文件名,则可能需要在文件名前面添加初始目录路径。

  • 这对我不起作用,我收到“‘错误 12290’。” 打开失败。 (2认同)