Как выбрать цвета для объектов приложения?
Самый простой (и самый плохой) способ заключается в том, что в исходном тексте приложения вы указываете цвета как комбинации 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 | Текст в окне |