00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
#ifndef _IMMSTRUC_
00015
#define _IMMSTRUC_
00016
00017
#include <imm.h>
00018
#include <immp.h>
00019
#include <ime.h>
00020
#include <imep.h>
00021
00022
00023
00024
00025 #define NULL_HIMC (HIMC) 0
00026 #define INVALID_HIMC (HIMC) -1
00027 #define NULL_HIMCC (HIMCC) 0
00028 #define INVALID_HIMCC (HIMCC)-1
00029
00030
00031
00032
00033 #define IMCF_UNICODE 0x0001
00034 #define IMCF_ACTIVE 0x0002
00035 #define IMCF_CHGMSG 0x0004
00036 #define IMCF_SAVECTRL 0x0008
00037 #define IMCF_PROCESSEVENT 0x0010
00038 #define IMCF_FIRSTSELECT 0x0020
00039 #define IMCF_INDESTROY 0x0040
00040 #define IMCF_WINNLSDISABLE 0x0080
00041 #define IMCF_DEFAULTIMC 0x0100
00042
00043
00044
00045
00046 #define IGSC_DEFIMCFALLBACK 0x0001
00047 #define IGSC_WINNLSCHECK 0x0002
00048
00049
00050
00051
00052 #define IFL_DEACTIVATEIME 0x0001
00053 #define IFL_UNLOADIME 0x0002
00054
00055 #define IS_IME_KBDLAYOUT(hkl) ((HIWORD((ULONG_PTR)(hkl)) & 0xf000) == 0xe000)
00056
00057
00058
00059
00060 #define IMEF_NONLOAD 0x0000
00061 #define IMEF_LOADERROR 0x0001
00062 #define IMEF_LOADED 0x0002
00063
00064 #define IM_DESC_SIZE 50
00065 #define IM_FILE_SIZE 80
00066 #define IM_OPTIONS_SIZE 30
00067 #define IM_UI_CLASS_SIZE 16
00068 #define IM_USRFONT_SIZE 80
00069
00070
00071
00072
00073
00074 #define MOD_MODIFY_KEYS (MOD_ALT|MOD_CONTROL|MOD_SHIFT|MOD_WIN)
00075 #define MOD_BOTH_SIDES (MOD_LEFT|MOD_RIGHT)
00076 #define ISHK_REMOVE 1
00077 #define ISHK_ADD 2
00078 #define ISHK_INITIALIZE 3
00079
00080 typedef struct _tagIMEHOTKEY {
00081 DWORD dwHotKeyID;
00082 UINT uVKey;
00083 UINT uModifiers;
00084 HKL
hKL;
00085 }
IMEHOTKEY;
00086 typedef IMEHOTKEY *
PIMEHOTKEY;
00087 typedef IMEHOTKEY CONST *
PCIMEHOTKEY;
00088
00089
00090 typedef struct _tagIMEHOTKEYOBJ {
00091 struct _tagIMEHOTKEYOBJ *
pNext;
00092 IMEHOTKEY hk;
00093 }
IMEHOTKEYOBJ, *
PIMEHOTKEYOBJ;
00094
00095
00096
00097
00098
00099 typedef struct tagIMEINFOEX {
00100 HKL
hkl;
00101 IMEINFO
ImeInfo;
00102 WCHAR
wszUIClass[
IM_UI_CLASS_SIZE];
00103 DWORD fdwInitConvMode;
00104 BOOL fInitOpen;
00105 BOOL fLoadFlag;
00106 DWORD dwProdVersion;
00107 DWORD dwImeWinVersion;
00108 WCHAR
wszImeDescription[
IM_DESC_SIZE];
00109 WCHAR
wszImeFile[
IM_FILE_SIZE];
00110 }
IMEINFOEX, *
PIMEINFOEX;
00111
00112
#ifndef W32KAPI
00113 #define W32KAPI DECLSPEC_ADDRSAFE
00114
#endif
00115
00116
00117
00118
00119
W32KAPI
00120 HIMC
00121
NtUserCreateInputContext(
00122 IN ULONG_PTR dwClientImcData);
00123
00124
W32KAPI
00125
BOOL
00126
NtUserDestroyInputContext(
00127 IN HIMC hImc);
00128
00129 typedef enum _AIC_STATUS {
00130
AIC_SUCCESS,
00131
AIC_FOCUSCONTEXTCHANGED,
00132
AIC_ERROR,
00133 }
AIC_STATUS;
00134
00135
W32KAPI
00136
AIC_STATUS
00137
NtUserAssociateInputContext(
00138 IN HWND hwnd,
00139 IN HIMC hImc,
00140 IN DWORD dwFlag);
00141
00142 typedef enum _UPDATEINPUTCONTEXTCLASS {
00143
UpdateClientInputContext,
00144
UpdateInUseImeWindow,
00145 }
UPDATEINPUTCONTEXTCLASS;
00146
00147
W32KAPI
00148
BOOL
00149
NtUserUpdateInputContext(
00150 IN HIMC hImc,
00151 IN UPDATEINPUTCONTEXTCLASS UpdateType,
00152 IN ULONG_PTR UpdateValue);
00153
00154 typedef enum _INPUTCONTEXTINFOCLASS {
00155
InputContextProcess,
00156
InputContextThread,
00157
InputContextDefaultImeWindow,
00158
InputContextDefaultInputContext,
00159 }
INPUTCONTEXTINFOCLASS;
00160
00161
W32KAPI
00162 ULONG_PTR
00163
NtUserQueryInputContext(
00164 IN HIMC hImc,
00165 IN INPUTCONTEXTINFOCLASS InputContextInfo);
00166
00167
W32KAPI
00168
NTSTATUS
00169
NtUserBuildHimcList(
00170 IN DWORD idThread,
00171 IN UINT cHimcMax,
00172 OUT HIMC *phimcFirst,
00173 OUT PUINT pcHimcNeeded);
00174
00175 typedef enum _IMEINFOEXCLASS {
00176
ImeInfoExKeyboardLayout,
00177
ImeInfoExImeWindow,
00178
ImeInfoExImeFileName,
00179 }
IMEINFOEXCLASS;
00180
00181
W32KAPI
00182
BOOL
00183
NtUserGetImeInfoEx(
00184 IN OUT PIMEINFOEX piiex,
00185 IN IMEINFOEXCLASS SearchType);
00186
00187
W32KAPI
00188
BOOL
00189
NtUserSetImeInfoEx(
00190 IN PIMEINFOEX piiex);
00191
00192
W32KAPI
00193
BOOL
00194
NtUserGetImeHotKey(
00195 IN DWORD dwID,
00196 OUT PUINT puModifiers,
00197 OUT PUINT puVKey,
00198 OUT HKL *phkl);
00199
00200
W32KAPI
00201
BOOL
00202
NtUserSetImeHotKey(
00203 IN DWORD dwID,
00204 IN UINT uModifiers,
00205 IN UINT uVKey,
00206 IN HKL hkl,
00207 IN DWORD dwAction);
00208
00209
W32KAPI
00210
DWORD
00211
NtUserCheckImeHotKey(
00212 IN UINT uVKey,
00213 IN LPARAM lParam);
00214
00215
W32KAPI
00216
BOOL
00217
NtUserSetAppImeLevel(
00218 IN HWND hWnd,
00219 IN DWORD dwLevel);
00220
00221
W32KAPI
00222
DWORD
00223
NtUserGetAppImeLevel(
00224 IN HWND hWnd );
00225
00226
00227
W32KAPI
00228
BOOL
00229
NtUserSetImeOwnerWindow(
00230 IN HWND hwndIme,
00231 IN HWND hwndFocus);
00232
00233
W32KAPI
00234
VOID
00235
NtUserSetThreadLayoutHandles(
00236 IN HKL hklNew,
00237 IN HKL hklOld);
00238
00239
W32KAPI
00240
VOID
00241
NtUserNotifyIMEStatus(
00242 IN HWND hwnd,
00243 IN DWORD dwOpenStatus,
00244 IN DWORD dwConversion);
00245
00246
W32KAPI
00247
BOOL
00248
NtUserDisableThreadIme(
00249 IN DWORD dwThreadId);
00250
00251
#endif // _IMMSTRUC_