3

使用 Delphi 7 尝试从窗口主题更改软件标题栏的颜色。我已经看到允许您更改所有程序的所有标题栏的代码,但我只是想更改我的程序。

有人见过/做过这样的事吗?如果需要,不要介意为组件付费。

4

3 回答 3

4

我相信当 Windows应该绘制包括标题栏在内的窗口框架时,它会向应用程序发送WM_NCPAINT消息。默认行为是回退到绘制默认框架的默认 Windows 处理程序。您可以替换它,或者在之后重新绘制标题栏部分。

这看起来像一个很好的例子:http ://delphi.about.com/od/adptips2006/qt/draw_captionbar.htm

于 2010-01-07T08:16:46.673 回答
2

Stijn 的回答并不完整,因为窗口的标题和边框在(取消)激活时也会重新绘制。所以除了WM_NCPAINT你还需要处理WM_NCACTIVATE。不幸的是,这不能简单地替换,因为默认消息处理程序中还有其他代码(除了绘图代码)需要执行。但是调用默认处理程序又会导致首先绘制默认标题和边框,然后您需要使用您想要的颜色进行绘制,从而导致闪烁。

解决此问题的一种方法是调整调用默认消息处理程序的绘图区域。有关使用 Windows API 调用的示例,请参阅“使用主题在 XP 上绘制标题栏” ,该调用应该可以轻松转换为 Delphi。请注意,这仅处理标题栏中的文本,但原则适用。

于 2010-01-07T11:51:15.767 回答
1

你可以看看一个皮肤库。 DevExpress 的ExpressSkin是一款不错的产品。

于 2010-01-07T18:29:45.470 回答