在新的 Windows 版本上(至少在 Windows 7 上是这样,但我有理由相信它会在 Vista 上发生)IFileDialog
(因此IFileOpenDialog
and IFileSaveDialog
)如果找不到通配符模式,则会自动将通配符模式附加到文件类型描述中。
这是一个很好的功能,可以使使用更容易,同时增强指南的一致性和执行性。但有时这是不希望的。如果接受的扩展名很多(如“所有图像”),则相应的组合框条目太长。最糟糕的是,这甚至没有记录在案,我只在CodeProject 文章中找到了关于它的注释(证实了我的观察) 。
在 Windows 7 上,向后兼容性检查(如CodeProject 文章所述)不是那么强大,并且似乎任何手动附加到描述的模式都会阻止自动附加。另一个问题的答案已经指出了这一点。然而,这种解决方案远非理想。(我决定再次问同样的问题,因为我认为前一个问题的标记和描述都很差:(1)我首先通过查看 StackOverflow 提出的类似问题找到了它,我之前在 Google 中的查询没有找到它,并且(2 ) 这个问题是普遍的,不限于 Delphi。)
如何防止这种情况?
请注意,我必须使用IFileDialog
它,因为我需要它提供的自定义。(因此切换到由GetOpenFileName
and生成的对话框GetSaveFileName
不是一种选择。)