Обычно переключатель Dark / Light-Theme предназначен только для «современных» приложений UWP. Вы можете проверить, что калькулятор, календарь и контакты меняют цвета, а классические приложения Explorer, Notepad и Paint - нет.
Я не уверен, хотите ли вы портировать Tk в UWP, потому что вы, кажется, не делаете никаких шагов в этом направлении. В случае классических приложений темный режим проблематичен, поскольку базовые элементы управления Windows (кнопки, метки, поля редактирования) не поддерживают его.
Если вы действительно хотите что-то изменить в ответ на переключатель настройки Light / Dark в классическом приложении, получите значение DWORD
из HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme
bool IsDarkThemeActive()
{
DWORD type;
DWORD value;
DWORD count = 4;
LSTATUS st = RegGetValue(
HKEY_CURRENT_USER,
TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"),
TEXT("AppsUseLightTheme"),
RRF_RT_REG_DWORD,
&type,
&value,
&count );
if ( st == ERROR_SUCCESS && type == REG_DWORD )
return value == 0;
return false;
}
При изменении настройки «Свет / Темнота» окна верхнего уровня получают сообщение WM_SETTINGCHANGE
.