从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? 问题进行操作。
我想解决方法 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? 问题进行操作。