| | |
| | | # 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 |
| | |
| | | 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; |
| | | |
| | |
| | | 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 |