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