OFN_ENABLEHOOK 修改 GetOpenFileName() 的外观

2023-12-13

为什么添加一个钩子过程(用OFN_ENABLEHOOK and OFN_EXPLORERflags) 到 GetOpenFileName() 会导致在 Windows 7 中显示不同的对话框(如果挂钩过程只是返回)FALSE不做任何事情?


Update:

显然用钩子获得 Vista/Windows 7 的外观是不可能的......有人可以证实或反驳这一点吗?


原因是 MS 完全重新组织了 Vista 的文件对话框。挂钩用于通过提供资源文件来扩展文件对话框。这给了定制者太多的权力。他们可以很容易地修改对话框的标准元素,事实上许多应用程序都这样做了。对话框的重组会破坏许多使用钩子的应用程序。这些会尝试操纵对话框中不存在的元素,或者以不同的方式实现。对话框的旧版本仍然可供此类应用程序“使用”。

你是对的,当你使用钩子时不可能获得新的外观。相反,您需要使用IFileDialog自定义自定义对话框的界面。这功能不太强大,但确实会导致外观和行为与对话框的标准部分更加一致。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OFN_ENABLEHOOK 修改 GetOpenFileName() 的外观 的相关文章

随机推荐