Системная палитра и статические цвета


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

Когда приложение вызывает функцию SetSystemPaletteUse со значением SYSPAL_NOSTATIC, система освобождает все, кроме двух из зарезервированных записей, давая возможность этим записям получить новые коды цвета, когда приложение впоследствии реализует свою логическую палитру. Сохранение двух записей статического цвета остается сохраненным и устанавливается в белый и черный цвет. Приложение может восстановить зарезервированные записи при помощи вызова SetSystemPaletteUse со значением SYSPAL_STATIC. Оно может определить использование палитры существующей системы при помощи, применив функцию GetSystemPaletteUse.

Кроме того, после установки системной палитры с использованием флажка SYSPAL_NOSTATIC, приложение должно немедленно реализовать свою логическую палитру, вызвать функцию GetSysColor, чтобы сохранить параметры настройки цвета существующей системы, вызвать функцию SetSysColors, чтобы установить системные цвета в допустимые значения, использующие черно-белый, и, наконец, отправить сообщение WM_SYSCOLORCHANGE другим окнам верхнего уровня, чтобы дать им возможность быть перерисованными новыми системными цветами. Устанавливая системные цвета, использующие черный и белый цвета, приложение должно удостовериться, что смежные или перекрывающие элементы, такие как рамки окна и границы, установлены в черный и белый, соответственно.

Прежде, чем приложение потеряет фокус ввода, закроет свое окно, или завершит работу, оно должно немедленно вызвать SetSystemPaletteUse со значением SYSPAL_STATIC, реализовать его логическую палитру, восстановить системные цвета с их предыдущими значениями и отправить сообщение WM_SYSCOLORCHANGE. Система отправляет сообщение WM_PAINT любому окну, на которое оказывается влияние изменение системного цвета. Приложения, которые имеют кисти, использующие существующие системные цвета, должны удалить эти кисти и обновить их используя новые системные цвета.

Назад в оглавление
На главную страницу

Hosted by uCoz