1

GetOpenFileName用来在 C++ 中打开文件,是否可以在“计算机”虚拟位置设置初始目录lpstrInitialDir

谢谢,李。

4

2 回答 2

3

这是不可能的,GetOpenFileName因为您希望使用的位置不是文件系统的一部分。相反,它是更广泛的 shell 命名空间的一部分。

如果您查看文档,GetOpenFileName您会发现它已被 Common Item Dialogs 取代(实际上是 10 多年前)。这些对话框确实允许您将初始文件夹指定为外壳项目。

于 2016-11-23T15:46:39.167 回答
1

如果您需要支持比 Vista 更早的旧版 Windows(其中IFileDialog不可用),请尝试指定 Shell 文件夹 GUID。例如,My ComputerGUID 是20D04FE0-3AEA-1069-A2D8-08002B30309D. 您可以像这样指定它:

ofn.lpstrInitialDir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}";

但是,值得注意的是,由于行为变化,这种方法在 Windows 7 及更高版本上几乎注定失败

因此,您最好IFileDialog在 Vista 及更高版本上使用。

于 2017-08-10T16:41:40.713 回答