mirror of
https://github.com/reactos/reactos.git
synced 2025-06-05 17:30:32 +00:00
[IMM32] Use Imm32IsImmMode and Imm32IsCiceroMode macros (#3971)
- Define Imm32IsImmMode, Imm32IsCiceroMode and Imm32Is16BitMode macros in "precomp.h". - Improve Imm32InquireIme and Imm32CleanupContext functions. - Add IME_SYSINFO_WINLOGON and IME_SYSINFO_WOW16 macros (from DDK) in psdk/imm.h. - Modify CtfImeInquireExW and CtfImeSelectEx prototype. CORE-11700
This commit is contained in:
parent
e372f2b19b
commit
ca3fa7197d
5 changed files with 50 additions and 67 deletions
|
@ -46,23 +46,26 @@ BOOL APIENTRY Imm32InquireIme(PIMEDPI pImeDpi)
|
||||||
{
|
{
|
||||||
WCHAR szUIClass[64];
|
WCHAR szUIClass[64];
|
||||||
WNDCLASSW wcW;
|
WNDCLASSW wcW;
|
||||||
DWORD dwSysInfoFlags = 0; // TODO: ???
|
DWORD dwSysInfoFlags = 0;
|
||||||
LPIMEINFO pImeInfo = &pImeDpi->ImeInfo;
|
LPIMEINFO pImeInfo = &pImeDpi->ImeInfo;
|
||||||
|
|
||||||
// TODO: NtUserGetThreadState(16);
|
if (NtUserGetThreadState(16))
|
||||||
|
dwSysInfoFlags |= IME_SYSINFO_WINLOGON;
|
||||||
|
|
||||||
if (!IS_IME_HKL(pImeDpi->hKL))
|
if (IS_IME_HKL(pImeDpi->hKL))
|
||||||
{
|
{
|
||||||
if (g_psi && (g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED) &&
|
|
||||||
pImeDpi->CtfImeInquireExW)
|
|
||||||
{
|
|
||||||
// TODO:
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pImeDpi->ImeInquire(pImeInfo, szUIClass, dwSysInfoFlags))
|
if (!pImeDpi->ImeInquire(pImeInfo, szUIClass, dwSysInfoFlags))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
else if (Imm32IsCiceroMode() && pImeDpi->CtfImeInquireExW)
|
||||||
|
{
|
||||||
|
if (!pImeDpi->CtfImeInquireExW(pImeInfo, szUIClass, dwSysInfoFlags, pImeDpi->hKL))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
szUIClass[_countof(szUIClass) - 1] = 0;
|
szUIClass[_countof(szUIClass) - 1] = 0;
|
||||||
|
|
||||||
|
@ -257,19 +260,11 @@ PIMEDPI APIENTRY Ime32LoadImeDpi(HKL hKL, BOOL bLock)
|
||||||
|
|
||||||
PIMEDPI APIENTRY ImmLockOrLoadImeDpi(HKL hKL)
|
PIMEDPI APIENTRY ImmLockOrLoadImeDpi(HKL hKL)
|
||||||
{
|
{
|
||||||
PW32CLIENTINFO pInfo;
|
|
||||||
PIMEDPI pImeDpi;
|
PIMEDPI pImeDpi;
|
||||||
|
|
||||||
if (!IS_IME_HKL(hKL))
|
if (!IS_IME_HKL(hKL) && (!Imm32IsCiceroMode() || Imm32Is16BitMode()))
|
||||||
{
|
|
||||||
if (!g_psi || !(g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
pInfo = (PW32CLIENTINFO)(NtCurrentTeb()->Win32ClientInfo);
|
|
||||||
if ((pInfo->W32ClientInfo[0] & 2))
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
pImeDpi = ImmLockImeDpi(hKL);
|
pImeDpi = ImmLockImeDpi(hKL);
|
||||||
if (pImeDpi == NULL)
|
if (pImeDpi == NULL)
|
||||||
pImeDpi = Ime32LoadImeDpi(hKL, TRUE);
|
pImeDpi = Ime32LoadImeDpi(hKL, TRUE);
|
||||||
|
@ -282,11 +277,9 @@ ImeDpi_Escape(PIMEDPI pImeDpi, HIMC hIMC, UINT uSubFunc, LPVOID lpData, HKL hKL)
|
||||||
if (IS_IME_HKL(hKL))
|
if (IS_IME_HKL(hKL))
|
||||||
return pImeDpi->ImeEscape(hIMC, uSubFunc, lpData);
|
return pImeDpi->ImeEscape(hIMC, uSubFunc, lpData);
|
||||||
|
|
||||||
if (g_psi && (g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
|
if (Imm32IsCiceroMode() && pImeDpi->CtfImeEscapeEx)
|
||||||
{
|
|
||||||
if (pImeDpi->CtfImeEscapeEx)
|
|
||||||
return pImeDpi->CtfImeEscapeEx(hIMC, uSubFunc, lpData, hKL);
|
return pImeDpi->CtfImeEscapeEx(hIMC, uSubFunc, lpData, hKL);
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -305,7 +298,7 @@ BOOL WINAPI ImmIsIME(HKL hKL)
|
||||||
*/
|
*/
|
||||||
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
|
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
|
||||||
{
|
{
|
||||||
if (!g_psi || !(g_psi->dwSRVIFlags & SRVINFO_IMM32))
|
if (!Imm32IsImmMode())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
// FIXME: NtUserGetThreadState and enum ThreadStateRoutines are broken.
|
// FIXME: NtUserGetThreadState and enum ThreadStateRoutines are broken.
|
||||||
|
@ -367,7 +360,6 @@ ImmGetImeInfoEx(PIMEINFOEX pImeInfoEx, IMEINFOEXCLASS SearchType, PVOID pvSearch
|
||||||
{
|
{
|
||||||
BOOL bDisabled = FALSE;
|
BOOL bDisabled = FALSE;
|
||||||
HKL hKL;
|
HKL hKL;
|
||||||
PTEB pTeb;
|
|
||||||
|
|
||||||
switch (SearchType)
|
switch (SearchType)
|
||||||
{
|
{
|
||||||
|
@ -390,10 +382,9 @@ ImmGetImeInfoEx(PIMEINFOEX pImeInfoEx, IMEINFOEXCLASS SearchType, PVOID pvSearch
|
||||||
|
|
||||||
if (!IS_IME_HKL(hKL))
|
if (!IS_IME_HKL(hKL))
|
||||||
{
|
{
|
||||||
if (g_psi && (g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
|
if (Imm32IsCiceroMode())
|
||||||
{
|
{
|
||||||
pTeb = NtCurrentTeb();
|
if (Imm32Is16BitMode())
|
||||||
if (((PW32CLIENTINFO)pTeb->Win32ClientInfo)->W32ClientInfo[0] & 2)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (!bDisabled)
|
if (!bDisabled)
|
||||||
goto Quit;
|
goto Quit;
|
||||||
|
@ -487,19 +478,11 @@ VOID WINAPI ImmUnlockImeDpi(PIMEDPI pImeDpi)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI ImmLoadIME(HKL hKL)
|
BOOL WINAPI ImmLoadIME(HKL hKL)
|
||||||
{
|
{
|
||||||
PW32CLIENTINFO pInfo;
|
|
||||||
PIMEDPI pImeDpi;
|
PIMEDPI pImeDpi;
|
||||||
|
|
||||||
if (!IS_IME_HKL(hKL))
|
if (!IS_IME_HKL(hKL) && (!Imm32IsCiceroMode() || Imm32Is16BitMode()))
|
||||||
{
|
|
||||||
if (!g_psi || !(g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
pInfo = (PW32CLIENTINFO)(NtCurrentTeb()->Win32ClientInfo);
|
|
||||||
if ((pInfo->W32ClientInfo[0] & 2))
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
pImeDpi = Imm32FindImeDpi(hKL);
|
pImeDpi = Imm32FindImeDpi(hKL);
|
||||||
if (pImeDpi == NULL)
|
if (pImeDpi == NULL)
|
||||||
pImeDpi = Ime32LoadImeDpi(hKL, FALSE);
|
pImeDpi = Ime32LoadImeDpi(hKL, FALSE);
|
||||||
|
@ -1319,20 +1302,14 @@ BOOL WINAPI ImmSetConversionStatus(HIMC hIMC, DWORD fdwConversion, DWORD fdwSent
|
||||||
HKL hKL;
|
HKL hKL;
|
||||||
LPINPUTCONTEXT pIC;
|
LPINPUTCONTEXT pIC;
|
||||||
DWORD dwOldConversion, dwOldSentence;
|
DWORD dwOldConversion, dwOldSentence;
|
||||||
BOOL fConversionChange = FALSE, fSentenceChange = FALSE;
|
BOOL fConversionChange = FALSE, fSentenceChange = FALSE, fUseCicero = FALSE;
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
|
|
||||||
TRACE("(%p, 0x%lX, 0x%lX)\n", hIMC, fdwConversion, fdwSentence);
|
TRACE("(%p, 0x%lX, 0x%lX)\n", hIMC, fdwConversion, fdwSentence);
|
||||||
|
|
||||||
hKL = GetKeyboardLayout(0);
|
hKL = GetKeyboardLayout(0);
|
||||||
if (!IS_IME_HKL(hKL))
|
if (!IS_IME_HKL(hKL) && Imm32IsCiceroMode() && !Imm32Is16BitMode())
|
||||||
{
|
fUseCicero = TRUE;
|
||||||
if (g_psi && (g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
|
|
||||||
{
|
|
||||||
FIXME("Cicero\n");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Imm32IsCrossThreadAccess(hIMC))
|
if (Imm32IsCrossThreadAccess(hIMC))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1358,14 +1335,15 @@ BOOL WINAPI ImmSetConversionStatus(HIMC hIMC, DWORD fdwConversion, DWORD fdwSent
|
||||||
hWnd = pIC->hWnd;
|
hWnd = pIC->hWnd;
|
||||||
ImmUnlockIMC(hIMC);
|
ImmUnlockIMC(hIMC);
|
||||||
|
|
||||||
if (fConversionChange)
|
if (fConversionChange || fUseCicero)
|
||||||
{
|
{
|
||||||
Imm32NotifyAction(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldConversion,
|
Imm32NotifyAction(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldConversion,
|
||||||
IMC_SETCONVERSIONMODE, IMN_SETCONVERSIONMODE, 0);
|
IMC_SETCONVERSIONMODE, IMN_SETCONVERSIONMODE, 0);
|
||||||
|
if (fConversionChange)
|
||||||
NtUserNotifyIMEStatus(hWnd, hIMC, fdwConversion);
|
NtUserNotifyIMEStatus(hWnd, hIMC, fdwConversion);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fSentenceChange)
|
if (fSentenceChange || fUseCicero)
|
||||||
{
|
{
|
||||||
Imm32NotifyAction(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldSentence,
|
Imm32NotifyAction(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldSentence,
|
||||||
IMC_SETSENTENCEMODE, IMN_SETSENTENCEMODE, 0);
|
IMC_SETSENTENCEMODE, IMN_SETSENTENCEMODE, 0);
|
||||||
|
|
|
@ -62,9 +62,7 @@ HKL WINAPI ImmLoadLayout(HKL hKL, PIMEINFOEX pImeInfoEx)
|
||||||
|
|
||||||
TRACE("(%p, %p)\n", hKL, pImeInfoEx);
|
TRACE("(%p, %p)\n", hKL, pImeInfoEx);
|
||||||
|
|
||||||
if (IS_IME_HKL(hKL) ||
|
if (IS_IME_HKL(hKL) || !Imm32IsCiceroMode() || Imm32Is16BitMode())
|
||||||
!g_psi || !(g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED) ||
|
|
||||||
((PW32CLIENTINFO)NtCurrentTeb()->Win32ClientInfo)->W32ClientInfo[0] & 2)
|
|
||||||
{
|
{
|
||||||
UnicodeString.Buffer = szLayout;
|
UnicodeString.Buffer = szLayout;
|
||||||
UnicodeString.MaximumLength = sizeof(szLayout);
|
UnicodeString.MaximumLength = sizeof(szLayout);
|
||||||
|
@ -266,7 +264,7 @@ BOOL WINAPI ImmAssociateContextEx(HWND hWnd, HIMC hIMC, DWORD dwFlags)
|
||||||
|
|
||||||
TRACE("(%p, %p, 0x%lX)\n", hWnd, hIMC, dwFlags);
|
TRACE("(%p, %p, 0x%lX)\n", hWnd, hIMC, dwFlags);
|
||||||
|
|
||||||
if (!g_psi || !(g_psi->dwSRVIFlags & SRVINFO_IMM32))
|
if (!Imm32IsImmMode())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (hIMC && !(dwFlags & IACE_DEFAULT) && Imm32IsCrossThreadAccess(hIMC))
|
if (hIMC && !(dwFlags & IACE_DEFAULT) && Imm32IsCrossThreadAccess(hIMC))
|
||||||
|
@ -311,7 +309,7 @@ HIMC WINAPI ImmCreateContext(void)
|
||||||
|
|
||||||
TRACE("()\n");
|
TRACE("()\n");
|
||||||
|
|
||||||
if (g_psi == NULL || !(g_psi->dwSRVIFlags & SRVINFO_IMM32))
|
if (!Imm32IsImmMode())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
pClientImc = Imm32HeapAlloc(HEAP_ZERO_MEMORY, sizeof(CLIENTIMC));
|
pClientImc = Imm32HeapAlloc(HEAP_ZERO_MEMORY, sizeof(CLIENTIMC));
|
||||||
|
@ -350,7 +348,7 @@ BOOL APIENTRY Imm32CleanupContext(HIMC hIMC, HKL hKL, BOOL bKeep)
|
||||||
LPINPUTCONTEXT pIC;
|
LPINPUTCONTEXT pIC;
|
||||||
PCLIENTIMC pClientImc;
|
PCLIENTIMC pClientImc;
|
||||||
|
|
||||||
if (g_psi == NULL || !(g_psi->dwSRVIFlags & SRVINFO_IMM32) || hIMC == NULL)
|
if (!Imm32IsImmMode() || hIMC == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
FIXME("We have do something to do here\n");
|
FIXME("We have do something to do here\n");
|
||||||
|
@ -385,9 +383,9 @@ BOOL APIENTRY Imm32CleanupContext(HIMC hIMC, HKL hKL, BOOL bKeep)
|
||||||
{
|
{
|
||||||
pImeDpi->ImeSelect(hIMC, FALSE);
|
pImeDpi->ImeSelect(hIMC, FALSE);
|
||||||
}
|
}
|
||||||
else if (g_psi && (g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
|
else if (Imm32IsCiceroMode() && pImeDpi->CtfImeSelectEx)
|
||||||
{
|
{
|
||||||
FIXME("We have do something to do here\n");
|
pImeDpi->CtfImeSelectEx(hIMC, FALSE, hKL);
|
||||||
}
|
}
|
||||||
ImmUnlockImeDpi(pImeDpi);
|
ImmUnlockImeDpi(pImeDpi);
|
||||||
}
|
}
|
||||||
|
@ -422,7 +420,7 @@ BOOL WINAPI ImmDestroyContext(HIMC hIMC)
|
||||||
|
|
||||||
TRACE("(%p)\n", hIMC);
|
TRACE("(%p)\n", hIMC);
|
||||||
|
|
||||||
if (g_psi == NULL || !(g_psi->dwSRVIFlags & SRVINFO_IMM32))
|
if (!Imm32IsImmMode())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (Imm32IsCrossThreadAccess(hIMC))
|
if (Imm32IsCrossThreadAccess(hIMC))
|
||||||
|
@ -508,7 +506,7 @@ static HIMC APIENTRY Imm32GetContextEx(HWND hWnd, DWORD dwContextFlags)
|
||||||
PCLIENTIMC pClientImc;
|
PCLIENTIMC pClientImc;
|
||||||
PWND pWnd;
|
PWND pWnd;
|
||||||
|
|
||||||
if (!g_psi || !(g_psi->dwSRVIFlags & SRVINFO_IMM32))
|
if (!Imm32IsImmMode())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!hWnd)
|
if (!hWnd)
|
||||||
|
@ -843,7 +841,7 @@ HIMC WINAPI ImmGetContext(HWND hWnd)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI CtfImmIsCiceroEnabled(VOID)
|
BOOL WINAPI CtfImmIsCiceroEnabled(VOID)
|
||||||
{
|
{
|
||||||
return (g_psi && (g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED));
|
return Imm32IsCiceroMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -1380,7 +1378,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
if (g_psi == NULL || !(g_psi->dwSRVIFlags & SRVINFO_IMM32))
|
if (!Imm32IsImmMode())
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
pTeb = NtCurrentTeb();
|
pTeb = NtCurrentTeb();
|
||||||
|
|
|
@ -94,6 +94,9 @@ static inline BOOL Imm32IsCrossProcessAccess(HWND hWnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ImeDpi_IsUnicode(pImeDpi) ((pImeDpi)->ImeInfo.fdwProperty & IME_PROP_UNICODE)
|
#define ImeDpi_IsUnicode(pImeDpi) ((pImeDpi)->ImeInfo.fdwProperty & IME_PROP_UNICODE)
|
||||||
|
#define Imm32IsImmMode() (g_psi && (g_psi->dwSRVIFlags & SRVINFO_IMM32))
|
||||||
|
#define Imm32IsCiceroMode() (g_psi && (g_psi->dwSRVIFlags & SRVINFO_CICERO_ENABLED))
|
||||||
|
#define Imm32Is16BitMode() (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT)
|
||||||
|
|
||||||
DWORD APIENTRY
|
DWORD APIENTRY
|
||||||
CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen,
|
CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen,
|
||||||
|
|
|
@ -237,6 +237,10 @@ typedef struct tagCANDIDATEINFO {
|
||||||
#define NI_SETCANDIDATE_PAGESIZE 0x0017
|
#define NI_SETCANDIDATE_PAGESIZE 0x0017
|
||||||
#define NI_IMEMENUSELECTED 0x0018
|
#define NI_IMEMENUSELECTED 0x0018
|
||||||
|
|
||||||
|
/* dwSystemInfoFlags bits */
|
||||||
|
#define IME_SYSINFO_WINLOGON 0x0001
|
||||||
|
#define IME_SYSINFO_WOW16 0x0002
|
||||||
|
|
||||||
BOOL WINAPI ImmUnlockIMC(HIMC);
|
BOOL WINAPI ImmUnlockIMC(HIMC);
|
||||||
DWORD WINAPI ImmGetIMCLockCount(HIMC);
|
DWORD WINAPI ImmGetIMCLockCount(HIMC);
|
||||||
HIMCC WINAPI ImmCreateIMCC(DWORD);
|
HIMCC WINAPI ImmCreateIMCC(DWORD);
|
||||||
|
|
|
@ -15,8 +15,8 @@ DEFINE_IME_ENTRY(UINT, ImeToAsciiEx, (UINT uVirKey, UINT uScanCode, CONST LPBYTE
|
||||||
DEFINE_IME_ENTRY(BOOL, NotifyIME, (HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue), FALSE)
|
DEFINE_IME_ENTRY(BOOL, NotifyIME, (HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue), FALSE)
|
||||||
DEFINE_IME_ENTRY(BOOL, ImeSetCompositionString, (HIMC hIMC, DWORD dwIndex, LPCVOID lpComp, DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen), FALSE)
|
DEFINE_IME_ENTRY(BOOL, ImeSetCompositionString, (HIMC hIMC, DWORD dwIndex, LPCVOID lpComp, DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen), FALSE)
|
||||||
DEFINE_IME_ENTRY(DWORD, ImeGetImeMenuItems, (HIMC hIMC, DWORD dwFlags, DWORD dwType, LPIMEMENUITEMINFOW lpImeParentMenu, LPIMEMENUITEMINFOW lpImeMenu, DWORD dwSize), FALSE)
|
DEFINE_IME_ENTRY(DWORD, ImeGetImeMenuItems, (HIMC hIMC, DWORD dwFlags, DWORD dwType, LPIMEMENUITEMINFOW lpImeParentMenu, LPIMEMENUITEMINFOW lpImeMenu, DWORD dwSize), FALSE)
|
||||||
DEFINE_IME_ENTRY(DWORD, CtfImeInquireExW, (VOID /* FIXME: unknown */), TRUE)
|
DEFINE_IME_ENTRY(BOOL, CtfImeInquireExW, (LPIMEINFO lpIMEInfo, LPVOID lpszWndClass, DWORD dwSystemInfoFlags, HKL hKL), TRUE)
|
||||||
DEFINE_IME_ENTRY(DWORD, CtfImeSelectEx, (VOID /* FIXME: unknown */), TRUE)
|
DEFINE_IME_ENTRY(BOOL, CtfImeSelectEx, (HIMC hIMC, BOOL fSelect, HKL hKL), TRUE)
|
||||||
DEFINE_IME_ENTRY(LRESULT, CtfImeEscapeEx, (HIMC hIMC, UINT uSubFunc, LPVOID lpData, HKL hKL), TRUE)
|
DEFINE_IME_ENTRY(LRESULT, CtfImeEscapeEx, (HIMC hIMC, UINT uSubFunc, LPVOID lpData, HKL hKL), TRUE)
|
||||||
DEFINE_IME_ENTRY(DWORD, CtfImeGetGuidAtom, (VOID /* FIXME: unknown */), TRUE)
|
DEFINE_IME_ENTRY(DWORD, CtfImeGetGuidAtom, (VOID /* FIXME: unknown */), TRUE)
|
||||||
DEFINE_IME_ENTRY(DWORD, CtfImeIsGuidMapEnable, (VOID /* FIXME: unknown */), TRUE)
|
DEFINE_IME_ENTRY(DWORD, CtfImeIsGuidMapEnable, (VOID /* FIXME: unknown */), TRUE)
|
||||||
|
|
Loading…
Reference in a new issue