如何防止 IFileDialog 将通配符模式追加到文件类型说明



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

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

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

如何预防这种情况?

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

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

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

最新更新