0

我正在使用 Embarcadero VCL c++ IDE for windows OS 开发一个 GUI 应用程序。作为该项目的一部分,我必须根据外部状态更改按钮的颜色。我知道 windows32 API 不允许更改按钮的颜色。您能否建议我,如何更改按钮颜色?

4

1 回答 1

0

你想改变按钮的背景颜色,还是它的文本颜色?

由于 windows 使用视觉主题已有一段时间了,如果您已加载 commctrl 并包含清单文件,则将使用默认(当前)主题绘制按钮。

我可以看到的选项包括(a)自定义绘制背景(b)在正常绘制过程中更改文本颜色(c)绘制没有主题的按钮(即绘制“平面”按钮)。

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

至于平面类型的按钮,我认为你可以改变它的背景颜色,就像你可以改变文本的颜色一样——通过在标准绘制过程中进行干预并从 3D_FACE (或其他任何颜色)更改颜色是,我忘了)任何你想要的。

如果您查看 Windows XP 附带的计算器,您会看到更改文本颜色的示例。

CodeProject.com 可能有很多文章可以帮助完成这项工作。:)

于 2013-02-22T06:22:17.910 回答