0

有一个WinAPI函数获取系统颜色(COLOR_ACTIVEBORDER)这应该返回此颜色,但在某些系统上,边框的实际颜色与标准颜色不同(显然,由于Windows的颜色自定义)。然而,获取系统颜色()总是返回标准颜色,即灰色。

有什么方法可以得到系统使用的实际边框颜色吗?

更新我尝试过的几个变体:

var color=系统颜色。桌面;//对的var color1=系统颜色。控件文本;//不正确;始终为黑色,无论Windows主题处于活动状态var color=GetThemeSysColor(HTHEME.NULL,SystemColorIndex.color_DESKTOP);//对的var color1=GetThemeSysColor(HTHEME.NULL,SystemColorIndex.COLOR_BTNTEXT);//不正确的var theme=OpenThemeData(HWND.NULL,“按钮”);var color=GetThemeSysColor(主题,color_BTNTEXT);//不正确的var theme=OpenThemeData(_button.Handle,“button”);var color=GetThemeSysColor(主题,color_BTNTEXT);//不正确的

1答案1

重置为默认值
0

根据文件:GetSysColor函数

COLOR_ACTIVEBORDER:活动窗口边框。Windows 10或更高版本:此值不受支持。

你可以试试GetThemeSysColorBrush函数具有TMT_活动订单TMT_INACTIVE边界.

10
  • 此函数为边框颜色提供相同即错误的结果。 评论 6月20日17:19
  • 如果主题数据句柄不是NULL句柄,GetThemeSysColorBrush将返回与视觉样式的SysMetrics部分中指定颜色匹配的画笔。如果主题数据句柄为NULL,则函数将返回与全局系统颜色匹配的画笔。主题数据句柄是否为NULL? 评论 6月21日3:08
  • 我为当前窗口调用GetWindowTheme。但是,它返回0。我想知道这是不是正确的结果? 评论 6月21日16:11
  • 无论如何,这种颜色也不适合系统范围的设置。 评论 6月21日16:15
  • 如果返回值为NULL,请使用非可视样式的绘图函数。我建议您尝试启用视觉样式。 评论 2天前

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.