使用 Delphi 7 尝试从窗口主题更改软件标题栏的颜色。我已经看到允许您更改所有程序的所有标题栏的代码,但我只是想更改我的程序。
有人见过/做过这样的事吗?如果需要,不要介意为组件付费。
我相信当 Windows应该绘制包括标题栏在内的窗口框架时,它会向应用程序发送WM_NCPAINT消息。默认行为是回退到绘制默认框架的默认 Windows 处理程序。您可以替换它,或者在之后重新绘制标题栏部分。
这看起来像一个很好的例子:http ://delphi.about.com/od/adptips2006/qt/draw_captionbar.htm
Stijn 的回答并不完整,因为窗口的标题和边框在(取消)激活时也会重新绘制。所以除了WM_NCPAINT
你还需要处理WM_NCACTIVATE
。不幸的是,这不能简单地替换,因为默认消息处理程序中还有其他代码(除了绘图代码)需要执行。但是调用默认处理程序又会导致首先绘制默认标题和边框,然后您需要使用您想要的颜色进行绘制,从而导致闪烁。
解决此问题的一种方法是调整调用默认消息处理程序的绘图区域。有关使用 Windows API 调用的示例,请参阅“使用主题在 XP 上绘制标题栏” ,该调用应该可以轻松转换为 Delphi。请注意,这仅处理标题栏中的文本,但原则适用。
你可以看看一个皮肤库。 DevExpress 的ExpressSkin是一款不错的产品。