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