xref: /reactos/sdk/include/psdk/dimm.idl (revision 4561998a)
1/*
2 * Copyright 2007 Jacek Caban for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#ifndef DO_NO_IMPORTS
20import "unknwn.idl";
21#endif
22
23cpp_quote("#include <imm.h>")
24#ifdef _MSC_VER
25cpp_quote("DEFINE_GUID(CLSID_CActiveIMM, 0x4955dd33, 0xb159, 0x11d0, 0x8f,0xcf, 0x00,0xaa,0x00,0x6b,0xcc,0x59);")
26#endif
27cpp_quote("#if 0")
28
29typedef struct {
30    LPSTR lpReading;
31    LPSTR lpWord;
32} REGISTERWORDA;
33
34typedef struct {
35    LPWSTR lpReading;
36    LPWSTR lpWord;
37} REGISTERWORDW;
38
39#define LF_FACESIZE         32
40
41typedef struct {
42    LONG lfHeight;
43    LONG lfWidth;
44    LONG lfEscapement;
45    LONG lfOrientation;
46    LONG lfWeight;
47    BYTE lfItalic;
48    BYTE lfUnderline;
49    BYTE lfStrikeOut;
50    BYTE lfCharSet;
51    BYTE lfOutPrecision;
52    BYTE lfClipPrecision;
53    BYTE lfQuality;
54    BYTE lfPitchAndFamily;
55    CHAR lfFaceName[LF_FACESIZE];
56} LOGFONTA;
57
58typedef struct {
59    LONG  lfHeight;
60    LONG  lfWidth;
61    LONG  lfEscapement;
62    LONG  lfOrientation;
63    LONG  lfWeight;
64    BYTE  lfItalic;
65    BYTE  lfUnderline;
66    BYTE  lfStrikeOut;
67    BYTE  lfCharSet;
68    BYTE  lfOutPrecision;
69    BYTE  lfClipPrecision;
70    BYTE  lfQuality;
71    BYTE  lfPitchAndFamily;
72    WCHAR lfFaceName[LF_FACESIZE];
73} LOGFONTW;
74
75typedef DWORD HIMC;
76typedef DWORD HIMCC;
77
78typedef struct {
79    DWORD dwIndex;
80    DWORD dwStyle;
81    POINT ptCurrentPos;
82    RECT  rcArea;
83} CANDIDATEFORM;
84
85typedef struct {
86    DWORD dwStyle;
87    POINT ptCurrentPos;
88    RECT  rcArea;
89} COMPOSITIONFORM;
90
91typedef struct {
92    DWORD dwSize;
93    DWORD dwStyle;
94    DWORD dwCount;
95    DWORD dwSelection;
96    DWORD dwPageStart;
97    DWORD dwPageSize;
98    DWORD dwOffset[1];
99} CANDIDATELIST;
100
101#define STYLE_DESCRIPTION_SIZE  32
102
103typedef struct {
104    DWORD dwStyle;
105    CHAR  szDescription[STYLE_DESCRIPTION_SIZE];
106} STYLEBUFA;
107
108typedef struct {
109    DWORD dwStyle;
110    WCHAR szDescription[STYLE_DESCRIPTION_SIZE];
111} STYLEBUFW;
112
113typedef WORD ATOM;
114
115#define IMEMENUITEM_STRING_SIZE 80
116
117typedef struct {
118    UINT    cbSize;
119    UINT    fType;
120    UINT    fState;
121    UINT    wID;
122    HBITMAP hbmpChecked;
123    HBITMAP hbmpUnchecked;
124    DWORD   dwItemData;
125    CHAR    szString[IMEMENUITEM_STRING_SIZE];
126    HBITMAP hbmpItem;
127} IMEMENUITEMINFOA;
128
129typedef struct {
130    UINT    cbSize;
131    UINT    fType;
132    UINT    fState;
133    UINT    wID;
134    HBITMAP hbmpChecked;
135    HBITMAP hbmpUnchecked;
136    DWORD   dwItemData;
137    WCHAR   szString[IMEMENUITEM_STRING_SIZE];
138    HBITMAP hbmpItem;
139} IMEMENUITEMINFOW;
140
141cpp_quote("#endif")
142
143[
144    object,
145    uuid(08c03412-f96b-11d0-a475-00aa006bcc59),
146    pointer_default(unique)
147]
148interface IEnumRegisterWordA : IUnknown
149{
150    HRESULT Clone(
151            [out] IEnumRegisterWordA **ppEnum);
152
153    HRESULT Next(
154            [in]  ULONG ulCount,
155            [out] REGISTERWORDA *rgRegisterword,
156            [out] ULONG *pcFetched);
157
158    HRESULT Reset();
159
160    HRESULT Skip(
161            [in]  ULONG ulCount);
162}
163
164[
165    object,
166    uuid(4955dd31-b159-11d0-8fcf-00aa006bcc59),
167    pointer_default(unique)
168]
169interface IEnumRegisterWordW : IUnknown
170{
171    HRESULT Clone(
172            [out] IEnumRegisterWordW **ppEnum);
173
174    HRESULT Next(
175            [in]  ULONG ulCount,
176            [out] REGISTERWORDW *rgRegisterword,
177            [out] ULONG *pcFetched);
178
179    HRESULT Reset();
180
181    HRESULT Skip(
182            [in]  ULONG ulCount);
183}
184
185[
186    object,
187    uuid(09b5eab0-f997-11d1-93d4-0060b067b86e),
188    pointer_default(unique),
189    local
190]
191interface IEnumInputContext : IUnknown
192{
193    HRESULT Clone(
194            [out] IEnumInputContext **ppEnum);
195
196    HRESULT Next(
197            [in]  ULONG ulCount,
198            [out] HIMC *rgInputContext,
199            [out] ULONG *pcFetched);
200
201    HRESULT Reset();
202
203    HRESULT Skip(
204            [in]  ULONG ulCount);
205}
206
207[
208    object,
209    uuid(08c0e040-62d1-11d1-9326-0060b067b86e),
210    pointer_default(unique),
211    local
212]
213interface IActiveIMMApp : IUnknown
214{
215    HRESULT AssociateContext(
216            [in]  HWND hWnd,
217            [in]  HIMC hIME,
218            [out] HIMC *phPrev);
219
220    HRESULT ConfigureIMEA(
221            [in]  HKL hKL,
222            [in]  HWND hwnd,
223            [in]  DWORD dwMode,
224            [in]  REGISTERWORDA *pData);
225
226    HRESULT ConfigureIMEW(
227            [in]  HKL hKL,
228            [in]  HWND hWnd,
229            [in]  DWORD dwMode,
230            [in]  REGISTERWORDW *pData);
231
232    HRESULT CreateContext(
233            [out] HIMC *phIMC);
234
235    HRESULT DestroyContext(
236            [in]  HIMC hIME);
237
238    HRESULT EnumRegisterWordA(
239            [in]  HKL hKL,
240            [in]  LPSTR szReading,
241            [in]  DWORD dwStyle,
242            [in]  LPSTR szRegister,
243            [in]  LPVOID pData,
244            [out] IEnumRegisterWordA **pEnum);
245
246    HRESULT EnumRegisterWordW(
247            [in]  HKL hKL,
248            [in]  LPWSTR szReading,
249            [in]  DWORD dwStyle,
250            [in]  LPWSTR szRegister,
251            [in]  LPVOID pData,
252            [out] IEnumRegisterWordW **pEnum);
253
254    HRESULT EscapeA(
255            [in]  HKL hKL,
256            [in]  HIMC hIMC,
257            [in]  UINT uEscape,
258            [in, out] LPVOID pData,
259            [out] LRESULT *plResult);
260
261    HRESULT EscapeW(
262            [in]  HKL hKL,
263            [in]  HIMC hIMC,
264            [in]  UINT uEscape,
265            [in, out] LPVOID pData,
266            [out] LRESULT *plResult);
267
268    HRESULT GetCandidateListA(
269            [in]  HIMC hIMC,
270            [in]  DWORD dwIndex,
271            [in]  UINT uBufLen,
272            [out] CANDIDATELIST *pCandList,
273            [out] UINT *puCopied);
274
275    HRESULT GetCandidateListW(
276            [in]  HIMC hIMC,
277            [in]  DWORD dwIndex,
278            [in]  UINT uBufLen,
279            [out] CANDIDATELIST *pCandList,
280            [out] UINT *puCopied);
281
282    HRESULT GetCandidateListCountA(
283            [in]  HIMC hIMC,
284            [out] DWORD *pdwListSize,
285            [out] DWORD *pdwBufLen);
286
287    HRESULT GetCandidateListCountW(
288            [in]  HIMC hIMC,
289            [out] DWORD *pdwListSize,
290            [out] DWORD *pdwBufLen);
291
292    HRESULT GetCandidateWindow(
293            [in]  HIMC hIMC,
294            [in]  DWORD dwIndex,
295            [out] CANDIDATEFORM *pCandidate);
296
297    HRESULT GetCompositionFontA(
298            [in]  HIMC hIMC,
299            [out] LOGFONTA *plf);
300
301    HRESULT GetCompositionFontW(
302            [in]  HIMC hIMC,
303            [out] LOGFONTW *plf);
304
305    HRESULT GetCompositionStringA(
306            [in]  HIMC hIMC,
307            [in]  DWORD dwIndex,
308            [in]  DWORD dwBufLen,
309            [out] LONG *plCopied,
310            [out] LPVOID pBuf);
311
312    HRESULT GetCompositionStringW(
313            [in]  HIMC hIMC,
314            [in]  DWORD dwIndex,
315            [in]  DWORD dwBufLen,
316            [out] LONG *plCopied,
317            [out] LPVOID pBuf);
318
319    HRESULT GetCompositionWindow(
320            [in]  HIMC hIMC,
321            [out] COMPOSITIONFORM *pCompForm);
322
323    HRESULT GetContext(
324            [in]  HWND hwnd,
325            [out] HIMC *phIMC);
326
327    HRESULT GetConversionListA(
328            [in]  HKL hKL,
329            [in]  HIMC hIMC,
330            [in]  LPSTR pSrc,
331            [in]  UINT uBufLen,
332            [in]  UINT uFlag,
333            [out] CANDIDATELIST *pDst,
334            [out] UINT *puCopied);
335
336    HRESULT GetConversionListW(
337            [in]  HKL hKL,
338            [in]  HIMC hIMC,
339            [in]  LPWSTR pSrc,
340            [in]  UINT uBufLen,
341            [in]  UINT uFlag,
342            [out] CANDIDATELIST *pDst,
343            [out] UINT *puCopied);
344
345    HRESULT GetConversionStatus(
346            [in] HIMC hIMC,
347            [out] DWORD *pfdwConversion,
348            [out] DWORD *pfdwSentence);
349
350    HRESULT GetDefaultIMEWnd(
351            [in] HWND hWnd,
352            [out] HWND *phDefWnd);
353
354    HRESULT GetDescriptionA(
355            [in]  HKL hKL,
356            [in]  UINT uBufLen,
357            [out] LPSTR szDescription,
358            [out] UINT *puCopied);
359
360    HRESULT GetDescriptionW(
361            [in]  HKL hKL,
362            [in]  UINT uBufLen,
363            [out] LPWSTR szDescription,
364            [out] UINT *puCopied);
365
366    HRESULT GetGuideLineA(
367            [in]  HIMC hIMC,
368            [in]  DWORD dwIndex,
369            [in]  DWORD dwBufLen,
370            [out] LPSTR pBuf,
371            [out] DWORD *pdwResult);
372
373    HRESULT GetGuideLineW(
374            [in]  HIMC hIMC,
375            [in]  DWORD dwIndex,
376            [in]  DWORD dwBufLen,
377            [out] LPWSTR pBuf,
378            [out] DWORD *pdwResult);
379
380    HRESULT GetIMEFileNameA(
381            [in]  HKL hKL,
382            [in]  UINT uBufLen,
383            [out] LPSTR szFileName,
384            [out] UINT *puCopied);
385
386    HRESULT GetIMEFileNameW(
387            [in]  HKL hKL,
388            [in]  UINT uBufLen,
389            [out] LPWSTR szFileName,
390            [out] UINT *puCopied);
391
392    HRESULT GetOpenStatus(
393            [in]  HIMC hIMC);
394
395    HRESULT GetProperty(
396            [in]  HKL hKL,
397            [in]  DWORD fdwIndex,
398            [out] DWORD *pdwProperty);
399
400    HRESULT GetRegisterWordStyleA(
401            [in]  HKL hKL,
402            [in]  UINT nItem,
403            [out] STYLEBUFA *pStyleBuf,
404            [out] UINT *puCopied);
405
406    HRESULT GetRegisterWordStyleW(
407            [in]  HKL hKL,
408            [in]  UINT nItem,
409            [out] STYLEBUFW *pStyleBuf,
410            [out] UINT *puCopied);
411
412    HRESULT GetStatusWindowPos(
413            [in]  HIMC hIMC,
414            [out] POINT *pptPos);
415
416    HRESULT GetVirtualKey(
417            [in]  HWND hWnd,
418            [out] UINT *puVirtualKey);
419
420    HRESULT InstallIMEA(
421            [in]  LPSTR szIMEFileName,
422            [in]  LPSTR szLayoutText,
423            [out] HKL *phKL);
424
425    HRESULT InstallIMEW(
426            [in]  LPWSTR szIMEFileName,
427            [in]  LPWSTR szLayoutText,
428            [out] HKL *phKL);
429
430    HRESULT IsIME(
431            [in]  HKL hKL);
432
433    HRESULT IsUIMessageA(
434            [in]  HWND hWndIME,
435            [in]  UINT msg,
436            [in]  WPARAM wParam,
437            [in]  LPARAM lParam);
438
439    HRESULT IsUIMessageW(
440            [in]  HWND hWndIME,
441            [in]  UINT msg,
442            [in]  WPARAM wParam,
443            [in]  LPARAM lParam);
444
445    HRESULT NotifyIME(
446            [in]  HIMC hIMC,
447            [in]  DWORD dwAction,
448            [in]  DWORD dwIndex,
449            [in]  DWORD dwValue);
450
451    HRESULT RegisterWordA(
452            [in]  HKL hKL,
453            [in]  LPSTR szReading,
454            [in]  DWORD dwStyle,
455            [in]  LPSTR szRegister);
456
457    HRESULT RegisterWordW(
458            [in]  HKL hKL,
459            [in]  LPWSTR szReading,
460            [in]  DWORD dwStyle,
461            [in]  LPWSTR szRegister);
462
463    HRESULT ReleaseContext(
464            [in]  HWND hWnd,
465            [in]  HIMC hIMC);
466
467    HRESULT SetCandidateWindow(
468            [in]  HIMC hIMC,
469            [in]  CANDIDATEFORM *pCandidate);
470
471    HRESULT SetCompositionFontA(
472            [in]  HIMC hIMC,
473            [in]  LOGFONTA *plf);
474
475    HRESULT SetCompositionFontW(
476            [in]  HIMC hIMC,
477            [in]  LOGFONTW *plf);
478
479    HRESULT SetCompositionStringA(
480            [in]  HIMC hIMC,
481            [in]  DWORD dwIndex,
482            [in]  LPVOID pComp,
483            [in]  DWORD dwCompLen,
484            [in]  LPVOID pRead,
485            [in]  DWORD dwReadLen);
486
487    HRESULT SetCompositionStringW(
488            [in]  HIMC hIMC,
489            [in]  DWORD dwIndex,
490            [in]  LPVOID pComp,
491            [in]  DWORD dwCompLen,
492            [in]  LPVOID pRead,
493            [in]  DWORD dwReadLen);
494
495    HRESULT SetCompositionWindow(
496            [in]  HIMC hIMC,
497            [in]  COMPOSITIONFORM *pCompForm);
498
499    HRESULT SetConversionStatus(
500            [in]  HIMC hIMC,
501            [in]  DWORD fdwConversion,
502            [in]  DWORD fdwSentence);
503
504    HRESULT SetOpenStatus(
505            [in]  HIMC hIMC,
506            [in]  BOOL fOpen);
507
508    HRESULT SetStatusWindowPos(
509            [in]  HIMC hIMC,
510            [in]  POINT *pptPos);
511
512    HRESULT SimulateHotKey(
513            [in]  HWND hwnd,
514            [in]  DWORD dwHotKeyID);
515
516    HRESULT UnregisterWordA(
517            [in]  HKL hKL,
518            [in]  LPSTR szReading,
519            [in]  DWORD dwStyle,
520            [in]  LPSTR szUnregister);
521
522    HRESULT UnregisterWordW(
523            [in]  HKL hKL,
524            [in]  LPWSTR szReading,
525            [in]  DWORD dwStyle,
526            [in]  LPWSTR szUnregister);
527
528    HRESULT Activate(
529            [in]  BOOL fRestoreLayout);
530
531    HRESULT Deactivate();
532
533    HRESULT OnDefWindowProc(
534            [in]  HWND hWnd,
535            [in]  UINT Msg,
536            [in]  WPARAM wParam,
537            [in]  LPARAM lParam,
538            [out] LRESULT *plResult);
539
540    HRESULT FilterClientWindows(
541            [in]  ATOM *aaClassList,
542            [in]  UINT uSize);
543
544    HRESULT GetCodePageA(
545            [in]  HKL hKL,
546            [out] UINT *uCodePage);
547
548    HRESULT GetLangId(
549            [in]  HKL hKL,
550            [out] LANGID *plid);
551
552    HRESULT AssociateContextEx(
553            [in]  HWND hWnd,
554            [in]  HIMC hIMC,
555            [in]  DWORD dwFlags);
556
557    HRESULT DisableIME(
558            [in]  DWORD idThread);
559
560    HRESULT GetImeMenuItemsA(
561            [in]  HIMC hIMC,
562            [in]  DWORD dwFlags,
563            [in]  DWORD dwType,
564            [in]  IMEMENUITEMINFOA *pImeParentMenu,
565            [out] IMEMENUITEMINFOA *pImeMenu,
566            [in]  DWORD dwSize,
567            [out] DWORD *pdwResult);
568
569    HRESULT GetImeMenuItemsW(
570            [in]  HIMC hIMC,
571            [in]  DWORD dwFlags,
572            [in]  DWORD dwType,
573            [in]  IMEMENUITEMINFOW *pImeParentMenu,
574            [out] IMEMENUITEMINFOW *pImeMenu,
575            [in]  DWORD dwSize,
576            [out] DWORD *pdwResult);
577
578    HRESULT EnumInputContext(
579            [in]  DWORD idThread,
580            [out] IEnumInputContext **ppEnum);
581}
582
583[
584    object,
585    uuid(b5cf2cfa-8aeb-11d1-9364-0060b067b86e),
586    pointer_default(unique)
587]
588interface IActiveIMMMessagePumpOwner : IUnknown
589{
590    HRESULT Start();
591    HRESULT End();
592    HRESULT OnTranslateMessage([in] const MSG *msg);
593    HRESULT Pause([out] DWORD *cookie);
594    HRESULT Resume([in] DWORD cookie);
595}
596
597[
598    uuid(4955dd33-b159-11d0-8fcf-00aa006bcc59)
599]
600coclass CActiveIMM
601{
602    [default] interface IActiveIMMApp;
603    /* interface IActiveIMMIME; */
604    /* interface IActiveIMMRegistrar; */
605    interface IActiveIMMMessagePumpOwner;
606}
607