2011-01-19 123 views
2

为什么加一个钩子程序(与OFN_ENABLEHOOKOFN_EXPLORER标志)到GetOpenFileName()会导致不同的对话框显示在Windows 7中,如果挂钩过程只返回FALSE没有做任何事情?OFN_ENABLEHOOK修改GetOpenFileName()的外观


更新:

Apparently获得VISTA/Windows 7的外观与挂钩是不可能的...有人可以证实或反驳呢?

回答

5

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

你是正确的,当你使用钩子是不可能获得新的外观。相反,您需要使用IFileDialogCustomize界面来自定义对话框。这个功能不那么强大,但会产生与对话框的标准部分更加一致的外观和行为。