【问题标题】:OFN_ENABLEHOOK modifies the look of GetOpenFileName()OFN_ENABLEHOOK 修改 GetOpenFileName() 的外观
【发布时间】:2011-06-11 12:00:20
【问题描述】:

如果钩子过程只是返回FALSE而不做任何事情,为什么向GetOpenFileName()添加一个钩子过程(带有OFN_ENABLEHOOKOFN_EXPLORER标志)会导致在Windows 7中显示一个不同的对话框?


更新:

Apparently 用钩子获得 Vista/Windows 7 的外观是不可能的...有人可以确认或反驳吗?

【问题讨论】:

    标签: winapi getopenfilename ofnhookproc


    【解决方案1】:

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

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

    【讨论】:

    • 为了迂腐,OFN_ENABLETEMPLATE 提供资源,OFN_ENABLEHOOK 只是回调函数。您可以在不添加自定义资源的情况下进行挂钩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多