xref: /vim-8.2.3635/src/dimm.idl (revision 071d4279)
1//+-------------------------------------------------------------------------
2//
3//  Microsoft Windows
4//  Copyright (C) Microsoft Corporation, 1992-2000.
5//
6//  File: dimm.idl
7//
8//  Contents: ActiveIMM interface definitions
9//
10//
11//--------------------------------------------------------------------------
12
13cpp_quote("//=--------------------------------------------------------------------------=")
14cpp_quote("// dimm.h")
15cpp_quote("//=--------------------------------------------------------------------------=")
16cpp_quote("// (C) Copyright 1995-1998 Microsoft Corporation.  All Rights Reserved.")
17cpp_quote("//")
18cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
19cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
20cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
21cpp_quote("// PARTICULAR PURPOSE.")
22cpp_quote("//=--------------------------------------------------------------------------=")
23cpp_quote("")
24cpp_quote("#pragma comment(lib,\"uuid.lib\")")
25cpp_quote("")
26cpp_quote("//--------------------------------------------------------------------------")
27cpp_quote("// IActiveIMM Interfaces.")
28cpp_quote("")
29
30/*
31Disable a warning about lack of polymorphic type support for the following reasons
32- the only reason to have library block in the file is to make midl accept coclass
33  statement and generate CLSID for CActiveIMM.
34- the generated dimm_i.c has the clsid and that file is used to have clsid available
35- the dimm.tlb is not used at all
36- on top of it, there is no plans to port the app using dimm.idl to 64b platform.
37*/
38/*
39 * midl_pragma is unsupported in midl version 3.01 shipped with VC5.0.
40 * It is supported in midl version 5.01 shipped with VC6.0
41 * I could not produce message 2395. Is this needed? W.Briscoe 2001-08-14
42 */
43#if (__midl >= 501)
44midl_pragma warning( disable: 2395) // polymorphic types not supported in the TLB
45#endif
46
47#ifndef DO_NO_IMPORTS
48import "unknwn.idl";
49#endif
50
51[
52    uuid(4955DD30-B159-11d0-8FCF-00AA006BCC59),
53    helpstring("ActiveIMM"),
54    lcid(0x0000),
55    version(0.1)
56]
57library ActiveIMM
58{
59    importlib("stdole2.tlb");
60
61    cpp_quote("#include <imm.h>")
62
63    cpp_quote("#if 0")
64
65    typedef WORD LANGID;
66
67    typedef struct
68    {
69        LPSTR   lpReading;
70        LPSTR   lpWord;
71    } REGISTERWORDA;
72
73    typedef struct
74    {
75        LPWSTR   lpReading;
76        LPWSTR   lpWord;
77    } REGISTERWORDW;
78
79    #define LF_FACESIZE         32
80
81    typedef struct
82    {
83        LONG      lfHeight;
84        LONG      lfWidth;
85        LONG      lfEscapement;
86        LONG      lfOrientation;
87        LONG      lfWeight;
88        BYTE      lfItalic;
89        BYTE      lfUnderline;
90        BYTE      lfStrikeOut;
91        BYTE      lfCharSet;
92        BYTE      lfOutPrecision;
93        BYTE      lfClipPrecision;
94        BYTE      lfQuality;
95        BYTE      lfPitchAndFamily;
96        CHAR      lfFaceName[LF_FACESIZE];
97    } LOGFONTA;
98
99    typedef struct
100    {
101        LONG      lfHeight;
102        LONG      lfWidth;
103        LONG      lfEscapement;
104        LONG      lfOrientation;
105        LONG      lfWeight;
106        BYTE      lfItalic;
107        BYTE      lfUnderline;
108        BYTE      lfStrikeOut;
109        BYTE      lfCharSet;
110        BYTE      lfOutPrecision;
111        BYTE      lfClipPrecision;
112        BYTE      lfQuality;
113        BYTE      lfPitchAndFamily;
114        WCHAR     lfFaceName[LF_FACESIZE];
115    } LOGFONTW;
116
117    typedef DWORD     HIMC;
118    typedef DWORD     HIMCC;
119
120    typedef struct
121    {
122        DWORD dwIndex;
123        DWORD dwStyle;
124        POINT ptCurrentPos;
125        RECT  rcArea;
126    } CANDIDATEFORM;
127
128    typedef struct
129    {
130        DWORD dwStyle;
131        POINT ptCurrentPos;
132        RECT  rcArea;
133    } COMPOSITIONFORM;
134
135    typedef struct
136    {
137        DWORD dwSize;
138        DWORD dwStyle;
139        DWORD dwCount;
140        DWORD dwSelection;
141        DWORD dwPageStart;
142        DWORD dwPageSize;
143        DWORD dwOffset[1];
144    } CANDIDATELIST;
145
146    #define STYLE_DESCRIPTION_SIZE  32
147
148    typedef struct
149    {
150        DWORD       dwStyle;
151        CHAR        szDescription[STYLE_DESCRIPTION_SIZE];
152    } STYLEBUFA;
153
154    typedef struct
155    {
156        DWORD       dwStyle;
157        WCHAR       szDescription[STYLE_DESCRIPTION_SIZE];
158    } STYLEBUFW;
159
160    typedef WORD ATOM;
161
162    cpp_quote("#endif")
163
164    cpp_quote("#if (WINVER < 0x040A)")
165
166    #define IMEMENUITEM_STRING_SIZE 80
167
168    typedef struct
169    {
170        UINT        cbSize;
171        UINT        fType;
172        UINT        fState;
173        UINT        wID;
174        HBITMAP     hbmpChecked;
175        HBITMAP     hbmpUnchecked;
176        DWORD       dwItemData;
177        CHAR        szString[IMEMENUITEM_STRING_SIZE];
178        HBITMAP     hbmpItem;
179    } IMEMENUITEMINFOA;
180
181    typedef struct
182    {
183        UINT        cbSize;
184        UINT        fType;
185        UINT        fState;
186        UINT        wID;
187        HBITMAP     hbmpChecked;
188        HBITMAP     hbmpUnchecked;
189        DWORD       dwItemData;
190        WCHAR       szString[IMEMENUITEM_STRING_SIZE];
191        HBITMAP     hbmpItem;
192    } IMEMENUITEMINFOW;
193
194    cpp_quote("#endif")
195
196    cpp_quote("#ifndef _DDKIMM_H_")
197
198    typedef struct
199    {
200        HWND                hWnd;
201        BOOL                fOpen;
202        POINT               ptStatusWndPos;
203        POINT               ptSoftKbdPos;
204        DWORD               fdwConversion;
205        DWORD               fdwSentence;
206        union
207        {
208            LOGFONTA        A;
209            LOGFONTW        W;
210        } lfFont;
211        COMPOSITIONFORM     cfCompForm;
212        CANDIDATEFORM       cfCandForm[4];
213        HIMCC               hCompStr;
214        HIMCC               hCandInfo;
215        HIMCC               hGuideLine;
216        HIMCC               hPrivate;
217        DWORD               dwNumMsgBuf;
218        HIMCC               hMsgBuf;
219        DWORD               fdwInit;
220        DWORD               dwReserve[3];
221    } INPUTCONTEXT;
222
223    typedef struct
224    {
225        DWORD       dwPrivateDataSize;
226        DWORD       fdwProperty;
227        DWORD       fdwConversionCaps;
228        DWORD       fdwSentenceCaps;
229        DWORD       fdwUICaps;
230        DWORD       fdwSCSCaps;
231        DWORD       fdwSelectCaps;
232    } IMEINFO;
233
234    cpp_quote("#endif")
235
236    [
237      object,
238      uuid(08C03412-F96B-11d0-A475-00AA006BCC59),
239      pointer_default(unique)
240    ]
241    interface IEnumRegisterWordA : IUnknown
242    {
243        HRESULT Clone([out] IEnumRegisterWordA **ppEnum);
244        HRESULT Next([in] ULONG ulCount, [out] REGISTERWORDA *rgRegisterWord, [out] ULONG *pcFetched);
245        HRESULT Reset();
246        HRESULT Skip([in] ULONG ulCount);
247    };
248
249    [
250      object,
251      uuid(4955DD31-B159-11d0-8FCF-00AA006BCC59),
252      pointer_default(unique)
253    ]
254    interface IEnumRegisterWordW : IUnknown
255    {
256        HRESULT Clone([out] IEnumRegisterWordW **ppEnum);
257        HRESULT Next([in] ULONG ulCount, [out] REGISTERWORDW *rgRegisterWord, [out] ULONG *pcFetched);
258        HRESULT Reset();
259        HRESULT Skip([in] ULONG ulCount);
260    };
261
262
263    [
264      object,
265      uuid(09b5eab0-f997-11d1-93d4-0060b067b86e),
266      pointer_default(unique)
267    ]
268    interface IEnumInputContext : IUnknown
269    {
270        HRESULT Clone([out] IEnumInputContext **ppEnum);
271        HRESULT Next([in] ULONG ulCount, [out] HIMC *rgInputContext, [out] ULONG *pcFetched);
272        HRESULT Reset();
273        HRESULT Skip([in] ULONG ulCount);
274    };
275
276
277    [
278      object,
279      uuid(b3458082-bd00-11d1-939b-0060b067b86e),
280      pointer_default(unique)
281    ]
282    interface IActiveIMMRegistrar : IUnknown
283    {
284        HRESULT RegisterIME([in] REFCLSID rclsid, [in] LANGID lgid, [in] LPCWSTR pszIconFile, [in] LPCWSTR pszDesc);
285        HRESULT UnregisterIME([in] REFCLSID rclsid);
286    };
287
288    [
289      object,
290      uuid(b5cf2cfa-8aeb-11d1-9364-0060b067b86e),
291      pointer_default(unique)
292    ]
293    interface IActiveIMMMessagePumpOwner : IUnknown
294    {
295        HRESULT Start();
296        HRESULT End();
297        HRESULT OnTranslateMessage([in] const MSG *pMsg);
298        HRESULT Pause([out] DWORD *pdwCookie);
299        HRESULT Resume([in] DWORD dwCookie);
300    }
301
302    [
303      object,
304      uuid(08c0e040-62d1-11d1-9326-0060b067b86e),
305      pointer_default(unique)
306    ]
307    interface IActiveIMMApp : IUnknown
308    {
309        HRESULT AssociateContext([in] HWND hWnd, [in] HIMC hIME, [out] HIMC *phPrev);
310        HRESULT ConfigureIMEA([in] HKL hKL, [in] HWND hWnd, [in] DWORD dwMode, [in] REGISTERWORDA *pData);
311        HRESULT ConfigureIMEW([in] HKL hKL, [in] HWND hWnd, [in] DWORD dwMode, [in] REGISTERWORDW *pData);
312        HRESULT CreateContext([out] HIMC *phIMC);
313        HRESULT DestroyContext([in] HIMC hIME);
314        HRESULT EnumRegisterWordA([in] HKL hKL, [in] LPSTR szReading, [in] DWORD dwStyle, [in] LPSTR szRegister, [in] LPVOID pData, [out] IEnumRegisterWordA **pEnum);
315        HRESULT EnumRegisterWordW([in] HKL hKL, [in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szRegister, [in] LPVOID pData, [out] IEnumRegisterWordW **pEnum);
316        HRESULT EscapeA([in] HKL hKL, [in] HIMC hIMC, [in] UINT uEscape, [in, out] LPVOID pData, [out] LRESULT *plResult);
317        HRESULT EscapeW([in] HKL hKL, [in] HIMC hIMC, [in] UINT uEscape, [in, out] LPVOID pData, [out] LRESULT *plResult);
318        HRESULT GetCandidateListA([in] HIMC hIMC, [in] DWORD dwIndex, [in] UINT uBufLen, [out] CANDIDATELIST *pCandList, [out] UINT *puCopied);
319        HRESULT GetCandidateListW([in] HIMC hIMC, [in] DWORD dwIndex, [in] UINT uBufLen, [out] CANDIDATELIST *pCandList, [out] UINT *puCopied);
320        HRESULT GetCandidateListCountA([in] HIMC hIMC, [out] DWORD *pdwListSize, [out] DWORD *pdwBufLen);
321        HRESULT GetCandidateListCountW([in] HIMC hIMC, [out] DWORD *pdwListSize, [out] DWORD *pdwBufLen);
322        HRESULT GetCandidateWindow([in] HIMC hIMC, [in] DWORD dwIndex, [out] CANDIDATEFORM *pCandidate);
323        HRESULT GetCompositionFontA([in] HIMC hIMC, [out] LOGFONTA *plf);
324        HRESULT GetCompositionFontW([in] HIMC hIMC, [out] LOGFONTW *plf);
325        HRESULT GetCompositionStringA([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LONG *plCopied, [out] LPVOID pBuf);
326        HRESULT GetCompositionStringW([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LONG *plCopied, [out] LPVOID pBuf);
327        HRESULT GetCompositionWindow([in] HIMC hIMC, [out] COMPOSITIONFORM *pCompForm);
328        HRESULT GetContext([in] HWND hWnd, [out] HIMC *phIMC);
329        HRESULT GetConversionListA([in] HKL hKL, [in] HIMC hIMC, [in] LPSTR pSrc, [in] UINT uBufLen, [in] UINT uFlag, [out] CANDIDATELIST *pDst, [out] UINT *puCopied);
330        HRESULT GetConversionListW([in] HKL hKL, [in] HIMC hIMC, [in] LPWSTR pSrc, [in] UINT uBufLen, [in] UINT uFlag, [out] CANDIDATELIST *pDst, [out] UINT *puCopied);
331        HRESULT GetConversionStatus([in] HIMC hIMC, [out] DWORD *pfdwConversion, [out] DWORD *pfdwSentence);
332        HRESULT GetDefaultIMEWnd([in] HWND hWnd, [out] HWND *phDefWnd);
333        HRESULT GetDescriptionA([in] HKL hKL, [in] UINT uBufLen, [out] LPSTR szDescription, [out] UINT *puCopied);
334        HRESULT GetDescriptionW([in] HKL hKL, [in] UINT uBufLen, [out] LPWSTR szDescription, [out] UINT *puCopied);
335        HRESULT GetGuideLineA([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LPSTR pBuf, [out] DWORD *pdwResult);
336        HRESULT GetGuideLineW([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LPWSTR pBuf, [out] DWORD *pdwResult);
337        HRESULT GetIMEFileNameA([in] HKL hKL, [in] UINT uBufLen, [out] LPSTR szFileName, [out] UINT *puCopied);
338        HRESULT GetIMEFileNameW([in] HKL hKL, [in] UINT uBufLen, [out] LPWSTR szFileName, [out] UINT *puCopied);
339        HRESULT GetOpenStatus([in] HIMC hIMC);
340        HRESULT GetProperty([in] HKL hKL, [in] DWORD fdwIndex, [out] DWORD *pdwProperty);
341        HRESULT GetRegisterWordStyleA([in] HKL hKL, [in] UINT nItem, [out] STYLEBUFA *pStyleBuf, [out] UINT *puCopied);
342        HRESULT GetRegisterWordStyleW([in] HKL hKL, [in] UINT nItem, [out] STYLEBUFW *pStyleBuf, [out] UINT *puCopied);
343        HRESULT GetStatusWindowPos([in] HIMC hIMC, [out] POINT *pptPos);
344        HRESULT GetVirtualKey([in] HWND hWnd, [out] UINT *puVirtualKey);
345        HRESULT InstallIMEA([in] LPSTR szIMEFileName, [in] LPSTR szLayoutText, [out] HKL *phKL);
346        HRESULT InstallIMEW([in] LPWSTR szIMEFileName, [in] LPWSTR szLayoutText, [out] HKL *phKL);
347        HRESULT IsIME([in] HKL hKL);
348        HRESULT IsUIMessageA([in] HWND hWndIME, [in] UINT msg, [in] WPARAM wParam, [in] LPARAM lParam);
349        HRESULT IsUIMessageW([in] HWND hWndIME, [in] UINT msg, [in] WPARAM wParam, [in] LPARAM lParam);
350        HRESULT NotifyIME([in] HIMC hIMC, [in] DWORD dwAction, [in] DWORD dwIndex, [in] DWORD dwValue);
351        HRESULT RegisterWordA([in] HKL hKL, [in] LPSTR szReading, [in] DWORD dwStyle, [in] LPSTR szRegister);
352        HRESULT RegisterWordW([in] HKL hKL, [in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szRegister);
353        HRESULT ReleaseContext([in] HWND hWnd, [in] HIMC hIMC);
354        HRESULT SetCandidateWindow([in] HIMC hIMC, [in] CANDIDATEFORM *pCandidate);
355        HRESULT SetCompositionFontA([in] HIMC hIMC, [in] LOGFONTA *plf);
356        HRESULT SetCompositionFontW([in] HIMC hIMC, [in] LOGFONTW *plf);
357        HRESULT SetCompositionStringA([in] HIMC hIMC, [in] DWORD dwIndex, [in] LPVOID pComp, [in] DWORD dwCompLen, [in] LPVOID pRead, [in] DWORD dwReadLen);
358        HRESULT SetCompositionStringW([in] HIMC hIMC, [in] DWORD dwIndex, [in] LPVOID pComp, [in] DWORD dwCompLen, [in] LPVOID pRead, [in] DWORD dwReadLen);
359        HRESULT SetCompositionWindow([in] HIMC hIMC, [in] COMPOSITIONFORM *pCompForm);
360        HRESULT SetConversionStatus([in] HIMC hIMC, [in] DWORD fdwConversion, [in] DWORD fdwSentence);
361        HRESULT SetOpenStatus([in] HIMC hIMC, [in] BOOL fOpen);
362        HRESULT SetStatusWindowPos([in] HIMC hIMC, [in] POINT *pptPos);
363        HRESULT SimulateHotKey([in] HWND hWnd, [in] DWORD dwHotKeyID);
364        HRESULT UnregisterWordA([in] HKL hKL, [in] LPSTR szReading, [in] DWORD dwStyle, [in] LPSTR szUnregister);
365        HRESULT UnregisterWordW([in] HKL hKL, [in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szUnregister);
366
367        HRESULT Activate([in] BOOL fRestoreLayout);
368        HRESULT Deactivate();
369
370        HRESULT OnDefWindowProc([in] HWND hWnd, [in] UINT Msg, [in] WPARAM wParam, [in] LPARAM lParam, [out] LRESULT *plResult);
371
372        HRESULT FilterClientWindows([in] ATOM *aaClassList, [in] UINT uSize);
373
374        HRESULT GetCodePageA([in] HKL hKL, [out] UINT *uCodePage);
375        HRESULT GetLangId([in] HKL hKL, [out] LANGID *plid);
376
377        // win98/nt5 apis
378        HRESULT AssociateContextEx([in] HWND hWnd, [in] HIMC hIMC, [in] DWORD dwFlags);
379        HRESULT DisableIME([in] DWORD idThread);
380        HRESULT GetImeMenuItemsA([in] HIMC hIMC, [in] DWORD dwFlags, [in] DWORD dwType, [in] IMEMENUITEMINFOA *pImeParentMenu, [out] IMEMENUITEMINFOA *pImeMenu, [in] DWORD dwSize, [out] DWORD *pdwResult);
381        HRESULT GetImeMenuItemsW([in] HIMC hIMC, [in] DWORD dwFlags, [in] DWORD dwType, [in] IMEMENUITEMINFOW *pImeParentMenu, [out] IMEMENUITEMINFOW *pImeMenu, [in] DWORD dwSize, [out] DWORD *pdwResult);
382        HRESULT EnumInputContext([in] DWORD idThread, [out] IEnumInputContext **ppEnum);
383    };
384
385    [
386      object,
387      uuid(08C03411-F96B-11d0-A475-00AA006BCC59),
388      pointer_default(unique)
389    ]
390    interface IActiveIMMIME : IUnknown
391    {
392        HRESULT AssociateContext([in] HWND hWnd, [in] HIMC hIME, [out] HIMC *phPrev);
393        HRESULT ConfigureIMEA([in] HKL hKL, [in] HWND hWnd, [in] DWORD dwMode, [in] REGISTERWORDA *pData);
394        HRESULT ConfigureIMEW([in] HKL hKL, [in] HWND hWnd, [in] DWORD dwMode, [in] REGISTERWORDW *pData);
395        HRESULT CreateContext([out] HIMC *phIMC);
396        HRESULT DestroyContext([in] HIMC hIME);
397        HRESULT EnumRegisterWordA([in] HKL hKL, [in] LPSTR szReading, [in] DWORD dwStyle, [in] LPSTR szRegister, [in] LPVOID pData, [out] IEnumRegisterWordA **pEnum);
398        HRESULT EnumRegisterWordW([in] HKL hKL, [in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szRegister, [in] LPVOID pData, [out] IEnumRegisterWordW **pEnum);
399        HRESULT EscapeA([in] HKL hKL, [in] HIMC hIMC, [in] UINT uEscape, [in, out] LPVOID pData, [out] LRESULT *plResult);
400        HRESULT EscapeW([in] HKL hKL, [in] HIMC hIMC, [in] UINT uEscape, [in, out] LPVOID pData, [out] LRESULT *plResult);
401        HRESULT GetCandidateListA([in] HIMC hIMC, [in] DWORD dwIndex, [in] UINT uBufLen, [out] CANDIDATELIST *pCandList, [out] UINT *puCopied);
402        HRESULT GetCandidateListW([in] HIMC hIMC, [in] DWORD dwIndex, [in] UINT uBufLen, [out] CANDIDATELIST *pCandList, [out] UINT *puCopied);
403        HRESULT GetCandidateListCountA([in] HIMC hIMC, [out] DWORD *pdwListSize, [out] DWORD *pdwBufLen);
404        HRESULT GetCandidateListCountW([in] HIMC hIMC, [out] DWORD *pdwListSize, [out] DWORD *pdwBufLen);
405        HRESULT GetCandidateWindow([in] HIMC hIMC, [in] DWORD dwIndex, [out] CANDIDATEFORM *pCandidate);
406        HRESULT GetCompositionFontA([in] HIMC hIMC, [out] LOGFONTA *plf);
407        HRESULT GetCompositionFontW([in] HIMC hIMC, [out] LOGFONTW *plf);
408        HRESULT GetCompositionStringA([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LONG *plCopied, [out] LPVOID pBuf);
409        HRESULT GetCompositionStringW([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LONG *plCopied, [out] LPVOID pBuf);
410        HRESULT GetCompositionWindow([in] HIMC hIMC, [out] COMPOSITIONFORM *pCompForm);
411        HRESULT GetContext([in] HWND hWnd, [out] HIMC *phIMC);
412        HRESULT GetConversionListA([in] HKL hKL, [in] HIMC hIMC, [in] LPSTR pSrc, [in] UINT uBufLen, [in] UINT uFlag, [out] CANDIDATELIST *pDst, [out] UINT *puCopied);
413        HRESULT GetConversionListW([in] HKL hKL, [in] HIMC hIMC, [in] LPWSTR pSrc, [in] UINT uBufLen, [in] UINT uFlag, [out] CANDIDATELIST *pDst, [out] UINT *puCopied);
414        HRESULT GetConversionStatus([in] HIMC hIMC, [out] DWORD *pfdwConversion, [out] DWORD *pfdwSentence);
415        HRESULT GetDefaultIMEWnd([in] HWND hWnd, [out] HWND *phDefWnd);
416        HRESULT GetDescriptionA([in] HKL hKL, [in] UINT uBufLen, [out] LPSTR szDescription, [out] UINT *puCopied);
417        HRESULT GetDescriptionW([in] HKL hKL, [in] UINT uBufLen, [out] LPWSTR szDescription, [out] UINT *puCopied);
418        HRESULT GetGuideLineA([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LPSTR pBuf, [out] DWORD *pdwResult);
419        HRESULT GetGuideLineW([in] HIMC hIMC, [in] DWORD dwIndex, [in] DWORD dwBufLen, [out] LPWSTR pBuf, [out] DWORD *pdwResult);
420        HRESULT GetIMEFileNameA([in] HKL hKL, [in] UINT uBufLen, [out] LPSTR szFileName, [out] UINT *puCopied);
421        HRESULT GetIMEFileNameW([in] HKL hKL, [in] UINT uBufLen, [out] LPWSTR szFileName, [out] UINT *puCopied);
422        HRESULT GetOpenStatus([in] HIMC hIMC);
423        HRESULT GetProperty([in] HKL hKL, [in] DWORD fdwIndex, [out] DWORD *pdwProperty);
424        HRESULT GetRegisterWordStyleA([in] HKL hKL, [in] UINT nItem, [out] STYLEBUFA *pStyleBuf, [out] UINT *puCopied);
425        HRESULT GetRegisterWordStyleW([in] HKL hKL, [in] UINT nItem, [out] STYLEBUFW *pStyleBuf, [out] UINT *puCopied);
426        HRESULT GetStatusWindowPos([in] HIMC hIMC, [out] POINT *pptPos);
427        HRESULT GetVirtualKey([in] HWND hWnd, [out] UINT *puVirtualKey);
428        HRESULT InstallIMEA([in] LPSTR szIMEFileName, [in] LPSTR szLayoutText, [out] HKL *phKL);
429        HRESULT InstallIMEW([in] LPWSTR szIMEFileName, [in] LPWSTR szLayoutText, [out] HKL *phKL);
430        HRESULT IsIME([in] HKL hKL);
431        HRESULT IsUIMessageA([in] HWND hWndIME, [in] UINT msg, [in] WPARAM wParam, [in] LPARAM lParam);
432        HRESULT IsUIMessageW([in] HWND hWndIME, [in] UINT msg, [in] WPARAM wParam, [in] LPARAM lParam);
433        HRESULT NotifyIME([in] HIMC hIMC, [in] DWORD dwAction, [in] DWORD dwIndex, [in] DWORD dwValue);
434        HRESULT RegisterWordA([in] HKL hKL, [in] LPSTR szReading, [in] DWORD dwStyle, [in] LPSTR szRegister);
435        HRESULT RegisterWordW([in] HKL hKL, [in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szRegister);
436        HRESULT ReleaseContext([in] HWND hWnd, [in] HIMC hIMC);
437        HRESULT SetCandidateWindow([in] HIMC hIMC, [in] CANDIDATEFORM *pCandidate);
438        HRESULT SetCompositionFontA([in] HIMC hIMC, [in] LOGFONTA *plf);
439        HRESULT SetCompositionFontW([in] HIMC hIMC, [in] LOGFONTW *plf);
440        HRESULT SetCompositionStringA([in] HIMC hIMC, [in] DWORD dwIndex, [in] LPVOID pComp, [in] DWORD dwCompLen, [in] LPVOID pRead, [in] DWORD dwReadLen);
441        HRESULT SetCompositionStringW([in] HIMC hIMC, [in] DWORD dwIndex, [in] LPVOID pComp, [in] DWORD dwCompLen, [in] LPVOID pRead, [in] DWORD dwReadLen);
442        HRESULT SetCompositionWindow([in] HIMC hIMC, [in] COMPOSITIONFORM *pCompForm);
443        HRESULT SetConversionStatus([in] HIMC hIMC, [in] DWORD fdwConversion, [in] DWORD fdwSentence);
444        HRESULT SetOpenStatus([in] HIMC hIMC, [in] BOOL fOpen);
445        HRESULT SetStatusWindowPos([in] HIMC hIMC, [in] POINT *pptPos);
446        HRESULT SimulateHotKey([in] HWND hWnd, [in] DWORD dwHotKeyID);
447        HRESULT UnregisterWordA([in] HKL hKL, [in] LPSTR szReading, [in] DWORD dwStyle, [in] LPSTR szUnregister);
448        HRESULT UnregisterWordW([in] HKL hKL, [in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szUnregister);
449
450        // ime helper methods
451        HRESULT GenerateMessage([in] HIMC hIMC);
452
453        // HIMC and HIMCC management api's
454        HRESULT LockIMC([in] HIMC hIMC, [out] INPUTCONTEXT **ppIMC);
455        HRESULT UnlockIMC([in] HIMC hIMC);
456        HRESULT GetIMCLockCount([in] HIMC hIMC, [out] DWORD *pdwLockCount);
457        HRESULT CreateIMCC([in] DWORD dwSize, [out] HIMCC *phIMCC);
458        HRESULT DestroyIMCC([in] HIMCC hIMCC);
459        HRESULT LockIMCC([in] HIMCC hIMCC, [out] void **ppv);
460        HRESULT UnlockIMCC([in] HIMCC hIMCC);
461        HRESULT ReSizeIMCC([in] HIMCC hIMCC, [in] DWORD dwSize, [out] HIMCC *phIMCC);
462        HRESULT GetIMCCSize([in] HIMCC hIMCC, [out] DWORD *pdwSize);
463        HRESULT GetIMCCLockCount([in] HIMCC hIMCC, [out] DWORD *pdwLockCount);
464
465        // hot key manipulation api's
466        HRESULT GetHotKey([in] DWORD dwHotKeyID, [out] UINT *puModifiers, [out] UINT *puVKey, [out] HKL *phKL);
467        HRESULT SetHotKey([in] DWORD dwHotKeyID, [in] UINT uModifiers, [in] UINT uVKey, [in] HKL hKL);
468
469        // soft keyboard api's
470        HRESULT CreateSoftKeyboard([in] UINT uType, [in] HWND hOwner, [in] int x, [in] int y, [out] HWND *phSoftKbdWnd);
471        HRESULT DestroySoftKeyboard([in] HWND hSoftKbdWnd);
472        HRESULT ShowSoftKeyboard([in] HWND hSoftKbdWnd, [in] int nCmdShow);
473
474        HRESULT GetCodePageA([in] HKL hKL, [out] UINT *uCodePage);
475        HRESULT GetLangId([in] HKL hKL, [out] LANGID *plid);
476
477        HRESULT KeybdEvent([in] LANGID lgidIME, [in] BYTE bVk, [in] BYTE bScan, [in] DWORD dwFlags, [in] DWORD dwExtraInfo);
478
479        HRESULT LockModal();
480        HRESULT UnlockModal();
481
482        // win98/nt5 apis
483        HRESULT AssociateContextEx([in] HWND hWnd, [in] HIMC hIMC, [in] DWORD dwFlags);
484        HRESULT DisableIME([in] DWORD idThread);
485        HRESULT GetImeMenuItemsA([in] HIMC hIMC, [in] DWORD dwFlags, [in] DWORD dwType, [in] IMEMENUITEMINFOA *pImeParentMenu, [out] IMEMENUITEMINFOA *pImeMenu, [in] DWORD dwSize, [out] DWORD *pdwResult);
486        HRESULT GetImeMenuItemsW([in] HIMC hIMC, [in] DWORD dwFlags, [in] DWORD dwType, [in] IMEMENUITEMINFOW *pImeParentMenu, [out] IMEMENUITEMINFOW *pImeMenu, [in] DWORD dwSize, [out] DWORD *pdwResult);
487        HRESULT EnumInputContext([in] DWORD idThread, [out] IEnumInputContext **ppEnum);
488        HRESULT RequestMessageA([in] HIMC hIMC, [in] WPARAM wParam, [in] LPARAM lParam, [out] LRESULT *plResult);
489        HRESULT RequestMessageW([in] HIMC hIMC, [in] WPARAM wParam, [in] LPARAM lParam, [out] LRESULT *plResult);
490
491        HRESULT SendIMCA([in] HWND hWnd, [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam, [out] LRESULT *plResult);
492        HRESULT SendIMCW([in] HWND hWnd, [in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam, [out] LRESULT *plResult);
493
494        HRESULT IsSleeping();
495    };
496
497    [
498      object,
499      uuid(6FE20962-D077-11d0-8FE7-00AA006BCC59),
500      pointer_default(unique)
501    ]
502    interface IActiveIME : IUnknown
503    {
504        HRESULT Inquire([in] DWORD dwSystemInfoFlags, [out] IMEINFO *pIMEInfo, [out] LPWSTR szWndClass, [out] DWORD *pdwPrivate);
505        HRESULT ConversionList([in] HIMC hIMC, [in] LPWSTR szSource, [in] UINT uFlag, [in] UINT uBufLen, [out] CANDIDATELIST *pDest, [out] UINT *puCopied);
506        HRESULT Configure([in] HKL hKL, [in] HWND hWnd, [in] DWORD dwMode, [in] REGISTERWORDW *pRegisterWord);
507        HRESULT Destroy([in] UINT uReserved);
508        HRESULT Escape([in] HIMC hIMC, [in] UINT uEscape, [in, out] void *pData, [out] LRESULT *plResult);
509        HRESULT SetActiveContext([in] HIMC hIMC, [in] BOOL fFlag);
510        HRESULT ProcessKey([in] HIMC hIMC, [in] UINT uVirKey, [in] DWORD lParam, [in] BYTE *pbKeyState);
511        HRESULT Notify([in] HIMC hIMC, [in] DWORD dwAction, [in] DWORD dwIndex, [in] DWORD dwValue);
512        HRESULT Select([in] HIMC hIMC, [in] BOOL fSelect);
513        HRESULT SetCompositionString([in] HIMC hIMC, [in] DWORD dwIndex, [in] void *pComp, [in] DWORD dwCompLen, [in] void *pRead, [in] DWORD dwReadLen);
514        HRESULT ToAsciiEx([in] UINT uVirKey, [in] UINT uScanCode, [in] BYTE *pbKeyState, [in] UINT fuState, [in] HIMC hIMC, [out] DWORD *pdwTransBuf, [out] UINT *puSize);
515        HRESULT RegisterWord([in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szString);
516        HRESULT UnregisterWord([in] LPWSTR szReading, [in] DWORD  dwStyle, [in] LPWSTR szString);
517        HRESULT GetRegisterWordStyle([in] UINT nItem, [out] STYLEBUFW *pStyleBuf, [out] UINT *puBufSize);
518        HRESULT EnumRegisterWord([in] LPWSTR szReading, [in] DWORD dwStyle, [in] LPWSTR szRegister, [in] LPVOID pData, [out] IEnumRegisterWordW **ppEnum);
519        HRESULT GetCodePageA([out] UINT *uCodePage);
520        HRESULT GetLangId([out] LANGID *plid);
521    };
522
523    [
524      object,
525      uuid(e1c4bf0e-2d53-11d2-93e1-0060b067b86e),
526      pointer_default(unique)
527    ]
528    interface IActiveIME2 : IActiveIME
529    {
530        HRESULT Sleep();
531        HRESULT Unsleep([in] BOOL fDead);
532    };
533
534    [
535      uuid(4955DD33-B159-11d0-8FCF-00AA006BCC59),
536    ]
537    coclass CActiveIMM
538    {
539        [default] interface IActiveIMMApp;
540        interface IActiveIMMIME;
541        interface IActiveIMMRegistrar;
542        interface IActiveIMMMessagePumpOwner;
543    };
544}
545