Активировать тему для окна, если отключено для всей системы

Я пишу 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 ответ

Решение

Если пользователь решает отключить темы, вы не можете отменить это решение. Вам просто придется с этим справиться. Очевидный путь вперед - улучшить поведение вашего приложения в этом сценарии.

Другие вопросы по тегам