16 #define IMM_INIT_MAGIC 0x19650412 17 #define MAX_CANDIDATEFORM 4 41 #undef DEFINE_IMM_ENTRY 42 #define DEFINE_IMM_ENTRY(type, name, params, retval, retkind) \ 43 static type WINAPI IMMSTUB_##name params { IMM_RETURN_##retkind((type)retval); } 49 #undef DEFINE_IMM_ENTRY 50 #define DEFINE_IMM_ENTRY(type, name, params, retval, retkind) \ 76 if (
IMM_FN(ImmWINNLSEnableIME) != IMMSTUB_ImmWINNLSEnableIME)
80 TRACE(
"File %S\n", ImmFile);
96 ERR(
"Did not load imm32.dll!\n");
103 #undef DEFINE_IMM_ENTRY 104 #define DEFINE_IMM_ENTRY(type, name, params, retval, retkind) \ 106 FN_##name proc = (FN_##name)GetProcAddress(imm32, #name); \ 108 ERR("Could not load %s\n", #name); \ 111 IMM_FN(name) = proc; \ 134 if (
IMM_FN(ImmWINNLSEnableIME) != IMMSTUB_ImmWINNLSEnableIME)
146 ERR(
"Did not load imm32.dll!\n");
177 pwnd = pimeui->
spwnd;
216 if (!pIMC || pIMC->
hImeWnd == hImeWnd)
231 if (hNewIMC == hOldIMC)
237 pimeui->
hIMC = hNewIMC;
249 HWND hwndUI, hwndIMC, hImeWnd, hwndOwner;
324 szUIClass[
_countof(szUIClass) - 1] = 0;
350 hIMC = pParentWnd->
hImc;
422 DWORD dwConversion, dwSentence;
563 DWORD dwConversion, dwSentence;
618 pCandForm = &pIC->cfCandForm[
lParam];
637 pCompForm = &pIC->cfCompForm;
711 HWND hwndFocus, hwndOldImc, hwndNewImc, hImeWnd, hwndActive, hwndOwner;
712 PWND pwndFocus, pImeWnd, pwndOwner;
769 if (hwndFocus != pIC->hWnd)
775 if ((pIC->
dwUIFlags & 0x40000) && hwndOldImc != hwndFocus)
813 if (pwndFocus && pImeWnd && pImeWnd->
head.pti == pwndFocus->
head.pti)
818 if (hwndOldImc && hwndNewImc && hwndOldImc != hwndNewImc &&
832 pImeWnd = pimeui->
spwnd;
839 pImeWnd = pimeui->
spwnd;
842 if (!pwndFocus || !hwndActive || pImeWnd->
head.pti != pwndFocus->
head.pti)
879 pimeui->
spwnd = pWnd;
886 ERR(
"Wrong window class for Ime! fnId 0x%x\n",pWnd->
fnid);
889 pimeui = ((
PIMEWND)pWnd)->pimeui;
892 ERR(
"Window is not set to IME!\n");
909 case WM_IME_STARTCOMPOSITION:
910 case WM_IME_COMPOSITION:
911 case WM_IME_ENDCOMPOSITION:
961 case WM_IME_STARTCOMPOSITION:
962 case WM_IME_COMPOSITION:
963 case WM_IME_ENDCOMPOSITION:
1025 ERR(
"UPUIE: Imm32 not installed!\n");
1048 ERR(
"Failed to register IME Class!\n");
1053 TRACE(
"RegisterIMEClass atom = %u\n", atom);
VOID WINAPI ImmUnlockImeDpi(PIMEDPI pImeDpi)
static BOOL User32CanSetImeWindowToImc(HIMC hIMC, HWND hImeWnd)
UINT WINAPI WINNLSGetIMEHotkey(HWND hwnd)
static VOID User32NotifyOpenStatus(PIMEUI pimeui, HWND hwndIMC, BOOL bOpen)
#define IMC_GETCOMPOSITIONFONT
#define IMN_CLOSESTATUSWINDOW
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
BOOL WINAPI ImmSetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
#define IMN_OPENSTATUSWINDOW
#define WideCharToMultiByte
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define IMC_SETCANDIDATEPOS
BOOL WINAPI ImmGetOpenStatus(HIMC hIMC)
static LRESULT ImeWnd_OnImeNotify(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
BOOL WINAPI ImmGetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
#define IMC_SETCOMPOSITIONFONT
#define MAX_CANDIDATEFORM
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
BOOL WINAPI IMPGetIMEA(HWND hwnd, LPIMEPROA ime)
BOOL WINAPI ImmGetImeInfoEx(PIMEINFOEX pImeInfoEx, IMEINFOEXCLASS SearchType, PVOID pvSearchKey)
DWORD NTAPI NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion)
BOOL WINAPI ImmLoadIME(HKL hKL)
LRESULT WINAPI ImeWndProcW(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
BOOL WINAPI WINNLSEnableIME(HWND hwnd, BOOL enable)
static LRESULT User32SendImeUIMessage(PIMEUI pimeui, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL unicode)
#define IMC_GETCONVERSIONMODE
BOOL WINAPI IMPSetIMEW(HWND hwnd, LPIMEPROW ime)
#define GetWin32ClientInfo()
HRESULT User32GetImmFileName(_Out_ LPWSTR lpBuffer, _In_ size_t cchBuffer)
#define GetWindowLongPtrW
LRESULT WINAPI ImeWndProc_common(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode)
WORD WINAPI ImmSendIMEMessageExA(HWND hWnd, LPARAM lParam)
BOOL WINAPI ImmGetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
BOOL WINAPI ImmGetCandidateWindow(HIMC hIMC, DWORD dwIndex, LPCANDIDATEFORM lpCandidate)
static VOID User32SetImeWindowOfImc(HIMC hIMC, HWND hImeWnd)
BOOL WINAPI ImmSetConversionStatus(HIMC hIMC, DWORD fdwConversion, DWORD fdwSentence)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
#define WM_IME_COMPOSITIONFULL
BOOL WINAPI ImmRegisterClient(PSHAREDINFO ptr, HINSTANCE hMod)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendIMEMessageExA(HWND hwnd, LPARAM lParam)
BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
ATOM WINAPI RegisterClassExWOWW(WNDCLASSEXW *, LPDWORD, WORD, DWORD, BOOL)
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
BOOL WINAPI ImmSetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
#define IMS_IMEDEACTIVATE
#define QUERY_WINDOW_FOCUS
#define IMN_SETOPENSTATUS
#define IMC_GETSTATUSWINDOWPOS
BOOL WINAPI ImmSetOpenStatus(HIMC hIMC, BOOL fOpen)
BOOL WINAPI ImmIMPQueryIMEW(LPIMEPROW pImePro)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
BOOL WINAPI ImmFreeLayout(DWORD dwUnknown)
BOOL WINAPI ImmIMPSetIMEA(HWND hWnd, LPIMEPROA pImePro)
GLenum GLuint GLenum GLsizei length
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL NTAPI NtUserCallHwndLock(HWND hWnd, DWORD Routine)
static VOID User32DestroyImeUIWindow(PIMEUI pimeui)
BOOL NTAPI NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus)
BOOL WINAPI User32InitializeImmEntryTable(DWORD)
BOOLEAN NTAPI NtUserDestroyWindow(HWND Wnd)
BOOL WINAPI GetClassInfoW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSW)
BOOL WINAPI InitializeImmEntryTable(VOID)
BOOL WINAPI ImmGetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
#define IMC_CLOSESTATUSWINDOW
LRESULT ImeWnd_OnImeSetContext(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
BOOL WINAPI IMPGetIMEW(HWND hwnd, LPIMEPROW ime)
#define IMC_GETCOMPOSITIONWINDOW
LRESULT WINAPI ImeWndProcA(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
#define UserHMGetHandle(obj)
Imm32ApiTable gImmApiEntries
#define QUERY_WINDOW_ACTIVE
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define IMC_SETCONVERSIONMODE
#define WM_IME_SETCONTEXT
static LRESULT ImeWnd_OnImeSystem(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
HIMC WINAPI ImmGetContext(HWND hWnd)
PIMEDPI WINAPI ImmLockImeDpi(HKL hKL)
BOOL WINAPI ImmIMPGetIMEW(HWND hWnd, LPIMEPROW pImePro)
#define IMC_SETSTATUSWINDOWPOS
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
WORD WINAPI ImmSendIMEMessageExW(HWND hWnd, LPARAM lParam)
#define IMC_GETSOFTKBDPOS
static BOOL User32GetImeShowStatus(VOID)
#define IMC_GETCANDIDATEPOS
#define IMC_OPENSTATUSWINDOW
#define IMS_ACTIVATELAYOUT
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
#define InterlockedDecrement
static VOID FASTCALL User32SetImeActivenessOfWindow(HWND hWnd, BOOL bActive)
BOOL WINAPI ImmIMPSetIMEW(HWND hWnd, LPIMEPROW pImePro)
WINE_DEFAULT_DEBUG_CHANNEL(imm)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IMC_SETSENTENCEMODE
BOOL WINAPI ImmConfigureIMEW(HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData)
static VOID User32UpdateImcOfImeUI(PIMEUI pimeui, HIMC hNewIMC)
BOOL WINAPI ImmWINNLSGetEnableStatus(HWND hWnd)
DWORD NTAPI NtUserCallHwndParamLock(HWND hWnd, DWORD_PTR Param, DWORD Routine)
BOOL WINAPI ImmSetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
DWORD_PTR NTAPI NtUserCallNoParam(DWORD Routine)
BOOL WINAPI IMPQueryIMEW(LPIMEPROW ime)
static BOOL IntInitializeImmEntryTable(VOID)
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
LRESULT WINAPI ImmSystemHandler(HIMC hIMC, WPARAM wParam, LPARAM lParam)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI ImmGetConversionStatus(HIMC hIMC, LPDWORD lpfdwConversion, LPDWORD lpfdwSentence)
BOOL WINAPI WINNLSGetEnableStatus(HWND hwnd)
static HWND User32CreateImeUIWindow(PIMEUI pimeui, HKL hKL)
BOOL WINAPI IMPQueryIMEA(LPIMEPROA ime)
#define InterlockedIncrement
BOOL WINAPI RegisterIMEClass(VOID)
BOOL NTAPI NtUserUpdateInputContext(HIMC hIMC, DWORD dwType, DWORD_PTR dwValue)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IMN_SETCONVERSIONMODE
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define IMC_SETOPENSTATUS
static BOOL ImeWnd_OnCreate(PIMEUI pimeui, LPCREATESTRUCT lpCS)
#define IME_CONFIG_GENERAL
BOOL WINAPI UpdatePerUserImmEnabling(VOID)
static VOID ImeWnd_OnImeSelect(PIMEUI pimeui, WPARAM wParam, LPARAM lParam)
BOOL WINAPI ImmIMPQueryIMEA(LPIMEPROA pImePro)
BOOL WINAPI ImmSetCandidateWindow(HIMC hIMC, LPCANDIDATEFORM lpCandidate)
BOOL WINAPI IMPSetIMEA(HWND hwnd, LPIMEPROA ime)
BOOL WINAPI ImmIMPGetIMEA(HWND hWnd, LPIMEPROA pImePro)
#define ICLASS_TO_MASK(iCls)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
#define IMC_SETCOMPOSITIONWINDOW
#define RtlZeroMemory(Destination, Length)
BOOL NTAPI NtUserSetWindowFNID(HWND hWnd, WORD fnID)
LRESULT WINAPI SendIMEMessageExW(HWND hwnd, LPARAM lParam)
#define IMC_SETSOFTKBDPOS
#define SetWindowLongPtrW
DWORD RegisterDefaultClasses
#define IMC_GETOPENSTATUS
BOOL WINAPI ImmActivateLayout(HKL hKL)
LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
#define IMC_GETSENTENCEMODE
BOOL WINAPI ImmSetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
HWND FASTCALL IntGetTopLevelWindow(HWND hWnd)
BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
LONG NTAPI NtUserSetWindowLong(HWND hWnd, DWORD Index, LONG NewValue, BOOL Ansi)
#define HeapFree(x, y, z)
static LRESULT ImeWnd_OnImeControl(PIMEUI pimeui, WPARAM wParam, LPARAM lParam, BOOL unicode)
#define ValidateHwnd(hwnd)