From d68dcedf68868888ce7d75f12b9f565513b793f3 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 9 May 2014 23:08:56 +0000 Subject: [PATCH] - Fix API see CORE-8107. svn path=/trunk/; revision=63210 --- reactos/win32ss/user/user32/windows/accel.c | 31 ++++++++++++--------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/reactos/win32ss/user/user32/windows/accel.c b/reactos/win32ss/user/user32/windows/accel.c index 40db647e99a..cc25f91486e 100644 --- a/reactos/win32ss/user/user32/windows/accel.c +++ b/reactos/win32ss/user/user32/windows/accel.c @@ -344,21 +344,26 @@ HACCEL WINAPI CreateAcceleratorTableA(LPACCEL lpaccl, int cEntries) */ int WINAPI TranslateAcceleratorA(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg) { - MSG mCopy = *lpMsg; - CHAR cChar; - WCHAR wChar; - NTSTATUS Status; + switch (lpMsg->message) + { + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + return TranslateAcceleratorW( hWnd, hAccTable, lpMsg ); - if(!U32IsValidAccelMessage(lpMsg->message)) return 0; + case WM_CHAR: + case WM_SYSCHAR: + { + MSG msgW = *lpMsg; + char ch = LOWORD(lpMsg->wParam); + WCHAR wch; + MultiByteToWideChar(CP_ACP, 0, &ch, 1, &wch, 1); + msgW.wParam = MAKEWPARAM(wch, HIWORD(lpMsg->wParam)); + return TranslateAcceleratorW( hWnd, hAccTable, &msgW ); + } - Status = RtlMultiByteToUnicodeN(&wChar, sizeof(wChar), NULL, &cChar, sizeof(cChar)); - if(!NT_SUCCESS(Status)) - { - SetLastError(RtlNtStatusToDosError(Status)); - return 0; - } - - return TranslateAcceleratorW(hWnd, hAccTable, &mCopy); + default: + return 0; + } } /* EOF */