gpt4 book ai didi

button - 如何在不扩展非客户区的情况下在 Aero 主题标题栏上绘制自定义按钮?

转载 作者:行者123 更新时间:2023-12-05 01:19:37 25 4
gpt4 key购买 nike

我想弄清楚在 Vista 或 Win7 中使用 Aero 主题时如何在窗口的标题栏上绘制自定义按钮。我需要在不更改原始代码的情况下将其应用于许多不同的应用程序,因此这将在一个 Hook 过程中。由于无法更改原始代码,因此无法使用 DwmExtendFrameIntoClientArea。

我很确定这是可以做到的,或者至少可以很好地伪造,因为我见过可以做到这一点的应用程序。当这个应用程序正在运行时,我已经仔细查看了各种窗口,我不相信它们会改变窗口样式或将框架扩展到客户区。

作为测试,我尝试使用 WM_NCPAINT 消息在标题栏上绘制一些内容。当 Aero 主题处于事件状态时,我绘制的任何内容都不会出现。如果我得到整个屏幕的 DC,而不仅仅是窗口,那么我可以“绘制”到标题栏上,当然,它确实被绘制到屏幕上。这种方法存在各种问题,因此行不通。如果有人有任何好的想法,甚至好的提示,我将不胜感激!

最佳答案

由于您无法扩展客户区,一种技术是创建一个 float 的 WS_EX_LAYERED 子窗口,并将所有者设置为顶级窗口,这样它就停留在该窗口之上。

您可以为 WM_MOVEWM_SIZE 消息 Hook 目标窗口的 WndProc。

关于button - 如何在不扩展非客户区的情况下在 Aero 主题标题栏上绘制自定义按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3242683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com