61 TRACE(
"(%p, %p)\n",
hKL, pImeInfoEx);
70 ERR(
"RegOpenKeyW: 0x%08lX\n",
error);
77 ERR(
"RegOpenKeyW: 0x%08lX\n",
error);
87 ERR(
"RegOpenKeyW: 0x%08lX\n",
error);
105 ERR(
"RegQueryValueExW: 0x%08lX\n",
error);
125 TRACE(
"(0x%lX)\n", dwUnknown);
144 for (iKL = 0; iKL < cKLs; ++iKL)
160 else if (dwUnknown == 2)
191 BOOL fOpen, bIsNewHKLIme =
TRUE, bIsOldHKLIme =
TRUE, bClientWide, bNewDpiWide;
192 DWORD cbNewPrivate = 0, cbOldPrivate = 0, dwConversion, dwSentence,
dwSize, dwNewSize;
203 if (hNewKL != hOldKL)
216 if (cbNewPrivate <
sizeof(
DWORD))
217 cbNewPrivate =
sizeof(
DWORD);
220 cbOldPrivate = pOldImeDpi->ImeInfo.dwPrivateDataSize;
222 if (cbOldPrivate <
sizeof(
DWORD))
223 cbOldPrivate =
sizeof(
DWORD);
225 if (pClientImc->
hKL == hOldKL)
230 pOldImeDpi->ImeSelect(hIMC,
FALSE);
232 pOldImeDpi->CtfImeSelectEx(hIMC,
FALSE, hOldKL);
252 pNewImeDpi->ImeSelect(hIMC,
TRUE);
254 pNewImeDpi->CtfImeSelectEx(hIMC,
TRUE, hNewKL);
256 pClientImc->
hKL = hNewKL;
261 dwConversion = pIC->fdwConversion;
262 dwSentence = pIC->fdwSentence;
269 if (bClientWide && !bNewDpiWide)
274 pIC->lfFont.A = LogFontA;
278 else if (!bClientWide && bNewDpiWide)
283 pIC->lfFont.W = LogFontW;
289 if (cbOldPrivate != cbNewPrivate)
297 pIC->hPrivate = hPrivate;
300 #define MAX_IMCC_SIZE 0x1000 306 pIC->dwNumMsgBuf = 0;
355 if (pOldImeDpi && bIsOldHKLIme)
362 if (pNewImeDpi && bIsNewHKLIme)
365 if (pOldState != pNewState)
369 pOldState->fOpen = !!pIC->fOpen;
371 pOldState->dwSentence = pIC->fdwSentence;
372 pOldState->dwInit = pIC->fdwInit;
384 pIC->fOpen = pNewState->
fOpen;
389 pIC->fdwInit = pNewState->
dwInit;
399 pNewImeDpi->ImeSelect(hIMC,
TRUE);
401 pNewImeDpi->CtfImeSelectEx(hIMC,
TRUE, hNewKL);
403 pClientImc->
hKL = hNewKL;
407 if (pIC->fOpen != fOpen)
409 if (pIC->fdwConversion != dwConversion)
411 if (pIC->fdwSentence != dwSentence)
482 SelectLayout.
hNewKL = hKL;
483 SelectLayout.
hOldKL = hOldKL;
494 TRACE(
"We have to do something\n");
519 hOldIMC = pWnd->
hImc;
530 if (hwndFocus ==
hWnd)
600 if (pClientImc ==
NULL)
623 for (pState = pIC->
pState; pState; pState = pNext)
625 pNext = pState->
pNext;
627 for (pSubState = pState->
pSubState; pSubState; pSubState = pSubNext)
629 pSubNext = pSubState->
pNext;
653 ERR(
"invalid pIMC: %p\n", pIMC);
663 ERR(
"CLIENTIMC_UNKNOWN2\n");
685 if (pClientImc->
hKL == hKL)
691 pImeDpi->ImeSelect(hIMC,
FALSE);
693 pImeDpi->CtfImeSelectEx(hIMC,
FALSE, hKL);
724 DWORD dwIndex, cbPrivate;
768 cbPrivate =
sizeof(
DWORD);
791 pImeDpi->ImeSelect(hIMC,
TRUE);
793 pImeDpi->CtfImeSelectEx(hIMC,
TRUE, hKL);
797 pClientImc->
hKL = hKL;
894 TRACE(
"(%p)\n", hIMC);
914 TRACE(
"(%p)\n", hImc);
959 TRACE(
"(%p)\n", pClientImc);
994 if (!hIMC && (dwContextFlags & 1))
999 if (pClientImc ==
NULL)
1025 TRACE(
"(%p)\n", hIMC);
1037 if (pClientImc ==
NULL)
1064 FIXME(
"(%d, %d, %d, %d): stub\n", uType, hOwner,
x,
y);
1074 TRACE(
"(%p)\n", hSoftWnd);
1083 TRACE(
"(%p, %d)\n", hSoftWnd, nCmdShow);
1104 DWORD dwIndex, dwCount;
1114 for (dwIndex = 0; dwIndex < dwCount; ++dwIndex)
1116 hIMC = phList[dwIndex];
1139 TRACE(
"(%p, %p, %d)\n",
hWnd, hIMC, fActive);
1170 dwConversion = pIC->fdwConversion;
1198 pImeDpi->ImeSetActiveContext(hIMC, fActive);
1258 TRACE(
"(%p, 0x%X, %p)\n", hinstDLL, fdwReason, lpReserved);
1265 ERR(
"ImmInitializeGlobals failed\n");
1270 ERR(
"User32InitializeImmEntryTable failed\n");
1289 TRACE(
"imm32.dll is unloaded\n");
DWORD NTAPI NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags)
DWORD NTAPI NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL)
DWORD WINAPI ImmGetIMCCSize(HIMCC imcc)
VOID WINAPI ImmUnlockImeDpi(PIMEDPI pImeDpi)
BOOL WINAPI CtfImmIsTextFrameServiceDisabled(VOID)
BOOL WINAPI ImmEnumInputContext(DWORD dwThreadId, IMCENUMPROC lpfn, LPARAM lParam)
HRESULT APIENTRY Imm32UIntToStr(DWORD dwValue, ULONG nBase, LPWSTR pszBuff, USHORT cchBuff)
BOOL WINAPI ImmDisableTextFrameService(DWORD dwThreadId)
BOOL NTAPI LocalUnlock(HLOCAL hMem)
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
BOOL APIENTRY Imm32LoadImeVerInfo(PIMEINFOEX pImeInfoEx)
BOOL WINAPI IsWindow(_In_opt_ HWND)
HIMCC WINAPI ImmDestroyIMCC(HIMCC block)
VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
#define UNREFERENCED_PARAMETER(P)
#define DLL_THREAD_ATTACH
#define MAX_CANDIDATEFORM
ULONG_PTR dwClientImcData
LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
BOOL APIENTRY Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
LPVOID APIENTRY ImmLocalAlloc(DWORD dwFlags, DWORD dwBytes)
CANDIDATEFORM cfCandForm[4]
LPINPUTCONTEXT APIENTRY Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect)
LPVOID WINAPI ImmLockIMCC(HIMCC imcc)
HRESULT APIENTRY CtfImmTIMCreateInputContext(HIMC hIMC)
DWORD NTAPI NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion)
BOOL WINAPI ImmAssociateContextEx(HWND hWnd, HIMC hIMC, DWORD dwFlags)
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
BOOL WINAPI ImmLoadIME(HKL hKL)
static VOID APIENTRY Imm32CiceroSetActiveContext(HIMC hIMC, BOOL fActive, HWND hWnd, HKL hKL)
BOOL APIENTRY Imm32CreateInputContext(HIMC hIMC, LPINPUTCONTEXT pIC, PCLIENTIMC pClientImc, HKL hKL, BOOL fSelect)
#define CLIENTIMC_UNKNOWN5
GLint GLint GLint GLint GLint x
#define DLL_PROCESS_ATTACH
#define INPUTCONTEXTDX_CHANGE_OPEN
#define GetWin32ClientInfo()
static PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI ImmRegisterClient(PSHAREDINFO ptr, HINSTANCE hMod)
#define DLL_THREAD_DETACH
#define CLIENTIMC_UNKNOWN2
BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
BOOL WINAPI ImmDestroyContext(HIMC hIMC)
BOOL APIENTRY Imm32IsSystemJapaneseOrKorean(VOID)
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
PIME_STATE APIENTRY Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL)
VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
#define CLIENTIMC_DESTROY
#define QUERY_WINDOW_FOCUS
struct SELECT_LAYOUT SELECT_LAYOUT
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
BOOL WINAPI ImmFreeLayout(DWORD dwUnknown)
BOOL WINAPI ImmSetActiveContextConsoleIME(HWND hwnd, BOOL fFlag)
BOOL APIENTRY Imm32DestroyInputContext(HIMC hIMC, HKL hKL, BOOL bKeep)
BOOL WINAPI User32InitializeImmEntryTable(DWORD)
LCID WINAPI GetSystemDefaultLCID(void)
static BOOL APIENTRY ImmInitializeGlobals(HMODULE hMod)
PCLIENTIMC WINAPI ImmLockClientImc(HIMC hImc)
HIMC WINAPI ImmCreateContext(void)
DWORD WINAPI GetCurrentThreadId(VOID)
#define DLL_PROCESS_DETACH
#define ISC_SHOWUIALLCANDIDATEWINDOW
HIMCC WINAPI ImmCreateIMCC(DWORD size)
BOOL WINAPI ImmNotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
DWORD APIENTRY Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
RTL_CRITICAL_SECTION gcsImeDpi
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
DWORD_PTR NTAPI NtUserQueryInputContext(HIMC hIMC, DWORD dwType)
struct tagCLIENTIMC * PCLIENTIMC
UINT WINAPI GetKeyboardLayoutList(_In_ int nBuff, _Out_writes_to_opt_(nBuff, return) HKL FAR *lpList)
#define WM_IME_SETCONTEXT
HIMC WINAPI ImmGetContext(HWND hWnd)
BOOL NTAPI NtUserDestroyInputContext(HIMC hIMC)
PIMEDPI WINAPI ImmLockImeDpi(HKL hKL)
#define NI_COMPOSITIONSTR
#define REGKEY_KEYBOARD_LAYOUTS
struct INPUTCONTEXTDX * LPINPUTCONTEXTDX
VOID APIENTRY LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
#define CLIENTIMC_UNKNOWN3
#define ImeDpi_IsUnicode(pImeDpi)
struct tagGUIDELINE GUIDELINE
static BOOL Imm32IsCrossThreadAccess(HIMC hIMC)
#define ImmLocalFree(lpData)
struct tagCOMPOSITIONSTRING COMPOSITIONSTRING
BOOL WINAPI ImmUnlockIMCC(HIMCC imcc)
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS _Inout_ BOOLEAN * Retry
#define InterlockedDecrement
static BOOL CALLBACK Imm32NotifyIMEProc(HIMC hIMC, LPARAM lParam)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define LANGIDFROMLCID(l)
WINE_DEFAULT_DEBUG_CHANNEL(imm)
HIMC WINAPI ImmAssociateContext(HWND hWnd, HIMC hIMC)
BOOL WINAPI ImmDestroySoftKeyboard(HWND hSoftWnd)
BOOL WINAPI ImmWINNLSGetEnableStatus(HWND hWnd)
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
HIMC NTAPI NtUserCreateInputContext(ULONG_PTR dwClientImcData)
#define INPUTCONTEXTDX_CHANGE_SENTENCE
#define INPUTCONTEXTDX_CHANGE_FORCE_OPEN
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
#define InterlockedIncrement
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
#define IME_PROP_COMPLETE_ON_UNSELECT
BOOL APIENTRY Imm32ReleaseIME(HKL hKL)
#define QUERY_WINDOW_DEFAULT_ICONTEXT
HWND WINAPI ImmCreateSoftKeyboard(UINT uType, UINT hOwner, int x, int y)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
#define IMM_INVALID_CANDFORM
LPVOID NTAPI LocalLock(HLOCAL hMem)
BOOL WINAPI ImmShowSoftKeyboard(HWND hSoftWnd, int nCmdShow)
BOOL NTAPI NtUserUpdateInputContext(HIMC hIMC, DWORD dwType, DWORD_PTR dwValue)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size)
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
static HIMC APIENTRY ImmGetSaveContext(HWND hWnd, DWORD dwContextFlags)
HKL WINAPI LoadKeyboardLayoutW(_In_ LPCWSTR, _In_ UINT)
PKEYBOARD_LAYOUT GetKeyboardLayout()
struct IME_STATE * pState
struct SELECT_LAYOUT * LPSELECT_LAYOUT
GLint GLint GLint GLint GLint GLint y
BOOL APIENTRY Imm32CheckImcProcess(PIMC pIMC)
BOOL(CALLBACK * IMCENUMPROC)(HIMC, LPARAM)
#define Imm32Is16BitMode()
PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL)
DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc)
#define ERROR_CALL_NOT_IMPLEMENTED
#define INPUTCONTEXTDX_CHANGE_CONVERSION
static VOID APIENTRY Imm32DestroyImeModeSaver(LPINPUTCONTEXTDX pIC)
BOOL APIENTRY Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
struct tagCANDIDATEINFO CANDIDATEINFO
static BOOL Imm32IsCrossProcessAccess(HWND hWnd)
static BOOL CALLBACK Imm32SelectContextProc(HIMC hIMC, LPARAM lParam)
BOOL WINAPI ImmActivateLayout(HKL hKL)
LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
HRESULT APIENTRY CtfImmTIMDestroyInputContext(HIMC hIMC)
NTSYSAPI NTSTATUS NTAPI RtlDeleteCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID
#define CLIENTIMC_UNKNOWN4
#define ISC_SHOWUIGUIDELINE
static SERVICE_STATUS status
BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
#define Imm32IsCiceroMode()
#define RegCloseKey(hKey)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
struct IME_SUBSTATE * pNext
BOOL WINAPI ImmLoadLayout(HKL hKL, PIMEINFOEX pImeInfoEx)
HRESULT WINAPI CtfImmTIMActivate(HKL hKL)
#define ValidateHwnd(hwnd)
#define HKEY_LOCAL_MACHINE
VOID WINAPI ImmUnlockClientImc(PCLIENTIMC pClientImc)