- Fix API see CORE-8107.

svn path=/trunk/; revision=63210
This commit is contained in:
James Tabor 2014-05-09 23:08:56 +00:00
parent b9cff19fca
commit d68dcedf68

View file

@ -344,21 +344,26 @@ HACCEL WINAPI CreateAcceleratorTableA(LPACCEL lpaccl, int cEntries)
*/ */
int WINAPI TranslateAcceleratorA(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg) int WINAPI TranslateAcceleratorA(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg)
{ {
MSG mCopy = *lpMsg; switch (lpMsg->message)
CHAR cChar;
WCHAR wChar;
NTSTATUS Status;
if(!U32IsValidAccelMessage(lpMsg->message)) return 0;
Status = RtlMultiByteToUnicodeN(&wChar, sizeof(wChar), NULL, &cChar, sizeof(cChar));
if(!NT_SUCCESS(Status))
{ {
SetLastError(RtlNtStatusToDosError(Status)); case WM_KEYDOWN:
return 0; case WM_SYSKEYDOWN:
return TranslateAcceleratorW( hWnd, hAccTable, lpMsg );
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 );
} }
return TranslateAcceleratorW(hWnd, hAccTable, &mCopy); default:
return 0;
}
} }
/* EOF */ /* EOF */