From f20efc60078132a33446e010f2deb7816128c339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 7 May 2025 23:04:25 +0200 Subject: [PATCH] [INCLUDE][ATL] Fix WM_SETHOTKEY macro wrappers WM_SETHOTKEY / WM_GETHOTKEY messages encode the hotkey in a different way than with the WM_HOTKEY message. For more details, see: https://learn.microsoft.com/en-us/windows/win32/inputdev/wm-gethotkey https://learn.microsoft.com/en-us/windows/win32/inputdev/wm-sethotkey Addendum to commit 6829350af9 (PR #7947) --- sdk/include/reactos/msgdump.h | 10 +++++----- sdk/include/reactos/winxx.h | 12 ++++++------ sdk/lib/atl/atlwin.h | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sdk/include/reactos/msgdump.h b/sdk/include/reactos/msgdump.h index da8057a7f0d..372a831b527 100644 --- a/sdk/include/reactos/msgdump.h +++ b/sdk/include/reactos/msgdump.h @@ -15,7 +15,7 @@ #pragma once #ifndef _INC_WINXX - #include "winxx.h" /* An unofficial extension of . */ + #include "winxx.h" /* An unofficial extension of */ #endif #ifndef _INC_SHELLAPI #include @@ -1308,14 +1308,14 @@ MD_OnHotKey(HWND hwnd, int idHotKey, UINT fuModifiers, UINT vk) } static __inline INT MSGDUMP_API -MD_OnSetHotKey(HWND hwnd, INT nCode, UINT nOptions) +MD_OnSetHotKey(HWND hwnd, WORD wVkCode, WORD wModifiers) { - MSGDUMP_TPRINTF(TEXT("%sWM_SETHOTKEY(hwnd:%p, nCode:%d, nOptions:%u)\n"), - MSGDUMP_PREFIX, (void *)hwnd, nCode, nOptions); + MSGDUMP_TPRINTF(TEXT("%sWM_SETHOTKEY(hwnd:%p, wVkCode:%u, wModifiers:%u)\n"), + MSGDUMP_PREFIX, (void *)hwnd, wVkCode, wModifiers); return 0; } -static __inline INT MSGDUMP_API +static __inline DWORD MSGDUMP_API MD_OnGetHotKey(HWND hwnd) { MSGDUMP_TPRINTF(TEXT("%sWM_GETHOTKEY(hwnd:%p)\n"), diff --git a/sdk/include/reactos/winxx.h b/sdk/include/reactos/winxx.h index 53baa65456c..3666a496dfa 100644 --- a/sdk/include/reactos/winxx.h +++ b/sdk/include/reactos/winxx.h @@ -33,20 +33,20 @@ ((fn)((hwnd), WM_NULL, 0, 0L), 0L) #endif -/* INT Cls_OnSetHotKey(HWND hwnd, INT nCode, UINT nOptions) */ +/* INT Cls_OnSetHotKey(HWND hwnd, WORD wVkCode, WORD wModifiers) */ #ifndef HANDLE_WM_SETHOTKEY #define HANDLE_WM_SETHOTKEY(hwnd, wParam, lParam, fn) \ - (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)LOWORD(wParam), (UINT)HIWORD(wParam)) -#define FORWARD_WM_SETHOTKEY(hwnd, nCode, nOptions, fn) \ - (INT)(fn)((hwnd), WM_SETHOTKEY, MAKEWPARAM((nCode), (nOptions))) + (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (WORD)LOBYTE(LOWORD(wParam)), (WORD)HIBYTE(LOWORD(wParam))) +#define FORWARD_WM_SETHOTKEY(hwnd, wVkCode, wModifiers, fn) \ + (INT)(fn)((hwnd), WM_SETHOTKEY, (WPARAM)MAKEWORD((wVkCode), (wModifiers)), 0L) #endif /* INT Cls_OnGetHotKey(HWND hwnd) */ #ifndef HANDLE_WM_GETHOTKEY #define HANDLE_WM_GETHOTKEY(hwnd, wParam, lParam, fn) \ - (LRESULT)(INT_PTR)(INT)(fn)((hwnd)) + (LRESULT)(UINT_PTR)(DWORD)(fn)((hwnd)) #define FORWARD_WM_GETHOTKEY(hwnd, fn) \ - (INT)(fn)((hwnd), WM_GETHOTKEY, 0, 0L) + (DWORD)(fn)((hwnd), WM_GETHOTKEY, 0, 0L) #endif /* void Cls_OnPaintIcon(HWND hwnd) */ diff --git a/sdk/lib/atl/atlwin.h b/sdk/lib/atl/atlwin.h index 19d438523cc..3840c19c0cf 100644 --- a/sdk/lib/atl/atlwin.h +++ b/sdk/lib/atl/atlwin.h @@ -1210,7 +1210,7 @@ public: int SetHotKey(WORD wVirtualKeyCode, WORD wModifiers) { ATLASSERT(::IsWindow(m_hWnd)); - return ::SendMessage(m_hWnd, WM_SETHOTKEY, MAKEWPARAM(wVirtualKeyCode, wModifiers), 0); + return (int)::SendMessage(m_hWnd, WM_SETHOTKEY, MAKEWORD(wVirtualKeyCode, wModifiers), 0); } HICON SetIcon(HICON hIcon, BOOL bBigIcon = TRUE)