Update shell xxxAW wrapper prototypes for fixed SHLWAPI functions.
[wine] / dlls / imm32 / immddk.h
1 /*
2  * DDK version of imm.h - imm.h for IMM and IME.
3  *
4  * Copyright 2000 Hidenori Takeshima
5  *
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.
10  *
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.
15  *
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
19  */
20
21 #ifndef __WINE_IMMDDK_H
22 #define __WINE_IMMDDK_H
23
24 #include "imm.h"
25
26 #define NULLIMC                 ((HIMC)0)
27
28 /* offsets for WndExtra */
29 #define IMMGWL_IMC              0
30 #define IMMGWL_PRIVATE          (sizeof(LONG))
31
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
39
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
52
53
54 /*** IMM and IME Structures ***/
55
56 typedef struct tagINPUTCONTEXT {
57         HWND                    hWnd;
58         BOOL                    fOpen;
59         POINT                   ptStatusWndPos;
60         POINT                   ptSoftKbdPos;
61         DWORD                   fdwConversion;
62         DWORD                   fdwSentence;
63         union {
64                 LOGFONTA                A;
65                 LOGFONTW                W;
66         }                       lfFont;
67         COMPOSITIONFORM         cfCompForm;
68         CANDIDATEFORM           cfCandForm[4];
69         HIMCC                   hCompStr;
70         HIMCC                   hCandInfo;
71         HIMCC                   hGuideLine;
72         HIMCC                   hPrivate;
73         DWORD                   dwNumMsgBuf;
74         HIMCC                   hMsgBuf;
75         DWORD                   fdwInit;
76         DWORD                   dwReserve[3];
77 } INPUTCONTEXT, * LPINPUTCONTEXT;
78
79 typedef struct tagCOMPOSITIONSTRING
80 {
81         DWORD   dwSize;
82         DWORD   dwCompReadAttrLen;
83         DWORD   dwCompReadAttrOffset;
84         DWORD   dwCompReadClauseLen;
85         DWORD   dwCompReadClauseOffset;
86         DWORD   dwCompReadStrLen;
87         DWORD   dwCompReadStrOffset;
88         DWORD   dwCompAttrLen;
89         DWORD   dwCompAttrOffset;
90         DWORD   dwCompClauseLen;
91         DWORD   dwCompClauseOffset;
92         DWORD   dwCompStrLen;
93         DWORD   dwCompStrOffset;
94         DWORD   dwCursorPos;
95         DWORD   dwDeltaStart;
96         DWORD   dwResultReadClauseLen;
97         DWORD   dwResultReadClauseOffset;
98         DWORD   dwResultReadStrLen;
99         DWORD   dwResultReadStrOffset;
100         DWORD   dwResultClauseLen;
101         DWORD   dwResultClauseOffset;
102         DWORD   dwResultStrLen;
103         DWORD   dwResultStrOffset;
104         DWORD   dwPrivateSize;
105         DWORD   dwPrivateOffset;
106 } COMPOSITIONSTRING, * LPCOMPOSITIONSTRING;
107
108 typedef struct tagCANDIDATEINFO
109 {
110         DWORD           dwSize;
111         DWORD           dwCount;
112         DWORD           dwOffset[32];
113         DWORD           dwPrivateSize;
114         DWORD           dwPrivateOffset;
115 } CANDIDATEINFO, * LPCANDIDATEINFO;
116
117 typedef struct tagGUIDELINE
118 {
119         DWORD   dwSize;
120         DWORD   dwLevel;
121         DWORD   dwIndex;
122         DWORD   dwStrLen;
123         DWORD   dwStrOffset;
124         DWORD   dwPrivateSize;
125         DWORD   dwPrivateOffset;
126 } GUIDELINE, * LPGUIDELINE;
127
128
129
130 /*** IME Management Structures ***/
131
132 typedef struct tagIMEINFO
133 {
134         DWORD   dwPrivateDataSize;
135         DWORD   fdwProperty;
136         DWORD   fdwConversionCaps;
137         DWORD   fdwSentenceCaps;
138         DWORD   fdwUICaps;
139         DWORD   fdwSCSCaps;
140         DWORD   fdwSelectCaps;
141 } IMEINFO, * LPIMEINFO;
142
143
144 /*** IME Communication Structures ***/
145
146 typedef struct tagSOFTKBDDATA
147 {
148         UINT    uCount;
149         WORD    wCode[1][256];
150 } SOFTKBDDATA, * LPSOFTKBDDATA;
151
152
153 /*** IMM DDK APIs ***/
154
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);
158
159 LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC);
160 BOOL WINAPI ImmUnlockIMC(HIMC hIMC);
161 DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC);
162
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);
170
171
172 #endif  /* __WINE_IMMDDK_H */