From 8c403d5dd03418febd67d50c6d9094a61c036f9b Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周一, 11 12月 2023 14:43:40 +0800 Subject: [PATCH] Add virtual hook --- src/core/contexts/win32windowcontext.cpp | 24 +++++++++++++++++++----- 1 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp index 9cf1ecc..c1f3dbd 100644 --- a/src/core/contexts/win32windowcontext.cpp +++ b/src/core/contexts/win32windowcontext.cpp @@ -669,10 +669,24 @@ } } - void Win32WindowContext::showSystemMenu(const QPoint &pos) { - auto winId = m_windowHandle->winId(); - auto hWnd = reinterpret_cast<HWND>(winId); - showSystemMenu2(hWnd, {pos.x(), pos.y()}, false, m_delegate->isHostSizeFixed(m_host)); + QString Win32WindowContext::key() const { + return "win32"; + } + + void Win32WindowContext::virtual_hook(int id, void *data) { + switch (id) { + case ShowSystemMenuHook: { + const auto &pos = *reinterpret_cast<const QPoint *>(data); + auto winId = m_windowHandle->winId(); + auto hWnd = reinterpret_cast<HWND>(winId); + showSystemMenu2(hWnd, {pos.x(), pos.y()}, false, + m_delegate->isHostSizeFixed(m_host)); + return; + } + default: + break; + } + AbstractWindowContext::virtual_hook(id, data); } bool Win32WindowContext::setupHost() { @@ -742,7 +756,7 @@ return false; // Not handled } - static constexpr const auto kMessageTag = WPARAM(0x97CCEA99); + static constexpr const auto kMessageTag = WPARAM(0xF1C9ADD4); static inline constexpr bool isTaggedMessage(WPARAM wParam) { return (wParam == kMessageTag); -- Gitblit v1.9.1