【问题标题】:Common Item Dialog interfaces not included in minGW?通用项目对话框接口不包含在 minGW 中?
【发布时间】: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,要么直接将 IFileDialogIFileOpenDialog 接口和相关 GUID 和 structs 的定义复制/粘贴到您的代码中。

标签: c winapi com mingw openfiledialog


【解决方案1】:

您必须使用旧版本的 MinGW。

MinGW-w64 比 MinGW 更新得多,它在 shobjidl.h 中定义。

尝试使用来自http://winlibs.com/的最新个人版MinGW-w64

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2011-10-26
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多