0

我正在面向 7、8 和 10 的 Windows 7 系统上编写 Windows(无 MFC 或 Qt)win32 应用程序。

我的应用程序检测 Aero 是否已启用并正确处理 aero 和非 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);

工作。

如果我检测到样式被禁用,如何强制启用样式?

4

1 回答 1

1

如果用户决定禁用主题,您不能推翻该决定。你只需要应付它。显而易见的前进方式是在这种情况下改进应用程序的行为。

于 2015-12-15T21:45:19.040 回答