2010-11-07 108 views
3

我使用GetOpenFileName并将OPENFILENAME结构的lpstrInitialDir成员设置为我想要的目录作为初始目录。然而,在Win7上,我的应用程序似乎记得用户上次打开的目录,它忽略了lpstrInitialDir设置并转到最后一个目录。On Win7 GetOpenFileName函数忽略lpstrInitialDir参数

Apparently this is by design

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

的Windows 7:

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

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

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

回答

1

如果将lpstrFile设置为所需的初始目录路径(即lpstrInitialDir),会发生什么情况。如果您使用lpstrFile来指定文件名,那么您可能需要在文件名前加上初始目录路径。

+1

谢谢,这是我需要的建议。如果我将lpstrFile设置为完整路径,那么OpenFile对话框会在lpstrFile中指定的目录下打开,并且它可以与通配符一起使用,如C:\ path \\ *。xml。 – 2010-11-07 14:41:27

+0

这不适合我,我得到“'错误12290'。未能打开。 – Dan 2012-06-02 20:36:24