Я сделал ColorButton
подкласс CButton
, установив флаг BS_OWNERDRAW
в стилях.
Он работает нормально: я могу установить его текст, фон и т. Д. И т. Д.
Однако я не хочу устанавливать второстепенные цвета вручную (выделение, тень и т. Д.). У меня есть эвристика, чтобы выбрать белый или черный для текста на основе фона.Я мог бы сделать то же самое для других второстепенных цветов, но мои формулы отличались бы от того, что делал бы Windows, если бы цвет был таким же, как фон, и, следовательно, выглядели бы странно.Итак:
Вопрос: есть ли способ узнать, что Windows вернула бы для GetSysColor(COLOR_BTNSHADOW)
с заданным цветом фона?
Чтобы предвидеть ответ, я вижу CMFCButton
позволяет настраивать цвета без создания целого подкласса.То, что я видел снова, позволяет микроуправлению настраивать каждый цвет, но не обладает способностью высокого уровня, которую я ищу.Я бы предпочел придерживаться своего решения, поскольку оно уже запущено и работает на XP и более поздних версиях.(Это бесплатная утилита, так что, кто знает, что могут иметь старые пользователи ОС.) Тем не менее, если есть решение CMFCButton
, которое также может представлять интерес.