平台 SDK: Windows 系统信息

GetSysColor

GetSysColor函数检索指定显示元素的当前颜色。 显示元素是显示在系统显示屏幕上的窗口和显示的部分。

DWORD GetSysColor(
  int nIndex   // 显示元素
);

参数

  • nIndex

  • [in] 指定要检索其颜色的显示元素。 该参数可以是以下值之一。

    含义
    COLOR_3DDKSHADOW阴影为三维显示元素。
    COLOR_3DFACE, COLOR_BTNFACE面向三维显示元素和对话框背景的颜色。
    COLOR_3DHILIGHT, COLOR_3DHIGHLIGHT, COLOR_BTNHILIGHT, COLOR_BTNHIGHLIGHT突出显示三维显示元素的颜色(面向光源的边缘)。
    COLOR_3DLIGHT三维显示元素的浅色(面向光源的边缘)。
    COLOR_3DSHADOW, COLOR_BTNSHADOW三维显示元素的阴影颜色(背离光源的边缘)。
    COLOR_ACTIVEBORDER活动窗口边框。
    COLOR_ACTIVECAPTION活动窗口标题栏。

    Windows 98/Me, Windows 2000/XP: 如果启用了渐变效果,则指定活动窗口标题栏的颜色渐变中的左侧颜色。

    COLOR_APPWORKSPACE多文档界面(MDI)应用程序的背景颜色。
    COLOR_BACKGROUND, COLOR_DESKTOP桌面。
    COLOR_BTNTEXT按钮上的文本。
    COLOR_CAPTIONTEXT标题,大小框和滚动条箭头框中的文本。
    COLOR_GRADIENTACTIVECAPTIONWindows 98/Me, Windows 2000/XP: 活动窗口标题栏的颜色渐变中的右侧颜色。 COLOR_ACTIVECAPTION指定左侧颜色。 使用SPI_GETGRADIENTCAPTIONS和SystemParametersInfo函数来确定是否启用渐变效果。
    COLOR_GRADIENTINACTIVECAPTIONWindows 98/Me, Windows 2000/XP: 非活动窗口标题栏的颜色渐变中的右侧颜色。 COLOR_INACTIVECAPTION指定左侧颜色。
    COLOR_GRAYTEXT灰色(禁用)文本。 如果当前显示驱动程序不支持纯灰色,则此颜色设置为0。
    COLOR_HIGHLIGHT在控件中选择的项目。
    COLOR_HIGHLIGHTTEXT在控件中选择的项目文本。
    COLOR_HOTLIGHTWindows 98/Me, Windows 2000/XP: 用于热追踪项目的颜色。 单击热追踪项目即可执行该项目。
    COLOR_INACTIVEBORDER非活动窗口边框。
    COLOR_INACTIVECAPTION非活动窗口标题。

    Windows 98/Me, Windows 2000/XP: 如果启用了渐变效果,则指定非活动窗口标题栏的颜色渐变中的左侧颜色。

    COLOR_INACTIVECAPTIONTEXT不活动标题中的文字颜色。
    COLOR_INFOBK工具提示控件的背景颜色。
    COLOR_INFOTEXT工具提示控件的文本颜色。
    COLOR_MENU菜单背景。
    COLOR_MENUHILIGHTWindows XP: 菜单显示为平面菜单时用于突出显示菜单项的颜色(请参阅SystemParametersInfo)。 突出显示的菜单项目用COLOR_HIGHLIGHT标出。
    COLOR_MENUBARWindows XP: 菜单显示为平面菜单时菜单栏的背景色(请参阅SystemParametersInfo)。 但是,COLOR_MENU会继续指定菜单弹出框的背景颜色。
    COLOR_MENUTEXT在菜单中的文本。
    COLOR_SCROLLBAR滚动栏灰色区域。
    COLOR_WINDOW窗口背景。
    COLOR_WINDOWFRAME窗框。
    COLOR_WINDOWTEXT在窗口中的文本。


返回值

该函数返回给定元素的红色,绿色,蓝色(RGB)颜色值。

如果nIndex参数超出范围,则返回值为零。 由于零也是有效的RGB值,因此无法使用GetSysColor来确定当前平台是否支持系统颜色。 而是使用GetSysColorBrush函数,如果颜色不受支持,则该函数返回NULL。

备注

单色显示器的系统颜色通常被解释为灰色阴影。

要使用系统颜色笔刷绘画,应用程序应使用GetSysColorBrush(nIndex)而不是CreateSolidBrush(GetSysColor(nIndex)),因为GetSysColorBrush会返回缓存笔刷(而不是分配新笔刷)。

示例代码

有关示例,请参阅更改窗口元素的颜色。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.51和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.