diff --git a/win32ss/user/ntuser/window.c b/win32ss/user/ntuser/window.c index b6a2c28bab2..a2b9e24b6d8 100644 --- a/win32ss/user/ntuser/window.c +++ b/win32ss/user/ntuser/window.c @@ -2053,17 +2053,22 @@ PWND FASTCALL IntCreateWindow(CREATESTRUCTW* Cs, PWND pwndDefaultIme = co_IntCreateDefaultImeWindow(pWnd, pWnd->hModule); UserAssignmentLock((PVOID*)&(pti->spwndDefaultIme), pwndDefaultIme); - if (pwndDefaultIme && (pti->pClientInfo->CI_flags & CI_IMMACTIVATE)) + if (pwndDefaultIme) { + HWND hImeWnd; USER_REFERENCE_ENTRY Ref; - HKL hKL; - UserRefObjectCo(pwndDefaultIme, &Ref); - hKL = pti->KeyboardLayout->hkl; - co_IntSendMessage(UserHMGetHandle(pwndDefaultIme), WM_IME_SYSTEM, - IMS_ACTIVATELAYOUT, (LPARAM)hKL); - pti->pClientInfo->CI_flags &= ~CI_IMMACTIVATE; + hImeWnd = UserHMGetHandle(pwndDefaultIme); + + co_IntSendMessage(hImeWnd, WM_IME_SYSTEM, IMS_LOADTHREADLAYOUT, 0); + + if (pti->pClientInfo->CI_flags & CI_IMMACTIVATE) + { + HKL hKL = pti->KeyboardLayout->hkl; + co_IntSendMessage(hImeWnd, WM_IME_SYSTEM, IMS_ACTIVATELAYOUT, (LPARAM)hKL); + pti->pClientInfo->CI_flags &= ~CI_IMMACTIVATE; + } UserDerefObjectCo(pwndDefaultIme); }