ReactOS  0.4.15-dev-3163-gf17c2c0
imm.c File Reference
#include <user32.h>
#include <strsafe.h>
#include "immtable.h"
Include dependency graph for imm.c:

Go to the source code of this file.

Macros

#define IMM_INIT_MAGIC   0x19650412
 
#define DEFINE_IMM_ENTRY(type, name, params, retval, retkind)   static type WINAPI IMMSTUB_##name params { IMM_RETURN_##retkind((type)retval); }
 
#define DEFINE_IMM_ENTRY(type, name, params, retval, retkind)   IMMSTUB_##name,
 
#define DEFINE_IMM_ENTRY(type, name, params, retval, retkind)
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (user32)
 
HRESULT GetImmFileName (_Out_ LPWSTR lpBuffer, _In_ size_t cchBuffer)
 
static BOOL IntInitializeImmEntryTable (VOID)
 
BOOL WINAPI InitializeImmEntryTable (VOID)
 
BOOL WINAPI User32InitializeImmEntryTable (DWORD magic)
 
LRESULT WINAPI ImeWndProc_common (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode)
 
LRESULT WINAPI ImeWndProcA (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
LRESULT WINAPI ImeWndProcW (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
BOOL WINAPI UpdatePerUserImmEnabling (VOID)
 
BOOL WINAPI RegisterIMEClass (VOID)
 
BOOL WINAPI CliImmSetHotKey (DWORD dwID, UINT uModifiers, UINT uVirtualKey, HKL hKl)
 
BOOL WINAPI IMPSetIMEW (HWND hwnd, LPIMEPROW ime)
 
BOOL WINAPI IMPQueryIMEW (LPIMEPROW ime)
 
BOOL WINAPI IMPGetIMEW (HWND hwnd, LPIMEPROW ime)
 
BOOL WINAPI IMPSetIMEA (HWND hwnd, LPIMEPROA ime)
 
BOOL WINAPI IMPQueryIMEA (LPIMEPROA ime)
 
BOOL WINAPI IMPGetIMEA (HWND hwnd, LPIMEPROA ime)
 
LRESULT WINAPI SendIMEMessageExW (HWND hwnd, LPARAM lParam)
 
LRESULT WINAPI SendIMEMessageExA (HWND hwnd, LPARAM lParam)
 
BOOL WINAPI WINNLSEnableIME (HWND hwnd, BOOL enable)
 
BOOL WINAPI WINNLSGetEnableStatus (HWND hwnd)
 
UINT WINAPI WINNLSGetIMEHotkey (HWND hwnd)
 

Variables

HINSTANCE ghImm32 = NULL
 
BOOL bImmInitializing = FALSE
 
Imm32ApiTable gImmApiEntries
 
static const WCHAR imeW [] = {'I','M','E',0}
 

Macro Definition Documentation

◆ DEFINE_IMM_ENTRY [1/3]

#define DEFINE_IMM_ENTRY (   type,
  name,
  params,
  retval,
  retkind 
)    static type WINAPI IMMSTUB_##name params { IMM_RETURN_##retkind((type)retval); }

Definition at line 26 of file imm.c.

◆ DEFINE_IMM_ENTRY [2/3]

#define DEFINE_IMM_ENTRY (   type,
  name,
  params,
  retval,
  retkind 
)    IMMSTUB_##name,

Definition at line 26 of file imm.c.

◆ DEFINE_IMM_ENTRY [3/3]

#define DEFINE_IMM_ENTRY (   type,
  name,
  params,
  retval,
  retkind 
)
Value:
do { \
FN_##name proc = (FN_##name)GetProcAddress(imm32, #name); \
if (!proc) { \
ERR("Could not load %s\n", #name); \
return FALSE; \
} \
IMM_FN(name) = proc; \
} while (0);
static HANDLE proc()
Definition: pdb.c:32
#define FALSE
Definition: types.h:117
Definition: name.c:38
#define GetProcAddress(x, y)
Definition: compat.h:612
GLuint const GLchar * name
Definition: glext.h:6031

Definition at line 26 of file imm.c.

◆ IMM_INIT_MAGIC

#define IMM_INIT_MAGIC   0x19650412

Definition at line 17 of file imm.c.

Function Documentation

◆ CliImmSetHotKey()

BOOL WINAPI CliImmSetHotKey ( DWORD  dwID,
UINT  uModifiers,
UINT  uVirtualKey,
HKL  hKl 
)

Definition at line 257 of file imm.c.

258 {
260  return FALSE;
261 }
#define FALSE
Definition: types.h:117
#define UNIMPLEMENTED
Definition: debug.h:115

◆ GetImmFileName()

HRESULT GetImmFileName ( _Out_ LPWSTR  lpBuffer,
_In_ size_t  cchBuffer 
)

Definition at line 39 of file imm.c.

41 {
43  if (length && length < cchBuffer)
44  {
46  return StringCchCatW(lpBuffer, cchBuffer, L"imm32.dll");
47  }
48  return StringCchCopyW(lpBuffer, cchBuffer, L"imm32.dll");
49 }
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:325
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
static DWORD cchBuffer
Definition: fusion.c:85
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
static const WCHAR L[]
Definition: oid.c:1250
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2312
unsigned int UINT
Definition: ndis.h:50

Referenced by DllMain(), IntInitializeImmEntryTable(), and User32InitializeImmEntryTable().

◆ ImeWndProc_common()

LRESULT WINAPI ImeWndProc_common ( HWND  hwnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam,
BOOL  unicode 
)

Definition at line 136 of file imm.c.

137 {
138  PWND pWnd;
139  PIMEUI pimeui;
140 
141  pWnd = ValidateHwnd(hwnd);
142  if (pWnd)
143  {
144  if (!pWnd->fnid)
145  {
146  if (msg != WM_NCCREATE)
147  {
148  if (unicode)
149  return DefWindowProcW(hwnd, msg, wParam, lParam);
150  return DefWindowProcA(hwnd, msg, wParam, lParam);
151  }
153  pimeui = HeapAlloc( GetProcessHeap(), 0, sizeof(IMEUI) );
154  SetWindowLongPtrW(hwnd, 0, (LONG_PTR)pimeui);
155  }
156  else
157  {
158  if (pWnd->fnid != FNID_IME)
159  {
160  ERR("Wrong window class for Ime! fnId 0x%x\n",pWnd->fnid);
161  return 0;
162  }
163  pimeui = ((PIMEWND)pWnd)->pimeui;
164  if (pimeui == NULL)
165  {
166  ERR("Window is not set to IME!\n");
167  return 0;
168  }
169  }
170  }
171 
172  if (msg==WM_CREATE || msg==WM_NCCREATE)
173  return TRUE;
174 
175  if (msg==WM_NCDESTROY)
176  {
177  HeapFree( GetProcessHeap(), 0, pimeui );
178  SetWindowLongPtrW(hwnd, 0, 0);
180  }
181 
182  if (unicode)
183  return DefWindowProcW(hwnd, msg, wParam, lParam);
184  return DefWindowProcA(hwnd, msg, wParam, lParam);
185 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
#define FNID_DESTROY
Definition: ntuser.h:868
#define WM_NCCREATE
Definition: winuser.h:1666
WPARAM wParam
Definition: combotst.c:138
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
DWORD fnid
Definition: ntuser.h:679
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define WM_NCDESTROY
Definition: winuser.h:1667
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define ERR(fmt,...)
Definition: debug.h:110
Definition: ntuser.h:663
struct _IMEWND * PIMEWND
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define NULL
Definition: types.h:112
#define msg(x)
Definition: auth_time.c:54
#define WM_CREATE
Definition: winuser.h:1591
BOOL NTAPI NtUserSetWindowFNID(HWND hWnd, WORD fnID)
Definition: window.c:4084
#define SetWindowLongPtrW
Definition: winuser.h:5322
LPARAM lParam
Definition: combotst.c:139
#define HeapFree(x, y, z)
Definition: compat.h:594
#define FNID_IME
Definition: ntuser.h:844

Referenced by ImeWndProcA(), ImeWndProcW(), and RegisterClientPFN().

◆ ImeWndProcA()

LRESULT WINAPI ImeWndProcA ( HWND  hwnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 187 of file imm.c.

188 {
190 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
LRESULT WINAPI ImeWndProc_common(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode)
Definition: imm.c:136
WPARAM wParam
Definition: combotst.c:138
#define FALSE
Definition: types.h:117
#define msg(x)
Definition: auth_time.c:54
LPARAM lParam
Definition: combotst.c:139

Referenced by RegisterClientPFN().

◆ ImeWndProcW()

LRESULT WINAPI ImeWndProcW ( HWND  hwnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 192 of file imm.c.

193 {
195 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
LRESULT WINAPI ImeWndProc_common(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode)
Definition: imm.c:136
WPARAM wParam
Definition: combotst.c:138
#define msg(x)
Definition: auth_time.c:54
LPARAM lParam
Definition: combotst.c:139

Referenced by RegisterClientPFN(), and RegisterIMEClass().

◆ IMPGetIMEA()

BOOL WINAPI IMPGetIMEA ( HWND  hwnd,
LPIMEPROA  ime 
)

Definition at line 318 of file imm.c.

319 {
320  return IMM_FN(ImmIMPGetIMEA)(hwnd, ime);
321 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define IMM_FN(name)
Definition: user32p.h:56

◆ IMPGetIMEW()

BOOL WINAPI IMPGetIMEW ( HWND  hwnd,
LPIMEPROW  ime 
)

Definition at line 288 of file imm.c.

289 {
290  return IMM_FN(ImmIMPGetIMEW)(hwnd, ime);
291 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define IMM_FN(name)
Definition: user32p.h:56

◆ IMPQueryIMEA()

BOOL WINAPI IMPQueryIMEA ( LPIMEPROA  ime)

Definition at line 308 of file imm.c.

309 {
310  return IMM_FN(ImmIMPQueryIMEA)(ime);
311 }
#define IMM_FN(name)
Definition: user32p.h:56

◆ IMPQueryIMEW()

BOOL WINAPI IMPQueryIMEW ( LPIMEPROW  ime)

Definition at line 278 of file imm.c.

279 {
280  return IMM_FN(ImmIMPQueryIMEW)(ime);
281 }
#define IMM_FN(name)
Definition: user32p.h:56

◆ IMPSetIMEA()

BOOL WINAPI IMPSetIMEA ( HWND  hwnd,
LPIMEPROA  ime 
)

Definition at line 298 of file imm.c.

299 {
300  return IMM_FN(ImmIMPSetIMEA)(hwnd, ime);
301 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define IMM_FN(name)
Definition: user32p.h:56

◆ IMPSetIMEW()

BOOL WINAPI IMPSetIMEW ( HWND  hwnd,
LPIMEPROW  ime 
)

Definition at line 268 of file imm.c.

269 {
270  return IMM_FN(ImmIMPSetIMEW)(hwnd, ime);
271 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define IMM_FN(name)
Definition: user32p.h:56

◆ InitializeImmEntryTable()

BOOL WINAPI InitializeImmEntryTable ( VOID  )

Definition at line 102 of file imm.c.

103 {
106 }
#define TRUE
Definition: types.h:120
static BOOL IntInitializeImmEntryTable(VOID)
Definition: imm.c:54
BOOL bImmInitializing
Definition: imm.c:22

Referenced by DllMain().

◆ IntInitializeImmEntryTable()

static BOOL IntInitializeImmEntryTable ( VOID  )
static

Definition at line 54 of file imm.c.

55 {
56  WCHAR ImmFile[MAX_PATH];
57  HMODULE imm32 = ghImm32;
58 
59  /* Check whether the IMM table has already been initialized */
60  if (IMM_FN(ImmWINNLSEnableIME) != IMMSTUB_ImmWINNLSEnableIME)
61  return TRUE;
62 
63  GetImmFileName(ImmFile, _countof(ImmFile));
64  TRACE("File %S\n", ImmFile);
65 
66  /* If IMM32 is already loaded, use it without increasing reference count. */
67  if (imm32 == NULL)
68  imm32 = GetModuleHandleW(ImmFile);
69 
70  /*
71  * Loading imm32.dll will call imm32!DllMain function.
72  * imm32!DllMain calls User32InitializeImmEntryTable.
73  * Thus, if imm32.dll was loaded, the table has been loaded.
74  */
75  if (imm32 == NULL)
76  {
77  imm32 = ghImm32 = LoadLibraryW(ImmFile);
78  if (imm32 == NULL)
79  {
80  ERR("Did not load imm32.dll!\n");
81  return FALSE;
82  }
83  return TRUE;
84  }
85 
86 /* load imm procedures */
87 #undef DEFINE_IMM_ENTRY
88 #define DEFINE_IMM_ENTRY(type, name, params, retval, retkind) \
89  do { \
90  FN_##name proc = (FN_##name)GetProcAddress(imm32, #name); \
91  if (!proc) { \
92  ERR("Could not load %s\n", #name); \
93  return FALSE; \
94  } \
95  IMM_FN(name) = proc; \
96  } while (0);
97 #include "immtable.h"
98 
99  return TRUE;
100 }
HRESULT GetImmFileName(_Out_ LPWSTR lpBuffer, _In_ size_t cchBuffer)
Definition: imm.c:39
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define LoadLibraryW(x)
Definition: compat.h:606
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define _countof(array)
Definition: sndvol32.h:68
#define MAX_PATH
Definition: compat.h:34
#define ERR(fmt,...)
Definition: debug.h:110
HINSTANCE ghImm32
Definition: imm.c:20
#define NULL
Definition: types.h:112
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
#define IMM_FN(name)
Definition: user32p.h:56

Referenced by InitializeImmEntryTable(), and User32InitializeImmEntryTable().

◆ RegisterIMEClass()

BOOL WINAPI RegisterIMEClass ( VOID  )

Definition at line 225 of file imm.c.

226 {
228  ATOM atom;
229 
230  ZeroMemory(&WndClass, sizeof(WndClass));
231 
232  WndClass.cbSize = sizeof(WndClass);
233  WndClass.lpszClassName = imeW;
234  WndClass.style = CS_GLOBALCLASS;
235  WndClass.lpfnWndProc = ImeWndProcW;
236  WndClass.cbWndExtra = sizeof(LONG_PTR);
237  WndClass.hCursor = LoadCursorW(NULL, IDC_ARROW);
238 
239  atom = RegisterClassExWOWW( &WndClass,
240  0,
241  FNID_IME,
242  0,
243  FALSE);
244  if (atom)
245  {
247  TRACE("Register IME Class!\n");
248  return TRUE;
249  }
250  ERR("Failed to register IME Class!\n");
251  return FALSE;
252 }
#define LONG_PTR
Definition: treelist.c:79
WORD ATOM
Definition: dimm.idl:113
#define TRUE
Definition: types.h:120
LRESULT WINAPI ImeWndProcW(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: imm.c:192
#define ZeroMemory
Definition: winbase.h:1664
ATOM WINAPI RegisterClassExWOWW(WNDCLASSEXW *, LPDWORD, WORD, DWORD, BOOL)
Definition: class.c:1411
#define FALSE
Definition: types.h:117
static const WCHAR imeW[]
Definition: imm.c:221
#define TRACE(s)
Definition: solgame.cpp:4
#define CS_GLOBALCLASS
Definition: winuser.h:647
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2074
#define ICLS_IME
Definition: ntuser.h:897
#define ERR(fmt,...)
Definition: debug.h:110
#define NULL
Definition: types.h:112
#define IDC_ARROW
Definition: winuser.h:682
#define ICLASS_TO_MASK(iCls)
Definition: ntuser.h:872
DWORD RegisterDefaultClasses
Definition: regcontrol.c:13
WCHAR WndClass[]
Definition: capicon.c:23
#define FNID_IME
Definition: ntuser.h:844

Referenced by RegisterSystemControls().

◆ SendIMEMessageExA()

LRESULT WINAPI SendIMEMessageExA ( HWND  hwnd,
LPARAM  lParam 
)

Definition at line 338 of file imm.c.

339 {
340  return IMM_FN(ImmSendIMEMessageExA)(hwnd, lParam);
341 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
LPARAM lParam
Definition: combotst.c:139
#define IMM_FN(name)
Definition: user32p.h:56

◆ SendIMEMessageExW()

LRESULT WINAPI SendIMEMessageExW ( HWND  hwnd,
LPARAM  lParam 
)

Definition at line 328 of file imm.c.

329 {
330  return IMM_FN(ImmSendIMEMessageExW)(hwnd, lParam);
331 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
LPARAM lParam
Definition: combotst.c:139
#define IMM_FN(name)
Definition: user32p.h:56

◆ UpdatePerUserImmEnabling()

BOOL WINAPI UpdatePerUserImmEnabling ( VOID  )

Definition at line 199 of file imm.c.

200 {
202  if ( Ret )
203  {
204  if ( gpsi->dwSRVIFlags & SRVINFO_IMM32 )
205  {
206  HMODULE imm32 = GetModuleHandleW(L"imm32.dll");
207  if ( !imm32 )
208  {
209  imm32 = LoadLibraryW(L"imm32.dll");
210  if (!imm32)
211  {
212  ERR("UPUIE: Imm32 not installed!\n");
213  Ret = FALSE;
214  }
215  }
216  }
217  }
218  return Ret;
219 }
PSERVERINFO gpsi
Definition: main.c:27
#define FALSE
Definition: types.h:117
DWORD dwSRVIFlags
Definition: ntuser.h:1013
unsigned int BOOL
Definition: ntddk_ex.h:94
#define LoadLibraryW(x)
Definition: compat.h:606
static const WCHAR L[]
Definition: oid.c:1250
DWORD_PTR NTAPI NtUserCallNoParam(DWORD Routine)
Definition: simplecall.c:59
#define ERR(fmt,...)
Definition: debug.h:110
#define SRVINFO_IMM32
Definition: ntuser.h:919
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838

Referenced by UpdatePerUserSystemParameters().

◆ User32InitializeImmEntryTable()

BOOL WINAPI User32InitializeImmEntryTable ( DWORD  magic)

Definition at line 108 of file imm.c.

109 {
110  TRACE("Imm (%x)\n", magic);
111 
112  if (magic != IMM_INIT_MAGIC)
113  return FALSE;
114 
115  /* Check whether the IMM table has already been initialized */
116  if (IMM_FN(ImmWINNLSEnableIME) != IMMSTUB_ImmWINNLSEnableIME)
117  return TRUE;
118 
120 
121  if (ghImm32 == NULL && !bImmInitializing)
122  {
123  WCHAR ImmFile[MAX_PATH];
124  GetImmFileName(ImmFile, _countof(ImmFile));
125  ghImm32 = LoadLibraryW(ImmFile);
126  if (ghImm32 == NULL)
127  {
128  ERR("Did not load imm32.dll!\n");
129  return FALSE;
130  }
131  }
132 
134 }
HRESULT GetImmFileName(_Out_ LPWSTR lpBuffer, _In_ size_t cchBuffer)
Definition: imm.c:39
#define TRUE
Definition: types.h:120
u32_t magic(void)
BOOL WINAPI ImmRegisterClient(PSHAREDINFO ptr, HINSTANCE hMod)
Definition: imm.c:44
#define FALSE
Definition: types.h:117
#define LoadLibraryW(x)
Definition: compat.h:606
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define _countof(array)
Definition: sndvol32.h:68
#define MAX_PATH
Definition: compat.h:34
static BOOL IntInitializeImmEntryTable(VOID)
Definition: imm.c:54
#define ERR(fmt,...)
Definition: debug.h:110
HINSTANCE ghImm32
Definition: imm.c:20
SHAREDINFO gSharedInfo
Definition: dllmain.c:30
#define NULL
Definition: types.h:112
BOOL bImmInitializing
Definition: imm.c:22
#define IMM_INIT_MAGIC
Definition: imm.c:17
#define IMM_FN(name)
Definition: user32p.h:56

Referenced by DllMain().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( user32  )

◆ WINNLSEnableIME()

BOOL WINAPI WINNLSEnableIME ( HWND  hwnd,
BOOL  enable 
)

Definition at line 348 of file imm.c.

349 {
350  return IMM_FN(ImmWINNLSEnableIME)(hwnd, enable);
351 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
GLboolean enable
Definition: glext.h:11120
#define IMM_FN(name)
Definition: user32p.h:56

◆ WINNLSGetEnableStatus()

BOOL WINAPI WINNLSGetEnableStatus ( HWND  hwnd)

Definition at line 358 of file imm.c.

359 {
360  return IMM_FN(ImmWINNLSGetEnableStatus)(hwnd);
361 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define IMM_FN(name)
Definition: user32p.h:56

◆ WINNLSGetIMEHotkey()

UINT WINAPI WINNLSGetIMEHotkey ( HWND  hwnd)

Definition at line 368 of file imm.c.

369 {
370  return FALSE;
371 }
#define FALSE
Definition: types.h:117

Variable Documentation

◆ bImmInitializing

BOOL bImmInitializing = FALSE

Definition at line 22 of file imm.c.

Referenced by InitializeImmEntryTable(), and User32InitializeImmEntryTable().

◆ ghImm32

HINSTANCE ghImm32 = NULL

Definition at line 20 of file imm.c.

Referenced by DllMain(), IntInitializeImmEntryTable(), and User32InitializeImmEntryTable().

◆ gImmApiEntries

Imm32ApiTable gImmApiEntries
Initial value:
= {
#define DEFINE_IMM_ENTRY(type, name, params, retval, retkind)
}

Definition at line 30 of file imm.c.

◆ imeW

const WCHAR imeW[] = {'I','M','E',0}
static

Definition at line 221 of file imm.c.

Referenced by is_ime_window_proc(), and RegisterIMEClass().