可以在默认目录“计算机”上打开GetOpenFileName吗?

时间:2016-11-23 14:12:17

标签: c++ winapi getopenfilename

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

谢谢, 李。

2 个答案:

答案 0 :(得分:3)

GetOpenFileName无法实现这一点,因为您要使用的位置不是文件系统的一部分。相反,它是更广泛的shell命名空间的一部分。

如果查看GetOpenFileName的文档,您会看到它已被Common Item Dialogs取代(事实上已超过10年)。这些对话框允许您将初始文件夹指定为shell项目。

答案 1 :(得分:1)

如果您需要支持早于IFileDialog {Vista}的旧版Windows,请尝试指定Shell文件夹GUID。例如,My Computer GUID为20D04FE0-3AEA-1069-A2D8-08002B30309D。您可以这样指定:

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

然而,值得注意的是,由于behavioral changes

,这种方法几乎注定要在Windows 7及更高版本上失败

因此,最好在Vista上使用IFileDialog,之后再使用。