Графический интерфейс GDI в Microsoft Windows
5b239685

Системные цвета


Как выбрать цвета для объектов приложения?

Самый простой (и самый плохой) способ заключается в том, что в исходном тексте приложения вы указываете цвета как комбинации RGB-компонент. Очевидный недостаток этого способа заключается в том, что пользователь не сможет изменить эти цвета. Даже если у вас идеальный вкус и вы сможете подобрать превосходную цветовую гамму, следует учитывать, что ваше приложение может быть запущено на монохромном мониторе, где отдельные цвета преобразуются в градации серого цвета. В результате некоторые элементы изображения могут стать плохо различимыми или пропадут вовсе.

Более удачный способ заключается в использовании так называемых системных цветов. Системные цвета - это цвета, с помощью которых операционная система Windows рисует отдельные элементы окон и органов управления.

Приложение Control Panel, которое входит в состав Windows, позволяет вам изменять системные цвета, обеспечивая приемлемую цветовую палитру практически для любого типа видеомонитора.

Для того чтобы узнать цвет той или иной системной компоненты экрана Windows, вы можете вызвать функцию GetSysColor :

COLORREF WINAPI GetSysColor(int nDspElement);

В качестве единственного параметра следует передать этой функции идентификатор компоненты:



Идентификатор Описание
COLOR_ACTIVEBORDER Рамка вокруг активного окна
COLOR_ACTIVECAPTION Заголовок активного окна
COLOR_APPWORKSPACE Фон окна приложения MDI (приложение, использующее многооконный интерфейс)
COLOR_BACKGROUND Окно Desktop
COLOR_BTNFACE Кнопка
COLOR_BTNHIGHLIGHT Выбранная кнопка
COLOR_BTNSHADOW Тень, "отбрасываемой" кнопкой
COLOR_BTNTEXT Текст надписи на поверхности кнопки
COLOR_CAPTIONTEXT Текст заголовка окна, кнопки изменения размера, кнопки полосы просмотра
COLOR_GRAYTEXT Текст серого цвета
COLOR_HIGHLIGHT Фон выбранного элемента в органе управления
COLOR_HIGHLIGHTTEXT Текст для выбранного органа управления
COLOR_INACTIVEBORDER Рамка вокруг неактивного окна
COLOR_INACTIVECAPTION Заголовок неактивного окна
COLOR_INACTIVECAPTIONTEXT Текст заголовка для неактивного окна
COLOR_MENU Фон меню
COLOR_MENUTEXT Текст меню
COLOR_SCROLLBAR Полоса просмотра
COLOR_WINDOW Фон окна
COLOR_WINDOWFRAME Рамка окна
COLOR_WINDOWTEXT Текст в окне
<
Ваше приложение может выбрать для использования некоторые из системных цветов, при этом пользователь сможет влиять на внешний вид вашего приложения с помощью Control Panel, настраивая цвета на свой вкус.

Вы можете создать приложение, изменяющее системные цвета. Для этого обратите внимание на функцию SetSysColors :

void WINAPI SetSysColors( int cDspElements, const int FAR* lpnDspElements, const COLORREF FAR* lpdwRgbValues);

Параметр cDspElements определяет количество элементов, для которых изменяются цвета.

Параметр lpnDspElements представляет собой указатель на массив идентификаторов элементов изображения, список которых приведен выше.

Перед вызовом функции вам надо подготовить также массив из cDspElements элементов, содержащих новые значения для цветов, передав функции адрес этого массива через параметр lpdwRgbValues.

Внесенные изменения сохраняются только до очередного перезапуска операционной системы Windows.

После вызова этой функции все запущенные приложения получают сообщение WM_SYSCOLORCHANGE , которое информирует их об изменении системных цветов. Windows также перерисовывает на экране все видимые окна.


Содержание раздела