如何防止IFileDialog将通配符模式附加到文件类型描述?

时间:2011-05-21 22:44:51

标签: winapi windows-7 windows-vista filedialog

在新的Windows版本上(至少在Windows 7上是如此,但我有理由相信它会在Vista上发生)IFileDialog(以及IFileOpenDialogIFileSaveDialog)会自动附加如果没有找到任何通配符模式到文件类型描述。

这是一个很好的功能,可以提高使用率,同时增强指南的一致性和执行力。但有时它不是所希望的。如果接受的扩展很多(如“所有图像”),则相应的组合框输入太长。最糟糕的是,这甚至没有记录,我只在CodeProject article找到了关于它的说明(确认了我的观察结果)。

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

如何防止这种情况?

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

1 个答案:

答案 0 :(得分:0)

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

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