mirror of
https://github.com/reactos/reactos.git
synced 2024-06-29 01:12:06 +00:00
[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:
parent
6a496c3991
commit
82136b3ee4
|
@ -4,6 +4,7 @@ spec2def(user32.dll user32.spec ADD_IMPORTLIB)
|
||||||
include_directories(
|
include_directories(
|
||||||
${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys
|
${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys
|
||||||
include
|
include
|
||||||
|
${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine
|
||||||
${REACTOS_SOURCE_DIR}/win32ss/include)
|
${REACTOS_SOURCE_DIR}/win32ss/include)
|
||||||
|
|
||||||
list(APPEND SOURCE
|
list(APPEND SOURCE
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include <user32.h>
|
#include <user32.h>
|
||||||
#include <strsafe.h>
|
#include <strsafe.h>
|
||||||
|
#include <ddk/imm.h>
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(user32);
|
WINE_DEFAULT_DEBUG_CHANNEL(user32);
|
||||||
|
|
||||||
|
@ -209,6 +210,48 @@ static VOID User32UpdateImcOfImeUI(PIMEUI pimeui, HIMC hNewIMC)
|
||||||
User32SetImeWindowOfImc(hNewIMC, hImeWnd);
|
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)
|
static HWND User32CreateImeUIWindow(PIMEUI pimeui, HKL hKL)
|
||||||
{
|
{
|
||||||
IMEINFOEX ImeInfoEx;
|
IMEINFOEX ImeInfoEx;
|
||||||
|
@ -428,8 +471,7 @@ LRESULT WINAPI ImeWndProc_common( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_IME_NOTIFY:
|
case WM_IME_NOTIFY:
|
||||||
// TODO:
|
return ImeWnd_OnImeNotify(pimeui, wParam, lParam);
|
||||||
break;
|
|
||||||
|
|
||||||
case WM_IME_REQUEST:
|
case WM_IME_REQUEST:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue