setSysColors 函数 (winuser.h)
设置指定显示元素的颜色。 显示元素是窗口的各个部分,以及显示在系统显示屏幕上的显示器。
语法
BOOL SetSysColors(
[in] int cElements,
[in] const INT *lpaElements,
[in] const COLORREF *lpaRgbValues
);
参数
[in] cElements
类型: int
lpaElements 数组中的显示元素数。
[in] lpaElements
类型: const INT*
一个整数数组,指定要更改的显示元素。 有关显示元素的列表,请参阅 GetSysColor。
[in] lpaRgbValues
类型: const COLORREF*
COLORREF 值的数组,其中包含新的红色、绿色、蓝色 (RGB) lpaElements 参数指向的数组中的显示元素的颜色值。
返回值
类型: BOOL
如果函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
SetSysColors 函数将WM_SYSCOLORCHANGE消息发送到所有窗口,以通知它们颜色的变化。 它还指示系统重新绘制所有当前可见窗口的受影响部分。
最好遵循用户指定的颜色设置。 如果要编写应用程序以允许用户更改颜色,则适合使用此函数。 但是,此函数仅影响当前会话。 系统终止时,不会保存新颜色。
示例
以下示例演示如何使用 GetSysColor 和 SetSysColors 函数。 首先,该示例使用 GetSysColor 检索窗口背景和活动描述文字的颜色,并使用十六进制表示法显示红色、绿色、蓝色 (RGB) 值。 接下来,示例使用 SetSysColors 将窗口背景的颜色更改为浅灰色,并将活动标题栏更改为深紫色。 在 10 秒延迟后,该示例使用 SetSysColors 还原这些元素的先前颜色。
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
void main()
{
int aElements[2] = {COLOR_WINDOW, COLOR_ACTIVECAPTION};
DWORD aOldColors[2];
DWORD aNewColors[2];
// Get the current color of the window background.
aOldColors[0] = GetSysColor(aElements[0]);
printf("Current window color: {0x%x, 0x%x, 0x%x}\n",
GetRValue(aOldColors[0]),
GetGValue(aOldColors[0]),
GetBValue(aOldColors[0]));
// Get the current color of the active caption.
aOldColors[1] = GetSysColor(aElements[1]);
printf("Current active caption color: {0x%x, 0x%x, 0x%x}\n",
GetRValue(aOldColors[1]),
GetGValue(aOldColors[1]),
GetBValue(aOldColors[1]));
// Define new colors for the elements
aNewColors[0] = RGB(0x80, 0x80, 0x80); // light gray
aNewColors[1] = RGB(0x80, 0x00, 0x80); // dark purple
printf("\nNew window color: {0x%x, 0x%x, 0x%x}\n",
GetRValue(aNewColors[0]),
GetGValue(aNewColors[0]),
GetBValue(aNewColors[0]));
printf("New active caption color: {0x%x, 0x%x, 0x%x}\n",
GetRValue(aNewColors[1]),
GetGValue(aNewColors[1]),
GetBValue(aNewColors[1]));
// Set the elements defined in aElements to the colors defined
// in aNewColors
SetSysColors(2, aElements, aNewColors);
printf("\nWindow background and active border have been changed.\n");
printf("Reverting to previous colors in 10 seconds...\n");
Sleep(10000);
// Restore the elements to their original colors
SetSysColors(2, aElements, aOldColors);
}
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |