2 * DDK version of imm.h - imm.h for IMM and IME.
4 * Copyright 2000 Hidenori Takeshima
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_IMMDDK_H
22 #define __WINE_IMMDDK_H
26 #define NULLIMC ((HIMC)0)
28 /* offsets for WndExtra */
30 #define IMMGWL_PRIVATE (sizeof(LONG))
32 /* INPUTCONTEXT.fdwInit */
33 #define INIT_STATUSWNDPOS 0x00000001
34 #define INIT_CONVERSION 0x00000002
35 #define INIT_SENTENCE 0x00000004
36 #define INIT_LOGFONT 0x00000008
37 #define INIT_COMPFORM 0x00000010
38 #define INIT_SOFTKBDPOS 0x00000020
40 /* IMEINFO.fdwProperty (low-order word) */
41 #define IME_PROP_END_UNLOAD 0x00000001
42 #define IME_PROP_KBD_CHAR_FIRST 0x00000002
43 #define IME_PROP_IGNORE_UPKEYS 0x00000004
44 #define IME_PROP_NEED_ALTKEY 0x00000008
45 #define IME_PROP_NO_KEYS_ON_CLOSE 0x00000010
46 /* IMEINFO.fdwProperty (high-order word) */
47 #define IME_PROP_AT_CARET 0x00010000
48 #define IME_PROP_SPECIAL_UI 0x00020000
49 #define IME_PROP_CANDLIST_START_FROM_1 0x00040000
50 #define IME_PROP_UNICODE 0x00080000
51 #define IME_PROP_COMPLETE_ON_UNSELECT 0x00100000
54 /*** IMM and IME Structures ***/
56 typedef struct tagINPUTCONTEXT {
67 COMPOSITIONFORM cfCompForm;
68 CANDIDATEFORM cfCandForm[4];
77 } INPUTCONTEXT, * LPINPUTCONTEXT;
79 typedef struct tagCOMPOSITIONSTRING
82 DWORD dwCompReadAttrLen;
83 DWORD dwCompReadAttrOffset;
84 DWORD dwCompReadClauseLen;
85 DWORD dwCompReadClauseOffset;
86 DWORD dwCompReadStrLen;
87 DWORD dwCompReadStrOffset;
89 DWORD dwCompAttrOffset;
90 DWORD dwCompClauseLen;
91 DWORD dwCompClauseOffset;
93 DWORD dwCompStrOffset;
96 DWORD dwResultReadClauseLen;
97 DWORD dwResultReadClauseOffset;
98 DWORD dwResultReadStrLen;
99 DWORD dwResultReadStrOffset;
100 DWORD dwResultClauseLen;
101 DWORD dwResultClauseOffset;
102 DWORD dwResultStrLen;
103 DWORD dwResultStrOffset;
105 DWORD dwPrivateOffset;
106 } COMPOSITIONSTRING, * LPCOMPOSITIONSTRING;
108 typedef struct tagCANDIDATEINFO
114 DWORD dwPrivateOffset;
115 } CANDIDATEINFO, * LPCANDIDATEINFO;
117 typedef struct tagGUIDELINE
125 DWORD dwPrivateOffset;
126 } GUIDELINE, * LPGUIDELINE;
130 /*** IME Management Structures ***/
132 typedef struct tagIMEINFO
134 DWORD dwPrivateDataSize;
136 DWORD fdwConversionCaps;
137 DWORD fdwSentenceCaps;
141 } IMEINFO, * LPIMEINFO;
144 /*** IME Communication Structures ***/
146 typedef struct tagSOFTKBDDATA
150 } SOFTKBDDATA, * LPSOFTKBDDATA;
153 /*** IMM DDK APIs ***/
155 HWND WINAPI ImmCreateSoftKeyboard(UINT uType, HWND hwndOwner, int x, int y);
156 BOOL WINAPI ImmDestroySoftKeyboard(HWND hwndSoftKeyboard);
157 BOOL WINAPI ImmShowSoftKeyboard(HWND hwndSoftKeyboard, int nCmdShow);
159 LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC);
160 BOOL WINAPI ImmUnlockIMC(HIMC hIMC);
161 DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC);
163 HIMCC WINAPI ImmCreateIMCC(DWORD dwSize);
164 HIMCC WINAPI ImmDestroyIMCC(HIMCC hIMCC);
165 LPVOID WINAPI ImmLockIMCC(HIMCC hIMCC);
166 BOOL WINAPI ImmUnlockIMCC(HIMCC hIMCC);
167 DWORD WINAPI ImmGetIMCCLockCount(HIMCC hIMCC);
168 HIMCC WINAPI ImmReSizeIMCC(HIMCC hIMCC, DWORD dwSize);
169 DWORD WINAPI ImmGetIMCCSize(HIMCC hIMCC);
172 #endif /* __WINE_IMMDDK_H */