【问题标题】:How to prevent IFileDialog from appending the wildcard pattern to the file type description?如何防止 IFileDialog 将通配符模式附加到文件类型描述中?
【发布时间】:2011-08-30 09:44:24
【问题描述】:

在新的 Windows 版本上(至少在 Windows 7 上如此,但我有理由相信它会在 Vista 上发生)IFileDialog(因此IFileOpenDialogIFileSaveDialog)会自动将通配符模式附加到文件中如果他们没有找到,请输入描述。

这是一个很好的功能,可以让使用更轻松,同时增强指南的一致性和执行性。但有时这是不希望的。如果接受的扩展名很多(如“所有图像”),则相应的组合框条目太长。最糟糕的是,这甚至没有记录在案,我只在CodeProject article 找到了关于它的注释(证实了我的观察)。

在 Windows 7 上,向后兼容性检查(如 CodeProject article 所述)不是那么强大,并且似乎任何手动附加到描述的模式都会阻止自动附加。对another question 的回答已经指出了这一点。然而,这种解决方案远非理想。 (我决定再次问同样的问题,因为我认为 previous one 的标记和描述不佳:(1)我首先通过查看 StackOverflow 提出的类似问题找到了它,我之前在 Google 中的查询没有找到它并且( 2)这个问题是普遍的,不限于德尔福。)

如何预防?

请注意,我必须使用 IFileDialog,因为我需要它提供的自定义设置。 (因此切换到由GetOpenFileNameGetSaveFileName 生成的对话框不是一种选择。)

【问题讨论】:

  • 这是一个骗子,不管你如何证明它是正确的。您链接到的另一个问题提供了一个不是 Delphi 特定的答案,并且您在这里确实没有提出任何不同的要求(或提供了除 CodeProject 链接之外的任何其他信息)。
  • 那里提供的答案并不令人满意。它甚至没有被接受,这证明了这一点。而且我确实相信必须有一些解决方案,只有以大大减少看到它的人数的方式提出问题。
  • 所以也许让我们等一段时间,如果这个问题确实引起了更多的关注,那就好了。如果没有,那么让我们关闭它。
  • 你最好把赏金放在另一个问题上。
  • @David Heffernan:我考虑过。但没有这样做,因为我在谷歌或这里的初始搜索中没有找到这个问题。也许我应该重新考虑一下。

标签: winapi windows-7 windows-vista filedialog


【解决方案1】:

嗯,MSDN 提到 IFileDialog.SetFilter 在 Windows 7 中被弃用。在这种情况下,我猜你必须使用 IFileDialog.SetFileTypes 来设置文件扩展名模式。正如您所说的通配符扩展已经存在,答案是使用这两个函数之一覆盖扩展模式。

由于缺少语言标签,没有示例代码。不过,指向 SetFileTypes 的链接显示了一个很好的示例。

【讨论】:

  • 我不工作。如果我在 Windows 7 上使用 `{"All Files", "*.*"}' 调用 SetFielTypes,对话框将显示(在组合框中)'All Files (*.*)'。
  • 这是人们所期望的,不是吗?你的问题不是反过来吗?
  • 是的。我不想要它,因为扩展名列表很长(例如所有图像......)。而且我认为这个问题在我想要的方面是相当明显的。
猜你喜欢
  • 2011-07-18
  • 2011-02-12
  • 2023-03-22
  • 2011-07-24
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
相关资源
最近更新 更多