xref: /reactos/sdk/include/psdk/ctfutb.idl (revision 7f26a396)
1/*
2 * Copyright 2010 Justin Chevrier
3 * Copyright 2023 Katayama Hirofumi MZ
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20#ifndef DO_NO_IMPORTS
21import "oaidl.idl";
22#ifdef __midl
23import "msctf.idl";
24#endif
25#endif
26
27cpp_quote("#define TF_FLOATINGLANGBAR_WNDTITLEW L\"TF_FloatingLangBar_WndTitle\"")
28cpp_quote("#define TF_FLOATINGLANGBAR_WNDTITLEA \"TF_FloatingLangBar_WndTitle\"")
29cpp_quote("#ifdef UNICODE")
30cpp_quote("#define TF_FLOATINGLANGBAR_WNDTITLE TF_FLOATINGLANGBAR_WNDTITLEW")
31cpp_quote("#else")
32cpp_quote("#define TF_FLOATINGLANGBAR_WNDTITLE TF_FLOATINGLANGBAR_WNDTITLEA")
33cpp_quote("#endif")
34
35/* Flags for ITfLangBarItemSink::OnUpdate */
36cpp_quote("#define TF_LBI_ICON      0x00000001")
37cpp_quote("#define TF_LBI_TEXT      0x00000002")
38cpp_quote("#define TF_LBI_TOOLTIP   0x00000004")
39cpp_quote("#define TF_LBI_BITMAP    0x00000008")
40cpp_quote("#define TF_LBI_BALLOON   0x00000010")
41cpp_quote("#define TF_LBI_CUSTOMUI  0x00000020")
42cpp_quote("#define TF_LBI_BTNALL    (TF_LBI_TEXT | TF_LBI_ICON | TF_LBI_TOOLTIP)")
43cpp_quote("#define TF_LBI_BMPBTNALL (TF_LBI_TEXT | TF_LBI_BITMAP | TF_LBI_TOOLTIP)")
44cpp_quote("#define TF_LBI_BMPALL    (TF_LBI_BITMAP | TF_LBI_TOOLTIP)")
45cpp_quote("#define TF_LBI_STATUS    0x00010000")
46
47/* Flags for ITfLangBarItem::GetInfo */
48cpp_quote("#define TF_LBI_STYLE_HIDDENSTATUSCONTROL 0x00000001")
49cpp_quote("#define TF_LBI_STYLE_SHOWNINTRAY         0x00000002")
50cpp_quote("#define TF_LBI_STYLE_HIDEONNOOTHERITEMS  0x00000004")
51cpp_quote("#define TF_LBI_STYLE_SHOWNINTRAYONLY     0x00000008")
52cpp_quote("#define TF_LBI_STYLE_HIDDENBYDEFAULT     0x00000010")
53cpp_quote("#define TF_LBI_STYLE_TEXTCOLORICON       0x00000020")
54cpp_quote("#define TF_LBI_STYLE_BTN_BUTTON          0x00010000")
55cpp_quote("#define TF_LBI_STYLE_BTN_MENU            0x00020000")
56cpp_quote("#define TF_LBI_STYLE_BTN_TOGGLE          0x00040000")
57
58/* Flags for ITfLangBarItem::GetStatus */
59cpp_quote("#define TF_LBI_STATUS_HIDDEN      0x00000001")
60cpp_quote("#define TF_LBI_STATUS_DISABLED    0x00000002")
61cpp_quote("#define TF_LBI_STATUS_BTN_TOGGLED 0x00010000")
62
63cpp_quote("#define TF_LBI_BMPF_VERTICAL 0x00000001")
64
65/* Flags for ShowFloating */
66cpp_quote("#define TF_SFT_SHOWNORMAL              0x00000001")
67cpp_quote("#define TF_SFT_DOCK                    0x00000002")
68cpp_quote("#define TF_SFT_MINIMIZED               0x00000004")
69cpp_quote("#define TF_SFT_HIDDEN                  0x00000008")
70cpp_quote("#define TF_SFT_NOTRANSPARENCY          0x00000010")
71cpp_quote("#define TF_SFT_LOWTRANSPARENCY         0x00000020")
72cpp_quote("#define TF_SFT_HIGHTRANSPARENCY        0x00000040")
73cpp_quote("#define TF_SFT_LABELS                  0x00000080")
74cpp_quote("#define TF_SFT_NOLABELS                0x00000100")
75cpp_quote("#define TF_SFT_EXTRAICONSONMINIMIZED   0x00000200")
76cpp_quote("#define TF_SFT_NOEXTRAICONSONMINIMIZED 0x00000400")
77cpp_quote("#define TF_SFT_DESKBAND                0x00000800")
78
79/* OnMenuSelect flags */
80cpp_quote("#define TF_INVALIDMENUITEM (UINT)(-1)")
81
82/* SystemDeviceTypeLangbarItem flag */
83cpp_quote("#define TF_DTLBI_USEPROFILEICON         0x00000001")
84
85typedef enum
86{
87    TF_LBI_CLK_RIGHT = 1,
88    TF_LBI_CLK_LEFT = 2
89} TfLBIClick;
90
91interface ITfLangBarEventSink;
92interface ITfLangBarItemMgr;
93interface ITfInputProcessorProfiles;
94interface IEnumTfLangBarItems;
95interface ITfLangBarItem;
96interface ITfLangBarItemSink;
97interface ITfLangBarItemBalloon;
98interface ITfLangBarItemBitmap;
99interface ITfLangBarItemBitmapButton;
100interface ITfLangBarItemButton;
101interface ITfMenu;
102interface ITfSystemDeviceTypeLangBarItem;
103interface ITfSystemLangBarItem;
104interface ITfSystemLangBarItemSink;
105interface ITfSystemLangBarItemText;
106
107[
108    object,
109    uuid(87955690-e627-11d2-8ddb-00105a2799b5),
110    pointer_default(unique)
111]
112interface ITfLangBarMgr: IUnknown
113{
114    HRESULT AdviseEventSink(
115        [in] ITfLangBarEventSink *pSink,
116        [in] HWND hwnd,
117        [in] DWORD dwflags,
118        [in] DWORD *pdwCookie);
119
120    HRESULT UnAdviseEventSink(
121        [in] DWORD dwCookie);
122
123    HRESULT GetThreadMarshalInterface(
124        [in] DWORD dwThreadId,
125        [in] DWORD dwType,
126        [in] REFIID riid,
127        [out] IUnknown **ppunk);
128
129    HRESULT GetThreadLangBarItemMgr(
130        [in] DWORD dwThreadId,
131        [out] ITfLangBarItemMgr **pplbie,
132        [out] DWORD *pdwThreadid);
133
134    HRESULT GetInputProcessorProfiles(
135        [in] DWORD dwThreadId,
136        [out] ITfInputProcessorProfiles **ppaip,
137        [out] DWORD *pdwThreadid);
138
139    HRESULT RestoreLastFocus(
140        [out] DWORD *dwThreadId,
141        [in] BOOL fPrev);
142
143    HRESULT SetModalInput(
144        [in] ITfLangBarEventSink *pSink,
145        [in] DWORD dwThreadId,
146        [in] DWORD dwFlags);
147
148    HRESULT ShowFloating(
149        [in] DWORD dwFlags);
150
151    HRESULT GetShowFloatingStatus(
152        [out] DWORD *pdwFlags);
153}
154
155[
156  object,
157  uuid(18a4e900-e0ae-11d2-afdd-00105a2799b5),
158  pointer_default(unique)
159]
160interface ITfLangBarEventSink: IUnknown
161{
162    HRESULT OnSetFocus(
163        [in] DWORD dwThreadId);
164
165    HRESULT OnThreadTerminate(
166        [in] DWORD dwThreadId);
167
168    HRESULT OnThreadItemChange(
169        [in] DWORD dwThreadId);
170
171    HRESULT OnModalInput(
172        [in] DWORD dwThreadId,
173        [in] UINT uMsg,
174        [in] WPARAM wParam,
175        [in] LPARAM lParam);
176
177    HRESULT ShowFloating(
178        [in] DWORD dwFlags);
179
180    HRESULT GetItemFloatingRect(
181        [in] DWORD dwThreadId,
182        [in] REFGUID rguid,
183        [out] RECT *prc);
184}
185
186const ULONG TF_LBI_DESC_MAXLEN = 32;
187
188typedef [uuid(12a1d29f-a065-440c-9746-eb2002c8bd19)] struct TF_LANGBARITEMINFO
189{
190    CLSID clsidService;
191    GUID guidItem;
192    DWORD dwStyle;
193    ULONG ulSort;
194    WCHAR szDescription[TF_LBI_DESC_MAXLEN];
195} TF_LANGBARITEMINFO;
196
197[
198  object,
199  uuid(ba468c55-9956-4fb1-a59d-52a7dd7cc6aa),
200  pointer_default(unique)
201]
202interface ITfLangBarItemMgr : IUnknown
203{
204    HRESULT EnumItems(
205        [out] IEnumTfLangBarItems **ppEnum);
206
207    HRESULT GetItem(
208        [in] REFGUID rguid,
209        [out] ITfLangBarItem **ppItem);
210
211    HRESULT AddItem(
212        [in] ITfLangBarItem *punk);
213
214    HRESULT RemoveItem(
215        [in] ITfLangBarItem *punk);
216
217    HRESULT AdviseItemSink(
218        [in] ITfLangBarItemSink *punk,
219        [out] DWORD *pdwCookie,
220        [in] REFGUID rguidItem);
221
222    HRESULT UnadviseItemSink(
223        [in] DWORD dwCookie);
224
225    HRESULT GetItemFloatingRect(
226        [in] DWORD dwThreadId,
227        [in] REFGUID rguid,
228        [out] RECT *prc);
229
230    HRESULT GetItemsStatus(
231        [in] ULONG ulCount,
232        [in, size_is(ulCount)] const GUID *prgguid,
233        [out, size_is(ulCount)] DWORD *pdwStatus);
234
235    HRESULT GetItemNum(
236        [out] ULONG *pulCount);
237
238    HRESULT GetItems(
239        [in] ULONG ulCount,
240        [out, size_is(ulCount), length_is(*pcFetched)] ITfLangBarItem **ppItem,
241        [out, size_is(ulCount), length_is(*pcFetched)] TF_LANGBARITEMINFO *pInfo,
242        [out, size_is(ulCount), length_is(*pcFetched)] DWORD *pdwStatus,
243        [in, out, unique] ULONG *pcFetched);
244
245    HRESULT AdviseItemsSink(
246        [in] ULONG ulCount,
247        [in, size_is(ulCount)] ITfLangBarItemSink **ppunk,
248        [in, size_is(ulCount)] const GUID *pguidItem,
249        [out, size_is(ulCount)] DWORD *pdwCookie);
250
251    HRESULT UnadviseItemsSink(
252        [in] ULONG ulCount,
253        [in, size_is(ulCount)] DWORD *pdwCookie);
254}
255
256[
257  object,
258  uuid(583f34d0-de25-11d2-afdd-00105a2799b5),
259  pointer_default(unique)
260]
261interface IEnumTfLangBarItems : IUnknown
262{
263    HRESULT Clone(
264        [out] IEnumTfLangBarItems **ppEnum);
265
266    HRESULT Next(
267        [in] ULONG ulCount,
268        [out, size_is(ulCount)] ITfLangBarItem **ppItem,
269        [in, out, unique] ULONG *pcFetched);
270
271    HRESULT Reset();
272
273    HRESULT Skip(
274        [in] ULONG ulCount);
275}
276
277[
278  object,
279  uuid(73540d69-edeb-4ee9-96c9-23aa30b25916),
280  pointer_default(unique)
281]
282interface ITfLangBarItem : IUnknown
283{
284    HRESULT GetInfo(
285        [out] TF_LANGBARITEMINFO *pInfo);
286
287    HRESULT GetStatus(
288        [out] DWORD *pdwStatus);
289
290    HRESULT Show(
291        [in] BOOL fShow);
292
293    HRESULT GetTooltipString(
294        [out] BSTR *pbstrToolTip);
295}
296
297[
298  object,
299  uuid(57dbe1a0-de25-11d2-afdd-00105a2799b5),
300  pointer_default(unique)
301]
302interface ITfLangBarItemSink : IUnknown
303{
304    HRESULT OnUpdate(
305        [in] DWORD dwFlags);
306}
307
308[
309  object,
310  uuid(01c2d285-d3c7-4b7b-b5b5-d97411d0c283),
311  pointer_default(unique)
312]
313interface ITfLangBarItemBalloon : IUnknown
314{
315    HRESULT OnClick(
316        [in] TfLBIClick click,
317        [in] POINT      pt,
318        [in] const RECT *prcArea);
319
320    HRESULT GetPreferredSize(
321        [in]  const SIZE *pszDefault,
322        [out] SIZE       *psz);
323
324    typedef enum
325    {
326        TF_LB_BALLOON_RECO = 0,
327        TF_LB_BALLOON_SHOW = 1,
328        TF_LB_BALLOON_MISS = 2
329    } TfLBBalloonStyle;
330
331    typedef struct TF_LBBALLOONINFO
332    {
333        TfLBBalloonStyle style;
334        BSTR             bstrText;
335    } TF_LBBALLOONINFO;
336
337    HRESULT GetBalloonInfo(
338        [out] TF_LBBALLOONINFO *pInfo);
339}
340
341[
342  object,
343  uuid(73830352-d722-4179-ada5-f045c98df355),
344  pointer_default(unique)
345]
346interface ITfLangBarItemBitmap : IUnknown
347{
348    HRESULT OnClick(
349        [in] TfLBIClick click,
350        [in] POINT      pt,
351        [in] const RECT *prcArea);
352
353    HRESULT GetPreferredSize(
354        [in]  const SIZE *pszDefault,
355        [out] SIZE       *psz);
356
357    HRESULT DrawBitmap(
358        [in]  LONG    bmWidth,
359        [in]  LONG    bmHeight,
360        [in]  DWORD   dwFlags,
361        [out] HBITMAP *phbmp,
362        [out] HBITMAP *phbmpMask);
363}
364
365[
366  object,
367  uuid(a26a0525-3fae-4fa0-89ee-88a964f9f1b5),
368  pointer_default(unique)
369]
370interface ITfLangBarItemBitmapButton : IUnknown
371{
372    HRESULT OnClick(
373        [in] TfLBIClick click,
374        [in] POINT      pt,
375        [in] const RECT *prcArea);
376
377    HRESULT InitMenu(
378        [in] ITfMenu *pMenu);
379
380    HRESULT OnMenuSelect(
381        [in] UINT wID);
382
383    HRESULT GetPreferredSize(
384        [in]  const SIZE *pszDefault,
385        [out] SIZE       *psz);
386
387    HRESULT DrawBitmap(
388        [in]  LONG    bmWidth,
389        [in]  LONG    bmHeight,
390        [in]  DWORD   dwFlags,
391        [out] HBITMAP *phbmp,
392        [out] HBITMAP *phbmpMask);
393
394    HRESULT GetText(
395        [out] BSTR *pbstrText);
396}
397
398[
399  object,
400  uuid(28c7f1d0-de25-11d2-afdd-00105a2799b5),
401  pointer_default(unique)
402]
403interface ITfLangBarItemButton : IUnknown
404{
405    HRESULT OnClick(
406        [in] TfLBIClick click,
407        [in] POINT      pt,
408        [in] const RECT *prcArea);
409
410    HRESULT InitMenu(
411        [in] ITfMenu *pMenu);
412
413    HRESULT OnMenuSelect(
414        [in] UINT wID);
415
416    HRESULT GetIcon(
417        [out] HICON *phIcon);
418
419    HRESULT GetText(
420        [out] BSTR *pbstrText);
421}
422
423[
424  object,
425  uuid(6f8a98e4-aaa0-4f15-8c5b-07e0df0a3dd8),
426  pointer_default(unique)
427]
428interface ITfMenu : IUnknown
429{
430    const DWORD TF_LBMENUF_CHECKED      = 0x00000001;
431    const DWORD TF_LBMENUF_SUBMENU      = 0x00000002;
432    const DWORD TF_LBMENUF_SEPARATOR    = 0x00000004;
433    const DWORD TF_LBMENUF_RADIOCHECKED = 0x00000008;
434    const DWORD TF_LBMENUF_GRAYED       = 0x00000010;
435
436    HRESULT AddMenuItem(
437        [in] UINT        uId,
438        [in] DWORD       dwFlags,
439        [in] HBITMAP     hbmp,
440        [in] HBITMAP     hbmpMask,
441        [in] const WCHAR *pch,
442        [in] ULONG       cch,
443             ITfMenu     **ppMenu);
444}
445
446[
447  object,
448  uuid(45672eb9-9059-46a2-838d-4530355f6a77),
449  pointer_default(unique)
450]
451interface ITfSystemDeviceTypeLangBarItem : IUnknown
452{
453    HRESULT SetIconMode(
454        [in] DWORD dwFlags);
455
456    HRESULT GetIconMode(
457        [out] DWORD *pdwFlags);
458}
459
460[
461  object,
462  uuid(1e13e9ec-6b33-4d4a-b5eb-8a92f029f356),
463  pointer_default(unique)
464]
465interface ITfSystemLangBarItem : IUnknown
466{
467    HRESULT SetIcon(
468        [in] HICON hIcon);
469
470    HRESULT SetTooltipString(
471        [in] WCHAR *pchToolTip,
472        [in] ULONG cch);
473}
474
475[
476  object,
477  uuid(1449d9ab-13cf-4687-aa3e-8d8b18574396),
478  pointer_default(unique)
479]
480interface ITfSystemLangBarItemSink : IUnknown
481{
482    HRESULT InitMenu(
483        [in] ITfMenu *pMenu);
484
485    HRESULT OnMenuSelect(
486        [in] UINT wID);
487}
488
489[
490  object,
491  uuid(5c4ce0e5-ba49-4b52-ac6b-3b397b4f701f),
492  pointer_default(unique)
493]
494interface ITfSystemLangBarItemText : IUnknown
495{
496    HRESULT SetItemText(
497        [in] const WCHAR *pch,
498        [in] ULONG       cch);
499
500    HRESULT GetItemText(
501        [out] BSTR *pbstrText);
502}
503