From 50b11bc3136818ddebeb257f630d01b36639da8a Mon Sep 17 00:00:00 2001 From: Saveliy Tretiakov Date: Thu, 22 Feb 2007 19:43:27 +0000 Subject: [PATCH] Handle WM_INPUTLANGCHANGE and WM_INPUTLANGCHANGEREQUEST in DefWindowProc. svn path=/trunk/; revision=25880 --- reactos/dll/win32/user32/windows/defwnd.c | 31 ++++++++++++++++++++++- reactos/include/psdk/winuser.h | 3 +++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/reactos/dll/win32/user32/windows/defwnd.c b/reactos/dll/win32/user32/windows/defwnd.c index 3a9046d1af5..ea07861be23 100644 --- a/reactos/dll/win32/user32/windows/defwnd.c +++ b/reactos/dll/win32/user32/windows/defwnd.c @@ -987,6 +987,8 @@ DefWndScreenshot(HWND hWnd) } + + LRESULT STDCALL User32DefWindowProc(HWND hWnd, UINT Msg, @@ -1522,7 +1524,34 @@ User32DefWindowProc(HWND hWnd, { return (1); } - + + case WM_INPUTLANGCHANGEREQUEST: + { + HKL NewHkl; + + if(wParam & INPUTLANGCHANGE_BACKWARD + && wParam & INPUTLANGCHANGE_FORWARD) + { + return FALSE; + } + + //FIXME: What to do with INPUTLANGCHANGE_SYSCHARSET ? + + if(wParam & INPUTLANGCHANGE_BACKWARD) NewHkl = HKL_PREV; + else if(wParam & INPUTLANGCHANGE_FORWARD) NewHkl = HKL_NEXT; + else NewHkl = lParam; + + NtUserActivateKeyboardLayout(NewHkl, 0); + + return TRUE; + } + + case WM_INPUTLANGCHANGE: + { + //FIXME: What to do? + return TRUE; + } + case WM_ENDSESSION: if (wParam) PostQuitMessage(0); return 0; diff --git a/reactos/include/psdk/winuser.h b/reactos/include/psdk/winuser.h index 339627844e8..fad30244c28 100644 --- a/reactos/include/psdk/winuser.h +++ b/reactos/include/psdk/winuser.h @@ -90,6 +90,9 @@ extern "C" { #define KLF_NOTELLSHELL 128 #define KLF_SETFORPROCESS 256 #define KL_NAMELENGTH 9 +#define INPUTLANGCHANGE_BACKWARD 4 +#define INPUTLANGCHANGE_FORWARD 2 +#define INPUTLANGCHANGE_SYSCHARSET 1 #define MF_ENABLED 0 #define MF_GRAYED 1 #define MF_DISABLED 2