• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright 2010 Justin Chevrier
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 "oaidl.idl";
21#endif
22
23interface ITfLangBarEventSink;
24interface ITfLangBarItemMgr;
25interface ITfInputProcessorProfiles;
26
27const ULONG TF_LBI_DESC_MAXLEN = 32;
28
29typedef [uuid(12a1d29f-a065-440c-9746-eb2002c8bd19)] struct TF_LANGBARITEMINFO
30{
31    CLSID    clsidService;
32    GUID     guidItem;
33    DWORD    dwStyle;
34    ULONG    ulSort;
35    WCHAR    szDescription[TF_LBI_DESC_MAXLEN];
36} TF_LANGBARITEMINFO;
37
38[
39  object,
40  uuid(73540d69-edeb-4ee9-96c9-23aa30b25916),
41  pointer_default(unique),
42]
43interface ITfLangBarItem : IUnknown
44{
45    HRESULT GetInfo(
46        [out] TF_LANGBARITEMINFO *pInfo);
47
48    HRESULT GetStatus(
49        [out] DWORD *pdwStatus);
50
51    HRESULT Show(
52        [in] BOOL fShow);
53
54    HRESULT GetTooltipString(
55        [out] BSTR *pbstrToolTip);
56}
57
58[
59  object,
60  uuid(583f34d0-de25-11d2-afdd-00105a2799b5),
61  pointer_default(unique),
62]
63interface IEnumTfLangBarItems : IUnknown
64{
65    HRESULT Clone(
66        [out] IEnumTfLangBarItems **ppEnum);
67
68    HRESULT Next(
69        [in] ULONG ulCount,
70        [out, size_is(ulCount)] ITfLangBarItem **ppItem,
71        [in, out, unique] ULONG *pcFetched);
72
73    HRESULT Reset();
74
75    HRESULT Skip(
76        [in] ULONG ulCount);
77}
78
79[
80  object,
81  uuid(57dbe1a0-de25-11d2-afdd-00105a2799b5),
82  pointer_default(unique),
83]
84interface ITfLangBarItemSink : IUnknown
85{
86    HRESULT OnUpdate(
87        [in] DWORD dwFlags);
88}
89
90[
91  object,
92  uuid(ba468c55-9956-4fb1-a59d-52a7dd7cc6aa),
93  pointer_default(unique),
94]
95interface ITfLangBarItemMgr : IUnknown
96{
97    HRESULT EnumItems(
98        [out] IEnumTfLangBarItems **ppEnum);
99
100    HRESULT GetItem(
101        [in] REFGUID rguid,
102        [out] ITfLangBarItem **ppItem);
103
104    HRESULT AddItem(
105        [in] ITfLangBarItem *punk);
106
107    HRESULT RemoveItem(
108        [in] ITfLangBarItem *punk);
109
110    HRESULT AdviseItemSink(
111        [in] ITfLangBarItemSink *punk,
112        [out] DWORD *pdwCookie,
113        [in] REFGUID rguidItem);
114
115    HRESULT UnadviseItemSink(
116        [in] DWORD dwCookie);
117
118    HRESULT GetItemFloatingRect(
119        [in] DWORD dwThreadId,
120        [in] REFGUID rguid,
121        [out] RECT *prc);
122
123    HRESULT GetItemsStatus(
124        [in] ULONG ulCount,
125        [in, size_is(ulCount)] const GUID *prgguid,
126        [out, size_is(ulCount)] DWORD *pdwStatus);
127
128    HRESULT GetItemNum(
129        [out] ULONG *pulCount);
130
131    HRESULT GetItems(
132        [in] ULONG ulCount,
133        [out, size_is(ulCount), length_is(*pcFetched)] ITfLangBarItem **ppItem,
134        [out, size_is(ulCount), length_is(*pcFetched)] TF_LANGBARITEMINFO *pInfo,
135        [out, size_is(ulCount), length_is(*pcFetched)] DWORD *pdwStatus,
136        [in, out, unique] ULONG *pcFetched);
137
138    HRESULT AdviseItemsSink(
139        [in] ULONG ulCount,
140        [in, size_is(ulCount)] ITfLangBarItemSink **ppunk,
141        [in, size_is(ulCount)] const GUID *pguidItem,
142        [out, size_is(ulCount)] DWORD *pdwCookie);
143
144    HRESULT UnadviseItemsSink(
145        [in] ULONG ulCount,
146        [in, size_is(ulCount)] DWORD *pdwCookie);
147}
148
149[
150    object,
151    uuid(87955690-e627-11d2-8ddb-00105a2799b5),
152    pointer_default(unique)
153]
154interface ITfLangBarMgr: IUnknown
155{
156    HRESULT AdviseEventSink(
157        [in] ITfLangBarEventSink *pSink,
158        [in] HWND hwnd,
159        [in] DWORD dwflags,
160        [in] DWORD *pdwCookie);
161
162    HRESULT UnAdviseEventSink(
163        [in] DWORD dwCookie);
164
165    HRESULT GetThreadMarshalInterface(
166        [in] DWORD dwThreadId,
167        [in] DWORD dwType,
168        [in] REFIID riid,
169        [out] IUnknown **ppunk);
170
171    HRESULT GetThreadLangBarItemMgr(
172        [in] DWORD dwThreadId,
173        [out] ITfLangBarItemMgr **pplbie,
174        [out] DWORD *pdwThreadid);
175
176    HRESULT GetInputProcessorProfiles(
177        [in] DWORD dwThreadId,
178        [out] ITfInputProcessorProfiles **ppaip,
179        [out] DWORD *pdwThreadid);
180
181    HRESULT RestoreLastFocus(
182        [out] DWORD *dwThreadId,
183        [in] BOOL fPrev);
184
185    HRESULT SetModalInput(
186        [in] ITfLangBarEventSink *pSink,
187        [in] DWORD dwThreadId,
188        [in] DWORD dwFlags);
189
190    HRESULT ShowFloating(
191        [in] DWORD dwFlags);
192
193    HRESULT GetShowFloatingStatus(
194        [out] DWORD *pdwFlags);
195}
196
197[
198  object,
199  uuid(18a4e900-e0ae-11d2-afdd-00105a2799b5),
200  pointer_default(unique)
201]
202interface ITfLangBarEventSink: IUnknown
203{
204    HRESULT OnSetFocus(
205        [in] DWORD dwThreadId);
206
207    HRESULT OnThreadTerminate(
208        [in] DWORD dwThreadId);
209
210    HRESULT OnThreadItemChange(
211        [in] DWORD dwThreadId);
212
213    HRESULT OnModalInput(
214        [in] DWORD dwThreadId,
215        [in] UINT uMsg,
216        [in] WPARAM wParam,
217        [in] LPARAM lParam);
218
219    HRESULT ShowFloating(
220        [in] DWORD dwFlags);
221
222    HRESULT GetItemFloatingRect(
223        [in] DWORD dwThreadId,
224        [in] REFGUID rguid,
225        [out] RECT *prc);
226}
227