Как yolu, возможно, заметил, MS представила в Windows 10 современный вид «тематики», касающийся основных элементов ОС, таких как меню «Пуск» и панель задач. В более новых версиях вы можете выбрать «светлую» тему в качестве альтернативы черной теме по умолчанию.
Мне было интересно, есть ли API или крючок для элегантной и (что более важно) эффективной проверки в реальном времени на предмет изменений темы (не нашел ничего в документах MS по этому поводу, но достаточно часто эти драгоценные камни довольно скрыты там ИМХО).
Конкретная проблема: если у вас есть настольное приложение со значком на панели задач, высока вероятность, что вы создали его ярким. Почти все современные значки Windows имеют такой стиль (простой и белый, обеспечивающий хорошую читаемость на черной панели задач). Теперь вы можете предоставить другую версию в более темном стиле для светлой темы, но как заметить, когда применить это на лету?
Мне известен ключ реестра в HCU (Software / Microsoft / Windows / CurrentVersion / Themes / Personalize), который я использую прямо сейчас. Однако слепая проверка изменений каждые x миллисекунд кажется довольно неудобной.
Если такой возможности нет, я также рад услышать несколько идей по более эффективной реализации такой проверки.
UISettings
предоставляетColorValuesChanged
событие. Начиная с этого ответа, я смог быстро собрать консольное приложение C ++ / WinRT, которое подписывается на это событие. Я оставляю это, чтобы сделать это реальным ответом для людей, более разбирающихся в C ++ / WinRT. - person zett42   schedule 02.09.2019