2013-02-21 274 views
0

我正在开发一个使用Embarcadero VCL C++ IDE for Windows OS的GUI应用程序。作为这个项目的一部分,我必须改变按钮相对于外部状态的颜色。 我知道windows32 API不允许改变按钮的颜色。 可否请您提示我,如何更改按钮颜色?如何更改按钮颜色?

+0

你可能想用winapi或者其他东西来标记这个,所以人们知道你在使用什么API。 – Cornstalks 2013-02-22 02:25:39

回答

0

是否要更改按钮的背景颜色或其文本颜色?

由于windows已经使用了一段时间的视觉主题,如果你有commctrl加载并包含清单文件,该按钮将使用默认(当前)主题绘制。 (a)自定义绘制背景(b)在正常绘制过程中改变文本颜色(c)绘制没有主题的按钮(即绘制“平面”按钮)。

您可以简单地绘制位图按钮,根据按钮的状态更改位图。您也可以使用单个位图,根据状态使用HSL或HSV色彩空间进行着色。

至于平面类型的按钮,我认为你可以改变它的背景颜色,就像你可以改变文本的颜色一样 - 通过在标准绘制过程中插入和改变3D_FACE的颜色(或不管它是什么,我忘了)随便你想要什么。

如果你看看Windows XP附带的计算器,你可以看到一个改变文本颜色的例子。

CodeProject.com可能有一堆文章,这将有助于这项努力。 :)

+0

感谢您的建议。 – srvolatile 2013-02-25 11:59:12

+0

我希望更改按钮的背景颜色(NOT TEXT)。我创建了小的彩色位图,并尝试在位图按钮上显示它。但是,这个位图图片没有覆盖整个按钮。我会研究你的建议。再次感谢您的回复。 – srvolatile 2013-02-25 12:11:35