在新的Windows版本上(至少在Windows 7上是如此,但我有理由相信它会在Vista上发生)IFileDialog
(以及IFileOpenDialog
和IFileSaveDialog
)会自动附加如果没有找到任何通配符模式到文件类型描述。
这是一个很好的功能,可以提高使用率,同时增强指南的一致性和执行力。但有时它不是所希望的。如果接受的扩展很多(如“所有图像”),则相应的组合框输入太长。最糟糕的是,这甚至没有记录,我只在CodeProject article找到了关于它的说明(确认了我的观察结果)。
在Windows 7上,向后兼容性检查(如CodeProject article所述)不是那么强大,似乎手动追加到描述的任何模式都会阻止自动追加。 another question的回答已经指出了这一点。然而,这种解决方案远非理想。 (我决定再次提出同样的问题,因为我认为previous one标记不清并描述:(1)我首先通过查看StackOverflow建议的类似问题找到它,我之前在谷歌的查询中没有找到它(2)问题是一般性的,不仅限于德尔福。)
如何防止这种情况?
请注意,我必须使用IFileDialog
因为我需要它提供的自定义。 (因此,切换到由GetOpenFileName
和GetSaveFileName
生成的对话框不是一种选择。)
答案 0 :(得分:0)
好吧,MSDN提到了IFileDialog。SetFilter不推荐使用Windows 7.在这种情况下,我猜你必须使用IFileDialog。SetFileTypes来设置文件扩展名模式。正如您所说,通配符扩展已经存在,答案是使用这两个函数之一覆盖扩展模式。
由于缺少语言标记而没有示例代码。 SetFileTypes的链接显示了一个很好的例子。