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