Я пишу Win32-приложение для Windows (без MFC или Qt) в системе Windows 7, ориентированное на 7, 8 и 10.
Мое приложение определяет, включен ли Aero, и корректно обрабатывает как аэро, так и не аэро, но когда нет визуального стиля в ОС (т. е. флажок «Применить визуальные стили для окон и кнопок» отключен в диалоговом окне «Параметры производительности» панели управления).
Я могу определить, запущено ли мое приложение без тем с 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);
работал.
Как я могу принудительно включить стили, если обнаружу, что они отключены?
Если пользователь решает отключить темы, вы не можете отменить это решение. Вам просто придется с этим справиться. Очевидный путь вперед — улучшить поведение вашего приложения в этом сценарии.
Других решений пока нет …