我试图弄清楚在 Vista 或 Win7 中使用 Aero 主题时如何在窗口的标题栏上绘制自定义按钮。我需要在不更改原始代码的情况下将其应用于许多不同的应用程序,因此这将在一个挂钩过程中。由于无法更改原始代码,因此无法使用 DwmExtendFrameIntoClientArea。
我很确定这是可以做到的,或者至少可以很好地伪造,因为我见过一个可以做到这一点的应用程序。在其他应用程序运行时,我已经非常仔细地查看了各种窗口,我不相信他们正在改变窗口样式或将框架扩展到客户区域。
作为测试,我尝试使用 WM_NCPAINT 消息在标题栏上绘制一些东西。当 Aero 主题处于活动状态时,我绘制的任何内容都不会出现。如果我得到整个屏幕而不是窗口的 DC,那么我可以“绘制”到标题栏上,但当然,它实际上是被绘制到屏幕上的。这种方法存在各种各样的问题,所以这是行不通的。如果有人有任何好主意,甚至是好的提示,我将非常感谢您的帮助!