Delphi 突出显示时的菜单背景色(clHightlightText不起作用)

Delphi 突出显示时的菜单背景色(clHightlightText不起作用),delphi,c++builder,vcl,Delphi,C++builder,Vcl,我需要做一些自定义绘制,当自定义控件中的项目被按下或悬停在上面时,我希望显示高亮显示的项目状态。 注:这是针对Windows 2000和更高操作系统上的高对比度(或选中时)的非主题绘画 if(状态!=rsNormal) { 画布->画笔->颜色=CLHIGHT; 画布->字体->颜色=clWhite;//clHightlightText; } 其他的 { 画布->画笔->颜色=clBtnFace; 画布->字体->颜色=clBtnText; } 上面的当前代码非常适合我的需要,但是Font->

我需要做一些自定义绘制,当自定义控件中的项目被按下或悬停在上面时,我希望显示高亮显示的项目状态。 注:这是针对Windows 2000和更高操作系统上的高对比度(或选中时)的非主题绘画

if(状态!=rsNormal)
{
画布->画笔->颜色=CLHIGHT;
画布->字体->颜色=clWhite;//clHightlightText;
}
其他的
{
画布->画笔->颜色=clBtnFace;
画布->字体->颜色=clBtnText;
}
上面的当前代码非常适合我的需要,但是
Font->Color
clwhite
当然是我在Win2K、WinXP等中看到的情况。但是它不是系统颜色,我担心在某些情况下,
clHighlight
可能是一种与
clwhite
对比度不够的颜色

<> >提到: CLHOTTLUTTXEX/<代码>,这基本上是我所需要的,但是我的编译器C++ +Builder 2009不知道这个系统的颜色,而且文档没有提供一个链接(不同于其他颜色)的事实也不好看。
如何获得突出显示文本的非硬编码值?

计算出来了。。。有根据的猜测

美国联邦法规。其余系统颜色的文档我尝试了以下操作:

TColor clHightlightText = TColor(clSystemColor | COLOR_HIGHLIGHTTEXT);
这在Win2K、WinXP和Win7上运行良好
奇怪的是,文档和C++ Builder 2009都不能正确地处理这些问题,仍然想知道原因是什么?旧操作系统中缺少支持?无论如何,从Win2K和更高版本来看,它似乎工作正常。

clHighlightText
是正确的使用方法。它在定义所有
cl..
颜色常量的相同
$(BCB)\include\vcl\Graphics.hpp头文件中定义,包括您正在使用的其他颜色常量:

static const TColor clHighlight = -16777203;
static const TColor clHighlightText = -16777202;
static const TColor clBtnFace = -16777201;
...
static const TColor clBtnText = -16777198;
...
static const TColor clWhite = 16777215;

这些常量已经存在很长时间了,可以追溯到早期的C++Builder版本。您的版本(CB2009)中肯定有它们(事实上,上面的定义是从CB2009中复制的)。

尽管这会起作用,但它也是多余的,因为VCL已经为您定义了
clHighlightText
。查看
Graphics.hpp
,其中定义了所有
cl.
常量
clHighlightText
在那里。
clHightlightText
应该是
clHighlightText
。这就是为什么:)啊。。。我现在看到了!!联机和系统安装的帮助文件都有输入错误!clHightlightText应该是
clHighlightText
这就是问题所在!!(一个'不'太多…血也很难发现…至少对我来说)你链接到的文档是旧的。目前的文件是。另请参见。@RemyLebeau-我想我最终得到的是旧的帮助版本,因为我搜索了“clHightlightText”。因此,由于拼写错误,我最终找到了同样有拼写错误的在线版本。