From 91274c58b1772dfe38d3fcab291693141e822684 Mon Sep 17 00:00:00 2001 From: Daniel <49284193+dnlkrs@users.noreply.github.com> Date: 周五, 06 12月 2024 21:55:30 +0800 Subject: [PATCH] Fix WindowsRegistryKey for Qt 6.8.1 (#154) --- src/core/qwindowkit_windows.h | 38 ++++++++++++++++++++++++++++++-------- 1 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/core/qwindowkit_windows.h b/src/core/qwindowkit_windows.h index 08dca87..20f24ef 100644 --- a/src/core/qwindowkit_windows.h +++ b/src/core/qwindowkit_windows.h @@ -22,14 +22,6 @@ # define GET_Y_LPARAM(lp) (static_cast<int>(static_cast<short>(HIWORD(lp)))) #endif -#ifndef IsMinimized -# define IsMinimized(hwnd) (::IsIconic(hwnd)) -#endif - -#ifndef IsMaximized -# define IsMaximized(hwnd) (::IsZoomed(hwnd)) -#endif - #ifndef RECT_WIDTH # define RECT_WIDTH(rect) ((rect).right - (rect).left) #endif @@ -133,6 +125,9 @@ QString stringValue(QStringView subKey) const; QPair<DWORD, bool> dwordValue(QStringView subKey) const; + template<typename T> + std::optional<T> value(QStringView subKey) const; + private: HKEY m_key; @@ -142,6 +137,33 @@ inline bool WindowsRegistryKey::isValid() const { return m_key != nullptr; } + + template<> + inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const { + const auto dv = dwordValue(subKey); + if (!dv.second) { + return {}; + } + return dv.first; + } +#elif QT_VERSION < QT_VERSION_CHECK(6, 8, 1) + class WindowsRegistryKey : public QWinRegistryKey { + public: + + explicit WindowsRegistryKey(HKEY parentHandle, QStringView subKey, REGSAM permissions = KEY_READ, REGSAM access = 0); + + template<typename T> + inline std::optional<T> value(QStringView subKey) const; + }; + + template<> + inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const { + const auto dv = dwordValue(subKey); + if (!dv.second) { + return {}; + } + return dv.first; + } #else using WindowsRegistryKey = QWinRegistryKey; #endif -- Gitblit v1.9.1