[USER32] Implement ImeWnd_OnImeNotify (#4318)

- Modify CMakeLists.txt to include <ddk/imm.h>
- Implement WM_IME_NOTIFY message handling of the IME window.
CORE-11700
This commit is contained in:
Katayama Hirofumi MZ 2022-01-28 19:21:21 +09:00 committed by GitHub
parent 6a496c3991
commit 82136b3ee4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 2 deletions

View file

@ -4,6 +4,7 @@ spec2def(user32.dll user32.spec ADD_IMPORTLIB)
include_directories(
${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys
include
${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine
${REACTOS_SOURCE_DIR}/win32ss/include)
list(APPEND SOURCE

View file

@ -11,6 +11,7 @@
#include <user32.h>
#include <strsafe.h>
#include <ddk/imm.h>
WINE_DEFAULT_DEBUG_CHANNEL(user32);
@ -209,6 +210,48 @@ static VOID User32UpdateImcOfImeUI(PIMEUI pimeui, HIMC hNewIMC)
User32SetImeWindowOfImc(hNewIMC, hImeWnd);
}
static LRESULT ImeWnd_OnImeNotify(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
{
LRESULT ret = 0;
HIMC hIMC;
LPINPUTCONTEXT pIC;
HWND hwndUI, hwndIMC;
switch (wParam)
{
case IMN_SETCONVERSIONMODE:
case IMN_SETOPENSTATUS:
hIMC = pimeui->hIMC;
pIC = IMM_FN(ImmLockIMC)(hIMC);
if (pIC)
{
hwndIMC = pimeui->hwndIMC;
if (IsWindow(hwndIMC))
{
NtUserNotifyIMEStatus(hwndIMC, pIC->fOpen, pIC->fdwConversion);
}
else
{
// TODO:
}
IMM_FN(ImmUnlockIMC)(hIMC);
}
/* FALL THROUGH */
default:
ret = User32SendImeUIMessage(pimeui, WM_IME_NOTIFY, wParam, lParam, TRUE);
break;
case IMN_PRIVATE:
hwndUI = pimeui->hwndUI;
if (IsWindow(hwndUI))
ret = SendMessageW(hwndUI, WM_IME_NOTIFY, wParam, lParam);
break;
}
return ret;
}
static HWND User32CreateImeUIWindow(PIMEUI pimeui, HKL hKL)
{
IMEINFOEX ImeInfoEx;
@ -428,8 +471,7 @@ LRESULT WINAPI ImeWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
break;
case WM_IME_NOTIFY:
// TODO:
break;
return ImeWnd_OnImeNotify(pimeui, wParam, lParam);
case WM_IME_REQUEST:
break;