Функция 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 .

Чтобы создать COLORREF, используйте макрос RGB .

Возвращаемое значение

Тип: 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
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел

COLORREF

GetSysColor

RGB