【发布时间】:2020-11-28 15:43:00
【问题描述】:
我正在使用 MinGW 在 C 中为 Windows 10 编写程序。我有最新版本。我想显示一个打开文件对话框,这很容易用 GetOpenFileName 完成。然而,在文档中它说这种方法已被通用项目对话框取代,他们建议使用这种方法,而不是使用称为 IFileDialog 的接口和其他一些类似名称的接口。问题是这些类型似乎都没有在任何地方定义。我试过包括 shobjidl.h,我试过查看一些我认为可能有的头文件,我试过在线搜索解决方案,我什至试过搜索字符串“IFileDialog”在我的 MinGW 安装文件夹中的所有文件中,但什么都没有出现,由于类型名称未知,它仍然无法编译。
简单的解决方案是使用 GetOpenFileName 的旧方法,但我有点想弄清楚这一点。有什么想法吗?
【问题讨论】:
-
根据 MS 文档(参见:docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/…),IFileDialog 在
shobjidl_core.h中定义。您可能需要包含平台 SDK 并确保包含这些目录的路径点。请记住,IFileDialog 是一个 COM 对象,有关示例,请参见 docs.microsoft.com/en-us/windows/win32/learnwin32/…。除非有充分的理由走 COM 路径,否则我会坚持使用旧方法。 -
IIRC,MinGW 没有最新的平台 SDK,这就是为什么在 MinGW 的文件中搜索
IFileDialog找不到任何东西的原因。因此,要么从 Microsoft 下载最新的 SDK,要么直接将IFileDialog和IFileOpenDialog接口和相关 GUID 和structs 的定义复制/粘贴到您的代码中。
标签: c winapi com mingw openfiledialog