为什么向 GetOpenFileName() 添加一个钩子过程(带有OFN_ENABLEHOOK
和OFN_EXPLORER
标志)会导致在 Windows 7 中显示一个不同的对话框,如果钩子过程只是返回FALSE
而不做任何事情?
更新:
显然,用钩子来获得 Vista/Windows 7 的外观是不可能的……有人可以确认或反驳吗?
为什么向 GetOpenFileName() 添加一个钩子过程(带有OFN_ENABLEHOOK
和OFN_EXPLORER
标志)会导致在 Windows 7 中显示一个不同的对话框,如果钩子过程只是返回FALSE
而不做任何事情?
更新:
显然,用钩子来获得 Vista/Windows 7 的外观是不可能的……有人可以确认或反驳吗?
这样做的原因是 MS 完全重新组织了 Vista 的文件对话框。挂钩用于通过提供资源文件来扩展文件对话框。这给了定制者太多的权力。他们可以很容易地修改对话框的标准元素,而且确实很多应用程序都这样做了。对话框的重组会破坏许多使用钩子的应用程序。那些人会试图操纵对话框中不存在的元素,或者以不同的方式实现。对话框的旧版本仍然供此类应用程序“获取它们的挂钩”。
你是对的,当你使用钩子时不可能获得新的外观。相反,您需要使用IFileDialogCustomize接口来自定义对话框。这不太强大,但确实会导致外观和行为与对话框的标准部分更加一致。