我正在使用适用于Windows操作系统的Embarcadero VCL c ++ IDE开发GUI应用程序。作为这个项目的一部分,我必须改变按钮的颜色相对于外部状态。 我知道windows32 API不允许更改按钮的颜色。 你能建议我,如何更改按钮颜色?
答案 0 :(得分:0)
是否要更改按钮的背景颜色或文本颜色?
由于Windows现在已经使用了一些视觉主题,如果你加载了commctrl并包含一个清单文件,那么将使用默认(当前)主题绘制该按钮。
我可以看到的选项包括(a)自定义绘制背景(b)在正常绘制过程中更改文本颜色(c)绘制没有主题的按钮(即绘制“平面”按钮)。
您可以简单地绘制位图按钮,根据按钮的状态更改位图。您也可以使用单个位图,使用HSL或HSV颜色空间对其进行着色,具体取决于状态。
对于平面类型的按钮,我认为您可以更改它的背景颜色,就像更改文本颜色一样 - 通过在标准绘制过程中进行干预并从3D_FACE更改颜色(不管它是什么,我都会忘记你想要的任何东西。
如果查看Windows XP附带的计算器,可以看到更改文本颜色的示例。
CodeProject.com可能有一堆文章可以帮助这项工作。 :)