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