mirror of
https://github.com/reactos/reactos.git
synced 2024-09-29 14:09:10 +00:00
[IMM32] Implement ImmWINNLSEnableIME (#4599)
- Implement imm32!ImmWINNLSEnableIME function. - Rename CLIENTIMC_UNKNOWN3 flag as CLIENTIMC_DISABLEIME. - Modify imm32.spec. CORE-11700
This commit is contained in:
parent
d519b11a28
commit
934e5212e4
|
@ -1993,3 +1993,57 @@ ImmGetImeMenuItemsW(HIMC hIMC, DWORD dwFlags, DWORD dwType,
|
||||||
hIMC, dwFlags, dwType, lpImeParentMenu, lpImeMenu, dwSize);
|
hIMC, dwFlags, dwType, lpImeParentMenu, lpImeMenu, dwSize);
|
||||||
return ImmGetImeMenuItemsAW(hIMC, dwFlags, dwType, lpImeParentMenu, lpImeMenu, dwSize, FALSE);
|
return ImmGetImeMenuItemsAW(hIMC, dwFlags, dwType, lpImeParentMenu, lpImeMenu, dwSize, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* ImmWINNLSEnableIME (IMM32.@)
|
||||||
|
*/
|
||||||
|
BOOL WINAPI ImmWINNLSEnableIME(HWND hWnd, BOOL enable)
|
||||||
|
{
|
||||||
|
HIMC hIMC;
|
||||||
|
PCLIENTIMC pClientImc;
|
||||||
|
HWND hImeWnd;
|
||||||
|
BOOL bImeWnd, ret;
|
||||||
|
|
||||||
|
TRACE("(%p, %d)\n", hWnd, enable);
|
||||||
|
|
||||||
|
if (!Imm32IsSystemJapaneseOrKorean())
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
hIMC = (HIMC)NtUserGetThreadState(THREADSTATE_DEFAULTINPUTCONTEXT);
|
||||||
|
if (!hIMC)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
pClientImc = ImmLockClientImc(hIMC);
|
||||||
|
if (!pClientImc)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
ret = !(pClientImc->dwFlags & CLIENTIMC_DISABLEIME);
|
||||||
|
if (!!enable == ret)
|
||||||
|
{
|
||||||
|
ImmUnlockClientImc(pClientImc);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsWindow(hWnd))
|
||||||
|
hWnd = GetFocus();
|
||||||
|
|
||||||
|
hImeWnd = ImmGetDefaultIMEWnd(hWnd);
|
||||||
|
bImeWnd = IsWindow(hImeWnd);
|
||||||
|
if (bImeWnd)
|
||||||
|
ImmSetActiveContext(hWnd, (enable ? NULL : hIMC), FALSE);
|
||||||
|
|
||||||
|
if (enable)
|
||||||
|
pClientImc->dwFlags &= ~CLIENTIMC_DISABLEIME;
|
||||||
|
else
|
||||||
|
pClientImc->dwFlags |= CLIENTIMC_DISABLEIME;
|
||||||
|
|
||||||
|
ImmUnlockClientImc(pClientImc);
|
||||||
|
|
||||||
|
if (bImeWnd)
|
||||||
|
ImmSetActiveContext(hWnd, (enable ? hIMC : NULL), TRUE);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -998,7 +998,7 @@ Quit:
|
||||||
pClientImc = ImmLockClientImc(hIMC);
|
pClientImc = ImmLockClientImc(hIMC);
|
||||||
if (pClientImc == NULL)
|
if (pClientImc == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if ((dwContextFlags & 2) && (pClientImc->dwFlags & CLIENTIMC_UNKNOWN3))
|
if ((dwContextFlags & 2) && (pClientImc->dwFlags & CLIENTIMC_DISABLEIME))
|
||||||
hIMC = NULL;
|
hIMC = NULL;
|
||||||
ImmUnlockClientImc(pClientImc);
|
ImmUnlockClientImc(pClientImc);
|
||||||
return hIMC;
|
return hIMC;
|
||||||
|
|
|
@ -114,6 +114,6 @@
|
||||||
@ stdcall ImmUnlockImeDpi(ptr)
|
@ stdcall ImmUnlockImeDpi(ptr)
|
||||||
@ stdcall ImmUnregisterWordA(long str long str)
|
@ stdcall ImmUnregisterWordA(long str long str)
|
||||||
@ stdcall ImmUnregisterWordW(long wstr long wstr)
|
@ stdcall ImmUnregisterWordW(long wstr long wstr)
|
||||||
@ stdcall -stub ImmWINNLSEnableIME(ptr long)
|
@ stdcall ImmWINNLSEnableIME(ptr long)
|
||||||
@ stdcall ImmWINNLSGetEnableStatus(ptr)
|
@ stdcall ImmWINNLSGetEnableStatus(ptr)
|
||||||
@ stdcall ImmWINNLSGetIMEHotkey(ptr)
|
@ stdcall ImmWINNLSGetIMEHotkey(ptr)
|
||||||
|
|
|
@ -1326,7 +1326,7 @@ C_ASSERT(sizeof(CLIENTIMC) == 0x34);
|
||||||
#define CLIENTIMC_UNKNOWN5 0x2
|
#define CLIENTIMC_UNKNOWN5 0x2
|
||||||
#define CLIENTIMC_UNKNOWN4 0x20
|
#define CLIENTIMC_UNKNOWN4 0x20
|
||||||
#define CLIENTIMC_DESTROY 0x40
|
#define CLIENTIMC_DESTROY 0x40
|
||||||
#define CLIENTIMC_UNKNOWN3 0x80
|
#define CLIENTIMC_DISABLEIME 0x80
|
||||||
#define CLIENTIMC_UNKNOWN2 0x100
|
#define CLIENTIMC_UNKNOWN2 0x100
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
|
|
Loading…
Reference in a new issue