从Qt开始,在Win7下,如何知道哪种窗口样式用于显示?

时间:2015-05-11 11:30:02

标签: c++ qt windows-7

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

有办法吗?

我尝试了QApplication::style()->objectName(),但无论选择何种风格,这都会让我"windowsvista" ....

1 个答案:

答案 0 :(得分:1)

可以使用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?问题进行操作。