从Qt,在Win7下,如何知道显示的是哪个window样式?

From Qt, under Win7, how to know which window style is used for display?

我想解决方法 this bug。所以我需要知道Window7下的用户显示配置是使用"Aero"还是"Classic"风格。

有办法吗?

我试过QApplication::style()->objectName()但是这总是returns我"windowsvista"无论选择什么风格....

这可以通过 WinAPI 来完成。如果是 Windows 7(可能还有 Vista、8 和 10):

// true == Aero theme, false == Classic theme
bool isAeroEnabled()
{
    HMODULE library = LoadLibrary(L"dwmapi.dll");
    bool result = false;
    if (library) {
        BOOL enabled = false;
        HRESULT (WINAPI *pFn)(BOOL *enabled) = (HRESULT (WINAPI *)(BOOL *enabled))(GetProcAddress(library, "DwmIsCompositionEnabled"));
        result = SUCCEEDED(pFn(&enabled)) && enabled;
        FreeLibrary(library);
    }
    return result;
}

对于较旧的 Windows 版本,请按照 Get Windows theme? 问题进行操作。