Updated.
[wine] / dlls / imm32 / immddk.h
1 /* DDK version of imm.h - imm.h for IMM and IME. */
2
3 #ifndef __WINE_IMMDDK_H
4 #define __WINE_IMMDDK_H
5
6 #include "imm.h"
7
8 #define NULLIMC                 ((HIMC)0)
9
10 /* offsets for WndExtra */
11 #define IMMGWL_IMC              0
12 #define IMMGWL_PRIVATE          (sizeof(LONG))
13
14 /* INPUTCONTEXT.fdwInit */
15 #define INIT_STATUSWNDPOS       0x00000001
16 #define INIT_CONVERSION         0x00000002
17 #define INIT_SENTENCE           0x00000004
18 #define INIT_LOGFONT            0x00000008
19 #define INIT_COMPFORM           0x00000010
20 #define INIT_SOFTKBDPOS         0x00000020
21
22 /* IMEINFO.fdwProperty (low-order word) */
23 #define IME_PROP_END_UNLOAD             0x00000001
24 #define IME_PROP_KBD_CHAR_FIRST         0x00000002
25 #define IME_PROP_IGNORE_UPKEYS          0x00000004
26 #define IME_PROP_NEED_ALTKEY            0x00000008
27 #define IME_PROP_NO_KEYS_ON_CLOSE       0x00000010
28 /* IMEINFO.fdwProperty (high-order word) */
29 #define IME_PROP_AT_CARET               0x00010000
30 #define IME_PROP_SPECIAL_UI             0x00020000
31 #define IME_PROP_CANDLIST_START_FROM_1  0x00040000
32 #define IME_PROP_UNICODE                0x00080000
33 #define IME_PROP_COMPLETE_ON_UNSELECT   0x00100000
34
35
36 /*** IMM and IME Structures ***/
37
38 typedef struct tagINPUTCONTEXT {
39         HWND                    hWnd;
40         BOOL                    fOpen;
41         POINT                   ptStatusWndPos;
42         POINT                   ptSoftKbdPos;
43         DWORD                   fdwConversion;
44         DWORD                   fdwSentence;
45         union {
46                 LOGFONTA                A;
47                 LOGFONTW                W;
48         }                       lfFont;
49         COMPOSITIONFORM         cfCompForm;
50         CANDIDATEFORM           cfCandForm[4];
51         HIMCC                   hCompStr;
52         HIMCC                   hCandInfo;
53         HIMCC                   hGuideLine;
54         HIMCC                   hPrivate;
55         DWORD                   dwNumMsgBuf;
56         HIMCC                   hMsgBuf;
57         DWORD                   fdwInit;
58         DWORD                   dwReserve[3];
59 } INPUTCONTEXT, * LPINPUTCONTEXT;
60
61 typedef struct tagCOMPOSITIONSTRING
62 {
63         DWORD   dwSize;
64         DWORD   dwCompReadAttrLen;
65         DWORD   dwCompReadAttrOffset;
66         DWORD   dwCompReadClauseLen;
67         DWORD   dwCompReadClauseOffset;
68         DWORD   dwCompReadStrLen;
69         DWORD   dwCompReadStrOffset;
70         DWORD   dwCompAttrLen;
71         DWORD   dwCompAttrOffset;
72         DWORD   dwCompClauseLen;
73         DWORD   dwCompClauseOffset;
74         DWORD   dwCompStrLen;
75         DWORD   dwCompStrOffset;
76         DWORD   dwCursorPos;
77         DWORD   dwDeltaStart;
78         DWORD   dwResultReadClauseLen;
79         DWORD   dwResultReadClauseOffset;
80         DWORD   dwResultReadStrLen;
81         DWORD   dwResultReadStrOffset;
82         DWORD   dwResultClauseLen;
83         DWORD   dwResultClauseOffset;
84         DWORD   dwResultStrLen;
85         DWORD   dwResultStrOffset;
86         DWORD   dwPrivateSize;
87         DWORD   dwPrivateOffset;
88 } COMPOSITIONSTRING, * LPCOMPOSITIONSTRING;
89
90 typedef struct tagCANDIDATEINFO
91 {
92         DWORD           dwSize;
93         DWORD           dwCount;
94         DWORD           dwOffset[32];
95         DWORD           dwPrivateSize;
96         DWORD           dwPrivateOffset;
97 } CANDIDATEINFO, * LPCANDIDATEINFO;
98
99 typedef struct tagGUIDELINE
100 {
101         DWORD   dwSize;
102         DWORD   dwLevel;
103         DWORD   dwIndex;
104         DWORD   dwStrLen;
105         DWORD   dwStrOffset;
106         DWORD   dwPrivateSize;
107         DWORD   dwPrivateOffset;
108 } GUIDELINE, * LPGUIDELINE;
109
110
111
112 /*** IME Management Structures ***/
113
114 typedef struct tagIMEINFO
115 {
116         DWORD   dwPrivateDataSize;
117         DWORD   fdwProperty;
118         DWORD   fdwConversionCaps;
119         DWORD   fdwSentenceCaps;
120         DWORD   fdwUICaps;
121         DWORD   fdwSCSCaps;
122         DWORD   fdwSelectCaps;
123 } IMEINFO, * LPIMEINFO;
124
125
126 /*** IME Communication Structures ***/
127
128 typedef struct tagSOFTKBDDATA
129 {
130         UINT    uCount;
131         WORD    wCode[1][256];
132 } SOFTKBDDATA, * LPSOFTKBDDATA;
133
134
135 /*** IMM DDK APIs ***/
136
137 HWND WINAPI ImmCreateSoftKeyboard(UINT uType, HWND hwndOwner, int x, int y);
138 BOOL WINAPI ImmDestroySoftKeyboard(HWND hwndSoftKeyboard);
139 BOOL WINAPI ImmShowSoftKeyboard(HWND hwndSoftKeyboard, int nCmdShow);
140
141 LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC);
142 BOOL WINAPI ImmUnlockIMC(HIMC hIMC);
143 DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC);
144
145 HIMCC WINAPI ImmCreateIMCC(DWORD dwSize);
146 HIMCC WINAPI ImmDestroyIMCC(HIMCC hIMCC);
147 LPVOID WINAPI ImmLockIMCC(HIMCC hIMCC);
148 BOOL WINAPI ImmUnlockIMCC(HIMCC hIMCC);
149 DWORD WINAPI ImmGetIMCCLockCount(HIMCC hIMCC);
150 HIMCC WINAPI ImmReSizeIMCC(HIMCC hIMCC, DWORD dwSize);
151 DWORD WINAPI ImmGetIMCCSize(HIMCC hIMCC);
152
153
154 #endif  /* __WINE_IMMDDK_H */