我GetOpenFileName
用来在 C++ 中打开文件,是否可以在“计算机”虚拟位置设置初始目录lpstrInitialDir
?
谢谢,李。
我GetOpenFileName
用来在 C++ 中打开文件,是否可以在“计算机”虚拟位置设置初始目录lpstrInitialDir
?
谢谢,李。
这是不可能的,GetOpenFileName
因为您希望使用的位置不是文件系统的一部分。相反,它是更广泛的 shell 命名空间的一部分。
如果您查看文档,GetOpenFileName
您会发现它已被 Common Item Dialogs 取代(实际上是 10 多年前)。这些对话框确实允许您将初始文件夹指定为外壳项目。
如果您需要支持比 Vista 更早的旧版 Windows(其中IFileDialog
不可用),请尝试指定 Shell 文件夹 GUID。例如,My Computer
GUID 是20D04FE0-3AEA-1069-A2D8-08002B30309D
. 您可以像这样指定它:
ofn.lpstrInitialDir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}";
但是,值得注意的是,由于行为变化,这种方法在 Windows 7 及更高版本上几乎注定失败
因此,您最好IFileDialog
在 Vista 及更高版本上使用。