00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#ifndef _IMMUSER_
00013
#define _IMMUSER_
00014
00015
#include <imm.h>
00016
#include <immp.h>
00017
#include <ime.h>
00018
#include <imep.h>
00019
00020
00021
00022
00023 typedef struct tagCLIENTIMC {
00024 HANDLE
hInputContext;
00025 LONG
cLockObj;
00026 DWORD dwFlags;
00027 DWORD dwImeCompatFlags;
00028 RTL_CRITICAL_SECTION
cs;
00029 DWORD dwCodePage;
00030 }
CLIENTIMC, *
PCLIENTIMC;
00031
00032 #define InitImcCrit(pClientImc) RtlInitializeCriticalSection(&pClientImc->cs)
00033 #define DeleteImcCrit(pClientImc) RtlDeleteCriticalSection(&pClientImc->cs)
00034 #define EnterImcCrit(pClientImc) RtlEnterCriticalSection(&pClientImc->cs)
00035 #define LeaveImcCrit(pClientImc) RtlLeaveCriticalSection(&pClientImc->cs)
00036
00037
00038
00039
00040 typedef BOOL (CALLBACK*
PFNINQUIREA)(LPIMEINFO, LPSTR,
DWORD);
00041 typedef BOOL (CALLBACK*
PFNINQUIREW)(LPIMEINFO, LPWSTR,
DWORD);
00042 typedef DWORD (CALLBACK*
PFNCONVLISTA)(HIMC, LPCSTR, LPCANDIDATELIST,
DWORD,
UINT);
00043 typedef DWORD (CALLBACK*
PFNCONVLISTW)(HIMC, LPCWSTR, LPCANDIDATELIST,
DWORD,
UINT);
00044 typedef BOOL (CALLBACK*
PFNREGWORDA)(LPCSTR,
DWORD, LPCSTR);
00045 typedef BOOL (CALLBACK*
PFNREGWORDW)(LPCWSTR,
DWORD, LPCWSTR);
00046 typedef BOOL (CALLBACK*
PFNUNREGWORDA)(LPCSTR,
DWORD, LPCSTR);
00047 typedef BOOL (CALLBACK*
PFNUNREGWORDW)(LPCWSTR,
DWORD, LPCWSTR);
00048 typedef UINT (CALLBACK*
PFNGETREGWORDSTYA)(
UINT, LPSTYLEBUFA);
00049 typedef UINT (CALLBACK*
PFNGETREGWORDSTYW)(
UINT, LPSTYLEBUFW);
00050 typedef UINT (CALLBACK*
PFNENUMREGWORDA)(REGISTERWORDENUMPROCA, LPCSTR,
DWORD, LPCSTR,
LPVOID);
00051 typedef UINT (CALLBACK*
PFNENUMREGWORDW)(REGISTERWORDENUMPROCW, LPCWSTR,
DWORD, LPCWSTR,
LPVOID);
00052 typedef BOOL (CALLBACK* PFNCONFIGURE)(HKL, HWND,
DWORD,
LPVOID);
00053 typedef BOOL (CALLBACK* PFNDESTROY)(
UINT);
00054 typedef LRESULT (CALLBACK* PFNESCAPE)(HIMC,
UINT,
LPVOID);
00055 typedef BOOL (CALLBACK*
PFNPROCESSKEY)(HIMC,
UINT, LPARAM, CONST LPBYTE);
00056 typedef BOOL (CALLBACK* PFNSELECT)(HIMC,
BOOL);
00057 typedef BOOL (CALLBACK* PFNSETACTIVEC)(HIMC,
BOOL);
00058 typedef UINT (CALLBACK*
PFNTOASCEX)(
UINT,
UINT, CONST LPBYTE, PTRANSMSGLIST,
UINT, HIMC);
00059 typedef BOOL (CALLBACK* PFNNOTIFY)(HIMC,
DWORD,
DWORD,
DWORD);
00060 typedef BOOL (CALLBACK* PFNSETCOMPSTR)(HIMC,
DWORD, LPCVOID,
DWORD, LPCVOID,
DWORD);
00061 typedef DWORD (CALLBACK* PFNGETIMEMENUITEMS)(HIMC,
DWORD,
DWORD,
LPVOID,
LPVOID,
DWORD);
00062
00063 #define IMEDPI_UNLOADED 1
00064 #define IMEDPI_UNLOCKUNLOAD 2
00065
00066 typedef struct tagIMEDPI {
00067 struct tagIMEDPI *
pNext;
00068 HANDLE
hInst;
00069 HKL
hKL;
00070 IMEINFO
ImeInfo;
00071 DWORD dwCodePage;
00072 WCHAR
wszUIClass[
IM_UI_CLASS_SIZE];
00073 DWORD cLock;
00074 DWORD dwFlag;
00075
00076 struct _tagImeFunctions {
00077 union {
PFNINQUIREA a;
PFNINQUIREW w; PVOID
t;} ImeInquire;
00078 union {
PFNCONVLISTA a;
PFNCONVLISTW w; PVOID
t;} ImeConversionList;
00079 union {
PFNREGWORDA a;
PFNREGWORDW w; PVOID
t;} ImeRegisterWord;
00080 union {
PFNUNREGWORDA a;
PFNUNREGWORDW w; PVOID
t;} ImeUnregisterWord;
00081 union {
PFNGETREGWORDSTYA a;
PFNGETREGWORDSTYW w; PVOID
t;} ImeGetRegisterWordStyle;
00082 union {
PFNENUMREGWORDA a;
PFNENUMREGWORDW w; PVOID
t;} ImeEnumRegisterWord;
00083 PFNCONFIGURE ImeConfigure;
00084 PFNDESTROY ImeDestroy;
00085 PFNESCAPE ImeEscape;
00086 PFNPROCESSKEY ImeProcessKey;
00087 PFNSELECT ImeSelect;
00088 PFNSETACTIVEC ImeSetActiveContext;
00089 PFNTOASCEX ImeToAsciiEx;
00090 PFNNOTIFY NotifyIME;
00091 PFNSETCOMPSTR ImeSetCompositionString;
00092 PFNGETIMEMENUITEMS ImeGetImeMenuItems;
00093 }
pfn;
00094
00095 }
IMEDPI, *
PIMEDPI;
00096
00097
00098
00099
00100
00101 typedef struct tagIMEPRIVATESAVER {
00102 struct tagIMEPRIVATESAVER*
next;
00103 HKL
hkl;
00104 DWORD fdwSentence;
00105 }
IMEPRIVATEMODESAVER, *
PIMEPRIVATEMODESAVER;
00106
00107 typedef struct tagIMEMODESAVER {
00108 struct tagIMEMODESAVER*
next;
00109 USHORT langId;
00110 BOOLEAN
fOpen;
00111 DWORD fdwConversion;
00112 DWORD fdwSentence;
00113 DWORD fdwInit;
00114 PIMEPRIVATEMODESAVER pImePrivateModeSaver;
00115 }
IMEMODESAVER, *
PIMEMODESAVER;
00116
00117
00118
00119
00120
00121
BOOL ImmSetActiveContext(
00122 HWND hWnd,
00123 HIMC hImc,
00124 BOOL fActivate);
00125
00126
BOOL WINAPI
ImmLoadIME(
00127 HKL hKL);
00128
00129
BOOL WINAPI
ImmUnloadIME(
00130 HKL hKL);
00131
00132
BOOL WINAPI
ImmFreeLayout(
00133 DWORD dwFlag);
00134
00135
BOOL WINAPI
ImmActivateLayout(
00136 HKL hSelKL);
00137
00138
BOOL WINAPI
ImmLoadLayout(
00139 HKL hKL,
00140
PIMEINFOEX piiex);
00141
00142
BOOL WINAPI
ImmDisableIme(
00143 DWORD dwThreadId);
00144
00145
PCLIENTIMC WINAPI
ImmLockClientImc(
00146 HIMC hImc);
00147
00148
VOID WINAPI
ImmUnlockClientImc(
00149 PCLIENTIMC pClientImc);
00150
00151
PIMEDPI WINAPI
ImmLockImeDpi(
00152 HKL hKL);
00153
00154
VOID WINAPI
ImmUnlockImeDpi(
00155 PIMEDPI pImeDpi);
00156
00157
BOOL WINAPI
ImmGetImeInfoEx(
00158
PIMEINFOEX piiex,
00159 IMEINFOEXCLASS SearchType,
00160 PVOID pvSearchKey);
00161
00162
DWORD WINAPI
ImmProcessKey(
00163 HWND hWnd,
00164 HKL hkl,
00165 UINT uVKey,
00166 LPARAM lParam,
00167 DWORD dwHotKeyID);
00168
00169
BOOL ImmTranslateMessage(
00170 HWND hwnd,
00171 UINT message,
00172 WPARAM wParam,
00173 LPARAM lParam);
00174
00175
VOID ImmInitializeHotKeys( BOOL bUserLoggedOn );
00176
00177
#endif // _IMMUSER_