Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

fareast.c

Go to the documentation of this file.
00001 /**************************************************************************\ 00002 * Module Name: fareast.c 00003 * 00004 * Win32 IMM/IME API functions 00005 * 00006 * Copyright (c) 1985 - 1999, Microsoft Corporation 00007 * 00008 * History: 00009 * 07-May-1996 takaok Created. 00010 \**************************************************************************/ 00011 00012 #include "precomp.h" 00013 #pragma hdrstop 00014 00015 #define COMMON_RETURN_ZERO \ 00016 return 0; 00017 00019 // Fake routines 00021 00022 VOID fakeImm_v1(PVOID dummy) 00023 { 00024 UNREFERENCED_PARAMETER(dummy); 00025 } 00026 00027 DWORD fakeImm_d1(DWORD dummy) 00028 { 00029 UNREFERENCED_PARAMETER(dummy); 00030 return 0; 00031 } 00032 00033 VOID fakeImm_v2(PVOID dummy1, PVOID dummy2) 00034 { 00035 UNREFERENCED_PARAMETER(dummy1); 00036 UNREFERENCED_PARAMETER(dummy2); 00037 } 00038 00039 DWORD fakeImm_d2(DWORD dummy1, DWORD dummy2) 00040 { 00041 UNREFERENCED_PARAMETER(dummy1); 00042 UNREFERENCED_PARAMETER(dummy2); 00043 return 0; 00044 } 00045 00046 DWORD fakeImm_d3(DWORD dummy1, DWORD dummy2, DWORD dummy3) 00047 { 00048 UNREFERENCED_PARAMETER(dummy1); 00049 UNREFERENCED_PARAMETER(dummy2); 00050 UNREFERENCED_PARAMETER(dummy3); 00051 return 0; 00052 } 00053 00054 DWORD fakeImm_bwuwl(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 00055 { 00056 UNREFERENCED_PARAMETER(hwnd); 00057 UNREFERENCED_PARAMETER(msg); 00058 UNREFERENCED_PARAMETER(wParam); 00059 UNREFERENCED_PARAMETER(lParam); 00060 return 0; 00061 } 00062 00063 00064 VOID WINAPI fakeImm_wv1(PVOID dummy) 00065 { 00066 UNREFERENCED_PARAMETER(dummy); 00067 } 00068 00069 DWORD WINAPI fakeImm_wd1(PVOID dummy) 00070 { 00071 UNREFERENCED_PARAMETER(dummy); 00072 COMMON_RETURN_ZERO; 00073 } 00074 00075 DWORD WINAPI fakeImm_wd2(PVOID dummy1, PVOID dummy2) 00076 { 00077 UNREFERENCED_PARAMETER(dummy1); 00078 UNREFERENCED_PARAMETER(dummy2); 00079 COMMON_RETURN_ZERO; 00080 } 00081 00082 // 00083 // This stub returns true. 00084 // 00085 BOOL WINAPI fakeImm_bd2(PVOID dummy1, PVOID dummy2) 00086 { 00087 UNREFERENCED_PARAMETER(dummy1); 00088 UNREFERENCED_PARAMETER(dummy2); 00089 return TRUE; 00090 } 00091 00092 DWORD WINAPI fakeImm_wd3(PVOID dummy1, PVOID dummy2, PVOID dummy3) 00093 { 00094 UNREFERENCED_PARAMETER(dummy1); 00095 UNREFERENCED_PARAMETER(dummy2); 00096 UNREFERENCED_PARAMETER(dummy3); 00097 00098 COMMON_RETURN_ZERO; 00099 } 00100 00101 DWORD WINAPI fakeImm_wd4(PVOID dummy1, PVOID dummy2, PVOID dummy3, PVOID dummy4) 00102 { 00103 UNREFERENCED_PARAMETER(dummy1); 00104 UNREFERENCED_PARAMETER(dummy2); 00105 UNREFERENCED_PARAMETER(dummy3); 00106 UNREFERENCED_PARAMETER(dummy4); 00107 00108 COMMON_RETURN_ZERO; 00109 } 00110 00111 DWORD WINAPI fakeImm_wd5(PVOID dummy1, PVOID dummy2, PVOID dummy3, PVOID dummy4, PVOID dummy5) 00112 { 00113 UNREFERENCED_PARAMETER(dummy1); 00114 UNREFERENCED_PARAMETER(dummy2); 00115 UNREFERENCED_PARAMETER(dummy3); 00116 UNREFERENCED_PARAMETER(dummy4); 00117 UNREFERENCED_PARAMETER(dummy5); 00118 00119 COMMON_RETURN_ZERO; 00120 } 00121 00122 DWORD WINAPI fakeImm_wd6(PVOID dummy1, PVOID dummy2, PVOID dummy3, PVOID dummy4, PVOID dummy5, PVOID dummy6) 00123 { 00124 UNREFERENCED_PARAMETER(dummy1); 00125 UNREFERENCED_PARAMETER(dummy2); 00126 UNREFERENCED_PARAMETER(dummy3); 00127 UNREFERENCED_PARAMETER(dummy4); 00128 UNREFERENCED_PARAMETER(dummy5); 00129 UNREFERENCED_PARAMETER(dummy6); 00130 00131 COMMON_RETURN_ZERO; 00132 } 00133 00134 00135 ImmApiEntries gImmApiEntries = { 00136 (BOOL (WINAPI* /*ImmWINNLSEnableIME*/)(HWND, BOOL)) fakeImm_wd2, 00137 (BOOL (WINAPI* /*ImmWINNLSGetEnableStatus*/)(HWND)) fakeImm_wd1, 00138 (LRESULT (WINAPI* /*SendIMEMessageExW*/)(HWND, LPARAM)) fakeImm_wd2, 00139 (LRESULT (WINAPI* /*SendIMEMessageExA*/)(HWND, LPARAM)) fakeImm_wd2, 00140 (BOOL (WINAPI* /*IMPGetIMEW*/)(HWND, LPIMEPROW)) fakeImm_wd2, 00141 (BOOL (WINAPI* /*IMPGetIMEA*/)(HWND, LPIMEPROA)) fakeImm_wd2, 00142 (BOOL (WINAPI* /*IMPQueryIMEW*/)(LPIMEPROW)) fakeImm_wd1, 00143 (BOOL (WINAPI* /*IMPQueryIMEA*/)(LPIMEPROA)) fakeImm_wd1, 00144 (BOOL (WINAPI* /*IMPSetIMEW*/)(HWND, LPIMEPROW)) fakeImm_wd2, 00145 (BOOL (WINAPI* /*IMPSetIMEA*/)(HWND, LPIMEPROA)) fakeImm_wd2, 00146 00147 (HIMC (WINAPI* /*ImmAssociateContext*/)(HWND, HIMC)) fakeImm_wd2, 00148 (LRESULT (WINAPI* /*ImmEscapeA*/)(HKL, HIMC, UINT, LPVOID)) fakeImm_wd4, 00149 (LRESULT (WINAPI* /*ImmEscapeW*/)(HKL, HIMC, UINT, LPVOID)) fakeImm_wd4, 00150 (LONG (WINAPI* /*ImmGetCompositionStringA*/)(HIMC, DWORD, LPVOID, DWORD)) fakeImm_wd4, 00151 (LONG (WINAPI* /*ImmGetCompositionStringW*/)(HIMC, DWORD, LPVOID, DWORD)) fakeImm_wd4, 00152 (BOOL (WINAPI* /*ImmGetCompositionWindow*/)(HIMC, LPCOMPOSITIONFORM)) fakeImm_wd2, 00153 (HIMC (WINAPI* /*ImmGetContext*/)(HWND)) fakeImm_wd1, 00154 (HWND (WINAPI* /*ImmGetDefaultIMEWnd*/)(HWND)) fakeImm_wd1, 00155 (BOOL (WINAPI* /*ImmIsIME*/)(HKL)) fakeImm_wd1, 00156 (BOOL (WINAPI* /*ImmReleaseContext*/)(HWND, HIMC)) fakeImm_wd2, 00157 (BOOL (* /*ImmRegisterClient*/)(PSHAREDINFO, HINSTANCE)) fakeImm_bd2, 00158 00159 (BOOL (WINAPI* /*ImmGetCompositionFontW*/)(HIMC, LPLOGFONTW)) fakeImm_wd2, 00160 (BOOL (WINAPI* /*ImmGetCompositionFontA*/)(HIMC, LPLOGFONTA)) fakeImm_wd2, 00161 (BOOL (WINAPI* /*ImmSetCompositionFontW*/)(HIMC, LPLOGFONTW)) fakeImm_wd2, 00162 (BOOL (WINAPI* /*ImmSetCompositionFontA*/)(HIMC, LPLOGFONTA)) fakeImm_wd2, 00163 00164 (BOOL (WINAPI* /*ImmSetCompositionWindow*/)(HIMC, LPCOMPOSITIONFORM)) fakeImm_wd2, 00165 (BOOL (WINAPI* /*ImmNotifyIME*/)(HIMC, DWORD, DWORD, DWORD)) fakeImm_wd4, 00166 (PINPUTCONTEXT (WINAPI* /*ImmLockIMC*/)(HIMC)) fakeImm_wd1, 00167 (BOOL (WINAPI* /*ImmUnlockIMC*/)(HIMC)) fakeImm_wd1, 00168 (BOOL (WINAPI* /*ImmLoadIME*/)(HKL)) fakeImm_wd1, 00169 (BOOL (WINAPI* /*ImmSetOpenStatus*/)(HIMC, BOOL)) fakeImm_wd2, 00170 (BOOL (WINAPI* /*ImmFreeLayout*/)(DWORD dwFlag)) fakeImm_wd1, 00171 (BOOL (WINAPI* /*ImmActivateLayout*/)(HKL)) fakeImm_wd1, 00172 (BOOL (WINAPI* /*ImmSetCandidateWindow*/)(HIMC, LPCANDIDATEFORM)) fakeImm_wd2, 00173 (BOOL (WINAPI* /*ImmConfigureIMEW*/)(HKL, HWND, DWORD, LPVOID)) fakeImm_wd4, 00174 (BOOL (WINAPI* /*ImmGetConversionStatus*/)(HIMC, LPDWORD, LPDWORD)) fakeImm_wd3, 00175 (BOOL (WINAPI* /*ImmSetConversionStatus*/)(HIMC, DWORD, DWORD)) fakeImm_wd3, 00176 (BOOL (WINAPI* /*ImmSetStatusWindowPos*/)(HIMC, LPPOINT)) fakeImm_wd2, 00177 (BOOL (WINAPI* /*ImmGetImeInfoEx*/)(PIMEINFOEX, IMEINFOEXCLASS, PVOID)) fakeImm_wd3, 00178 (PIMEDPI (WINAPI* /*ImmLockImeDpi*/)(HKL)) fakeImm_wd1, 00179 (VOID (WINAPI* /*ImmUnlockImeDpi*/)(PIMEDPI)) fakeImm_wv1, 00180 (BOOL (WINAPI* /*ImmGetOpenStatus*/)(HIMC)) fakeImm_wd1, 00181 (BOOL (* /*ImmSetActiveContext*/)(HWND, HIMC, BOOL)) fakeImm_d3, 00182 (BOOL (* /*ImmTranslateMessage*/)(HWND, UINT, WPARAM, LPARAM)) fakeImm_bwuwl, 00183 (BOOL (* /*ImmLoadLayout*/)(HKL, PIMEINFOEX)) fakeImm_d2, 00184 (DWORD (WINAPI* /*ImmProcessKey*/)(HWND, HKL, UINT, LPARAM, DWORD)) fakeImm_wd5, 00185 (LRESULT (* /*ImmPutImeMenuItemsIntoMappedFile*/)(HIMC)) fakeImm_d1, 00186 (DWORD (WINAPI* /*ImmGetProperty*/)(HKL, DWORD)) fakeImm_wd2, 00187 (BOOL (WINAPI* /*ImmSetCompositionStringA*/)( 00188 HIMC hImc, DWORD dwIndex, LPCVOID lpComp, DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen)) 00189 fakeImm_wd6, 00190 (BOOL (WINAPI* /*ImmSetCompositionStringW*/)( 00191 HIMC hImc, DWORD dwIndex, LPCVOID lpComp, DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen)) 00192 fakeImm_wd6, 00193 (BOOL (WINAPI* /*ImmEnumInputContext*/)( 00194 DWORD idThread, IMCENUMPROC lpfn, LPARAM lParam)) fakeImm_wd3, 00195 00196 (LRESULT (WINAPI* /*ImmSystemHandler*/)(HIMC, WPARAM, LPARAM)) 00197 fakeImm_wd3, 00198 }; 00199 00200 00201 // 00202 // Imm32's instance handle 00203 // 00204 // NULL if not initialized. 00205 // 00206 00207 HMODULE ghImm32; 00208 00209 #define IMMMODULENAME L"IMM32.DLL" 00210 #define PATHDLM L'\\' 00211 #define IMMMODULENAMELEN ((sizeof PATHDLM + sizeof IMMMODULENAME) / sizeof(WCHAR)) 00212 00213 VOID GetImmFileName(PWSTR wszImmFile) 00214 { 00215 UINT i = GetSystemDirectoryW(wszImmFile, MAX_PATH); 00216 if (i > 0 && i < MAX_PATH - IMMMODULENAMELEN) { 00217 wszImmFile += i; 00218 if (wszImmFile[-1] != PATHDLM) { 00219 *wszImmFile++ = PATHDLM; 00220 } 00221 } 00222 wcscpy(wszImmFile, IMMMODULENAME); 00223 } 00224 00225 #define REGISTER(name,cast) \ 00226 gImmApiEntries.name = (cast)GetProcAddress(hImm, #name); \ 00227 if (gImmApiEntries.name == NULL) { \ 00228 RIPMSG1(RIP_WARNING, "gImmApiEntries.%s got to be NULL", #name); \ 00229 gImmApiEntries.name = (PVOID)fakeImm_v1; \ 00230 return; \ 00231 } else 00232 00234 // _InitializeImmEntryTable(HMODULE) 00235 // 00236 // Initialize IMM entry table: 00238 VOID _InitializeImmEntryTable(VOID) 00239 { 00240 HMODULE hImm = ghImm32; 00241 WCHAR wszImmFile[MAX_PATH]; 00242 00243 if (((PVOID)gImmApiEntries.ImmWINNLSEnableIME) != ((PVOID)fakeImm_wd2)) { 00244 // already initialized. 00245 return; 00246 } 00247 00248 GetImmFileName(wszImmFile); 00249 00250 if (hImm == NULL) { 00251 // check if IMM DLL is already attached to the process 00252 hImm = GetModuleHandleW(wszImmFile); 00253 } 00254 00255 if (hImm == NULL) { 00256 hImm = ghImm32 = LoadLibraryW(wszImmFile); 00257 if (hImm == NULL) { 00258 RIPMSG1(RIP_WARNING, "_InitializeImmEntryTable: failed to load Imm32.Dll: err=%d\n", GetLastError()); 00259 return; 00260 } 00261 00262 // at this point, Init routine of IMM32 has been called, thus User32InitializeImmEntry.. called. 00263 // all what we have to do is just return here. 00264 return; 00265 } 00266 00267 if (hImm == NULL) { 00268 RIPMSG0(RIP_WARNING, "Failed to attach IMM32.DLL.\n"); 00269 return; 00270 } 00271 00272 // get the addresses of the procedures 00273 REGISTER(ImmWINNLSEnableIME, BOOL (WINAPI*)(HWND, BOOL)); 00274 REGISTER(ImmWINNLSGetEnableStatus, BOOL (*)(HWND)); 00275 REGISTER(ImmSendIMEMessageExW, LRESULT (*)(HWND, LPARAM)); 00276 REGISTER(ImmSendIMEMessageExA, LRESULT (*)(HWND, LPARAM)); 00277 REGISTER(ImmIMPGetIMEW, BOOL(*)(HWND, LPIMEPROW)); 00278 REGISTER(ImmIMPGetIMEA, BOOL(*)(HWND, LPIMEPROA)) 00279 REGISTER(ImmIMPQueryIMEW, BOOL(*)(LPIMEPROW)) 00280 REGISTER(ImmIMPQueryIMEA, BOOL(*)(LPIMEPROA)); 00281 REGISTER(ImmIMPSetIMEW, BOOL(*)(HWND, LPIMEPROW)); 00282 REGISTER(ImmIMPSetIMEA, BOOL(*)(HWND, LPIMEPROA)); 00283 00284 REGISTER(ImmAssociateContext, HIMC (WINAPI*)(HWND, HIMC)); 00285 REGISTER(ImmEscapeA, LRESULT(WINAPI*)(HKL, HIMC, UINT, LPVOID)); 00286 REGISTER(ImmEscapeW, LRESULT(WINAPI*)(HKL, HIMC, UINT, LPVOID)); 00287 REGISTER(ImmGetCompositionStringA, LONG (WINAPI*)(HIMC, DWORD, LPVOID, DWORD)); 00288 REGISTER(ImmGetCompositionStringW, LONG (WINAPI*)(HIMC, DWORD, LPVOID, DWORD)); 00289 REGISTER(ImmGetCompositionWindow, BOOL (WINAPI*)(HIMC, LPCOMPOSITIONFORM)); 00290 REGISTER(ImmGetContext, HIMC (WINAPI*)(HWND)); 00291 REGISTER(ImmGetDefaultIMEWnd, HWND (WINAPI*)(HWND)); 00292 REGISTER(ImmIsIME, BOOL (WINAPI*)(HKL)); 00293 REGISTER(ImmReleaseContext, BOOL (WINAPI*)(HWND, HIMC)); 00294 REGISTER(ImmRegisterClient, BOOL(*)(PSHAREDINFO, HINSTANCE)); 00295 00296 REGISTER(ImmGetCompositionFontW, BOOL (WINAPI*)(HIMC, LPLOGFONTW)); 00297 REGISTER(ImmGetCompositionFontA, BOOL (WINAPI*)(HIMC, LPLOGFONTA)); 00298 REGISTER(ImmSetCompositionFontW, BOOL (WINAPI*)(HIMC, LPLOGFONTW)); 00299 REGISTER(ImmSetCompositionFontA, BOOL (WINAPI*)(HIMC, LPLOGFONTA)); 00300 00301 REGISTER(ImmSetCompositionWindow, BOOL(WINAPI*)(HIMC, LPCOMPOSITIONFORM)); 00302 REGISTER(ImmNotifyIME, BOOL (WINAPI*)(HIMC, DWORD, DWORD, DWORD)); 00303 REGISTER(ImmLockIMC, PINPUTCONTEXT(WINAPI*)(HIMC)); 00304 REGISTER(ImmUnlockIMC, BOOL (WINAPI*)(HIMC)); 00305 REGISTER(ImmLoadIME, BOOL (WINAPI*)(HKL)); 00306 REGISTER(ImmSetOpenStatus, BOOL (WINAPI*)(HIMC, BOOL)); 00307 REGISTER(ImmFreeLayout, BOOL (WINAPI*)(DWORD)); 00308 REGISTER(ImmActivateLayout, BOOL (WINAPI*)(HKL)); 00309 REGISTER(ImmSetCandidateWindow, BOOL (WINAPI*)(HIMC, LPCANDIDATEFORM)); 00310 REGISTER(ImmConfigureIMEW, BOOL (WINAPI*)(HKL, HWND, DWORD, LPVOID)); 00311 REGISTER(ImmGetConversionStatus, BOOL (WINAPI*)(HIMC, LPDWORD, LPDWORD)); 00312 REGISTER(ImmSetConversionStatus, BOOL (WINAPI*)(HIMC, DWORD, DWORD)); 00313 REGISTER(ImmSetStatusWindowPos, BOOL (WINAPI*)(HIMC, LPPOINT)); 00314 REGISTER(ImmGetImeInfoEx, BOOL (WINAPI*)(PIMEINFOEX, IMEINFOEXCLASS, PVOID)); 00315 REGISTER(ImmLockImeDpi, PIMEDPI (WINAPI*)(HKL)); 00316 REGISTER(ImmUnlockImeDpi, VOID (WINAPI*)(PIMEDPI)); 00317 REGISTER(ImmGetOpenStatus, BOOL (WINAPI*)(HIMC)); 00318 REGISTER(ImmSetActiveContext, BOOL (*)(HWND, HIMC, BOOL)); 00319 REGISTER(ImmTranslateMessage, BOOL (*)(HWND, UINT, WPARAM, LPARAM)); 00320 REGISTER(ImmLoadLayout, BOOL (*)(HKL, PIMEINFOEX)); 00321 REGISTER(ImmProcessKey, DWORD (*)(HWND, HKL, UINT, LPARAM, DWORD)); 00322 REGISTER(ImmPutImeMenuItemsIntoMappedFile, LRESULT(*)(HIMC)); 00323 REGISTER(ImmGetProperty, DWORD (WINAPI*)(HKL, DWORD)); 00324 REGISTER(ImmSetCompositionStringA, 00325 BOOL (WINAPI*)(HIMC hImc, DWORD dwIndex, LPCVOID lpComp, 00326 DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen)) 00327 REGISTER(ImmSetCompositionStringW, 00328 BOOL (WINAPI*)(HIMC hImc, DWORD dwIndex, LPCVOID lpComp, 00329 DWORD dwCompLen, LPCVOID lpRead, DWORD dwReadLen)); 00330 REGISTER(ImmEnumInputContext, 00331 BOOL (WINAPI*)(DWORD idThread, IMCENUMPROC lpfn, LPARAM lParam)); 00332 REGISTER(ImmSystemHandler, 00333 LRESULT (WINAPI*)(HIMC, WPARAM, LPARAM)); 00334 } 00335 00336 BOOL bImmInitializing = FALSE; 00337 00338 VOID InitializeImmEntryTable(VOID) 00339 { 00340 bImmInitializing = TRUE; 00341 _InitializeImmEntryTable(); 00342 } 00343 00344 BOOL User32InitializeImmEntryTable(DWORD magic) 00345 { 00346 if (magic != IMM_MAGIC_CALLER_ID) { 00347 RIPMSG1(RIP_WARNING, "User32InitializeImmEntryTable: magic # does not match: 0x%08x", magic); 00348 return FALSE; 00349 } 00350 00351 if (((PVOID)gImmApiEntries.ImmWINNLSEnableIME) != ((PVOID)fakeImm_wd2)) { 00352 // already initialized 00353 return TRUE; 00354 } 00355 00356 _InitializeImmEntryTable(); 00357 00358 if (ghImm32 == NULL) { 00359 if (!bImmInitializing) { 00360 // increment the load counter of IMM32.DLL; application may call FreeLibrary later 00361 WCHAR wszImmFile[MAX_PATH]; 00362 GetImmFileName(wszImmFile); 00363 ghImm32 = LoadLibraryW(wszImmFile); 00364 } 00365 } 00366 // for IMM initialization 00367 return fpImmRegisterClient(&gSharedInfo, ghImm32); 00368 } 00369 00370 // 00371 // for historical reasons, these entries are put in user32.dll 00372 // 00373 UINT WINAPI WINNLSGetIMEHotkey(HWND hwndIme) 00374 { 00375 UNREFERENCED_PARAMETER(hwndIme); 00376 00377 // 00378 // Win95/NT3.51 behavior, i.e. always return 0. 00379 // 00380 return 0; 00381 } 00382 00383 BOOL WINAPI WINNLSEnableIME(HWND hwnd, BOOL bFlag) 00384 { 00385 return gImmApiEntries.ImmWINNLSEnableIME(hwnd, bFlag); 00386 } 00387 00388 BOOL WINAPI WINNLSGetEnableStatus(HWND hwnd) 00389 { 00390 return gImmApiEntries.ImmWINNLSGetEnableStatus(hwnd); 00391 } 00392 00393 LRESULT WINAPI SendIMEMessageExW(HWND hwnd, LPARAM lParam) 00394 { 00395 return gImmApiEntries.ImmSendIMEMessageExW(hwnd, lParam); 00396 } 00397 00398 LRESULT WINAPI SendIMEMessageExA(HWND hwnd, LPARAM lParam) 00399 { 00400 return gImmApiEntries.ImmSendIMEMessageExA(hwnd, lParam); 00401 } 00402 00403 BOOL WINAPI IMPGetIMEW(HWND hwnd, LPIMEPROW lpImeProW) 00404 { 00405 return gImmApiEntries.ImmIMPGetIMEW(hwnd, lpImeProW); 00406 } 00407 00408 BOOL WINAPI IMPGetIMEA(HWND hwnd, LPIMEPROA lpImeProA) 00409 { 00410 return gImmApiEntries.ImmIMPGetIMEA(hwnd, lpImeProA); 00411 } 00412 00413 BOOL WINAPI IMPQueryIMEW(LPIMEPROW lpImeProW) 00414 { 00415 return gImmApiEntries.ImmIMPQueryIMEW(lpImeProW); 00416 } 00417 00418 BOOL WINAPI IMPQueryIMEA(LPIMEPROA lpImeProA) 00419 { 00420 return gImmApiEntries.ImmIMPQueryIMEA(lpImeProA); 00421 } 00422 00423 BOOL WINAPI IMPSetIMEW(HWND hwnd, LPIMEPROW lpImeProW) 00424 { 00425 return gImmApiEntries.ImmIMPSetIMEW(hwnd, lpImeProW); 00426 } 00427 00428 BOOL WINAPI IMPSetIMEA(HWND hwnd, LPIMEPROA lpImeProA) 00429 { 00430 return gImmApiEntries.ImmIMPSetIMEA(hwnd, lpImeProA); 00431 }

Generated on Sat May 15 19:39:58 2004 for test by doxygen 1.3.7