8#include <QtCore/qglobal.h>
9#include <QtCore/qt_windows.h>
11#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
12#include <QtCore/private/qwinregistry_p.h>
15#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
24#define GET_X_LPARAM(lp) (static_cast<int>(static_cast<short>(LOWORD(lp))))
28#define GET_Y_LPARAM(lp) (static_cast<int>(static_cast<short>(HIWORD(lp))))
32#define IsMinimized(hwnd) (::IsIconic(hwnd))
36#define IsMaximized(hwnd) (::IsZoomed(hwnd))
40#define RECT_WIDTH(rect) ((rect).right - (rect).left)
44#define RECT_HEIGHT(rect) ((rect).bottom - (rect).top)
48#ifndef WM_UAHDESTROYWINDOW
49#define WM_UAHDESTROYWINDOW (0x0090)
52#ifndef WM_UNREGISTER_WINDOW_SERVICES
53#define WM_UNREGISTER_WINDOW_SERVICES (0x0272)
56#ifndef WM_NCUAHDRAWCAPTION
57#define WM_NCUAHDRAWCAPTION (0x00AE)
60#ifndef WM_NCUAHDRAWFRAME
61#define WM_NCUAHDRAWFRAME (0x00AF)
64#ifndef SM_CXPADDEDBORDER
65#define SM_CXPADDEDBORDER 92
69#define WM_DPICHANGED 0x02E0
72#ifndef ABM_GETAUTOHIDEBAREX
73#define ABM_GETAUTOHIDEBAREX 0x0000000b
81RTL_OSVERSIONINFOW GetRealOSVersion();
86 return (rovi.dwMajorVersion > 10) ||
87 (rovi.dwMajorVersion == 10 && rovi.dwMinorVersion == 0 && rovi.dwBuildNumber >= 22621);
93 return (rovi.dwMajorVersion > 10) ||
94 (rovi.dwMajorVersion == 10 && rovi.dwMinorVersion == 0 && rovi.dwBuildNumber >= 22000);
100 return (rovi.dwMajorVersion > 10) ||
101 (rovi.dwMajorVersion == 10 && rovi.dwMinorVersion == 0 && rovi.dwBuildNumber >= 18362);
107 return (rovi.dwMajorVersion > 10) ||
108 (rovi.dwMajorVersion == 10 && rovi.dwMinorVersion == 0 && rovi.dwBuildNumber >= 17763);
114 return (rovi.dwMajorVersion > 10) || (rovi.dwMajorVersion == 10 && rovi.dwMinorVersion == 0);
120 return (rovi.dwMajorVersion > 6) || (rovi.dwMajorVersion == 6 && rovi.dwMinorVersion >= 3);
126 return (rovi.dwMajorVersion > 6) || (rovi.dwMajorVersion == 6 && rovi.dwMinorVersion >= 2);
139#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
140class WindowsRegistryKey
143 WindowsRegistryKey(HKEY parentHandle, QStringView subKey, REGSAM permissions = KEY_READ, REGSAM access = 0);
145 ~WindowsRegistryKey();
147 inline bool isValid()
const;
150 QString stringValue(QStringView subKey)
const;
151 QPair<DWORD, bool> dwordValue(QStringView subKey)
const;
155 Q_DISABLE_COPY(WindowsRegistryKey)
158inline bool WindowsRegistryKey::isValid()
const
160 return m_key !=
nullptr;
170static inline bool isWin8OrGreater()
172 static const bool result = Private::IsWindows8OrGreater_Real();
176static inline bool isWin8Point1OrGreater()
178 static const bool result = Private::IsWindows8Point1OrGreater_Real();
182static inline bool isWin10OrGreater()
184 static const bool result = Private::IsWindows10OrGreater_Real();
188static inline bool isWin101809OrGreater()
190 static const bool result = Private::IsWindows101809OrGreater_Real();
194static inline bool isWin101903OrGreater()
196 static const bool result = Private::IsWindows101903OrGreater_Real();
200static inline bool isWin11OrGreater()
202 static const bool result = Private::IsWindows11OrGreater_Real();
206static inline bool isWin1122H2OrGreater()
208 static const bool result = Private::IsWindows1122H2OrGreater_Real();
212static inline bool isWin10Only()
214 static const bool result = Private::IsWindows10Only_Real();
224 return !wParam && lParam && std::wcscmp(
reinterpret_cast<LPCWSTR
>(lParam), L
"ImmersiveColorSet") == 0;
229#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
233Q_DECLARE_METATYPE(QMargins)
bool IsWindows101809OrGreater_Real()
bool IsWindows8Point1OrGreater_Real()
bool IsWindows1122H2OrGreater_Real()
bool IsWindows10Only_Real()
bool IsWindows11OrGreater_Real()
RTL_OSVERSIONINFOW GetRealOSVersion()
bool IsWindows8OrGreater_Real()
bool IsWindows10OrGreater_Real()
bool IsWindows101903OrGreater_Real()
bool isImmersiveColorSetChange(WPARAM wParam, LPARAM lParam)
QWinRegistryKey WindowsRegistryKey
#define QX_WINDOW_END_NAMESPACE
#define QX_WINDOW_BEGIN_NAMESPACE