Активировать тему для окна, если отключено для всей системы
Я пишу Win32-приложение для Windows (без MFC или Qt) в системе Windows 7, ориентированное на 7, 8 и 10.
Мое приложение определяет, активирован ли Aero, и правильно обрабатывает как аэро, так и не аэро, но рендерится ужасно, когда в ОС нет визуального стиля (т. Е. Флажок "Применить визуальные стили для окон и кнопок" отключен в Performance). Диалог настроек панели управления).
Я могу определить, запущено ли мое приложение без тем с IsAppThemed
но я не могу понять, как напрямую создать окно с включенным стилем или принудительно включить стиль... это то, что я пытался, и он не работает:
case WM_CREATE: {
if (IsAppThemed() == FALSE) {
// No visual style is applied
SetThemeAppProperties(STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS);
SendMessage(hWnd, WM_THEMECHANGED, 0, 0);
RedrawWindow(hWnd, 0, 0, RDW_UPDATENOW);
}
} break;
Даже не
SetWindowTheme(hWnd, 0, 0);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
работал.
Как я могу принудительно включить стили, если обнаружу, что они отключены?
1 ответ
Если пользователь решает отключить темы, вы не можете отменить это решение. Вам просто придется с этим справиться. Очевидный путь вперед - улучшить поведение вашего приложения в этом сценарии.