1

在新的 Windows 版本上(至少在 Windows 7 上是这样,但我有理由相信它会在 Vista 上发生)IFileDialog(因此IFileOpenDialogand IFileSaveDialog)如果找不到通配符模式,则会自动将通配符模式附加到文件类型描述中。

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

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

如何防止这种情况?

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

4

1 回答 1

0

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

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

于 2011-05-22T21:20:02.677 回答