[MSCTF]
[reactos.git] / reactos / include / psdk / msctf.idl
1 /*
2 * Copyright 2008 Aric Stewart, 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 "oaidl.idl";
21 import "comcat.idl";
22 import "textstor.idl";
23 import "ctfutb.idl";
24 #endif
25 cpp_quote("#include <winuser.h>")
26
27 /* FIXME: LANGID is defined in winnt.h and mlang.h in the platform SDK */
28 cpp_quote("#ifndef _WINNT_H")
29 typedef WORD LANGID;
30 cpp_quote("#endif")
31
32 cpp_quote("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
33 cpp_quote("#define TF_E_DISCONNECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0504)")
34 cpp_quote("#define TF_E_ALREADY_EXISTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)")
35 cpp_quote("#define TF_E_NOLOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)")
36
37 cpp_quote("HRESULT WINAPI TF_CreateThreadMgr(ITfThreadMgr **pptim);")
38 cpp_quote("HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim);")
39 cpp_quote("HRESULT WINAPI TF_CreateInputProcessorProfiles(ITfInputProcessorProfiles **ppipr);")
40 cpp_quote("HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pppbm);")
41
42 cpp_quote("EXTERN_C const GUID GUID_PROP_TEXTOWNER;")
43 cpp_quote("DEFINE_GUID(GUID_PROP_ATTRIBUTE,0x34b45670,0x7526,0x11d2,0xa1,0x47,0x00,0x10,0x5a,0x27,0x99,0xb5);")
44 cpp_quote("EXTERN_C const GUID GUID_PROP_LANGID;")
45 cpp_quote("EXTERN_C const GUID GUID_PROP_READING;")
46 cpp_quote("EXTERN_C const GUID GUID_PROP_COMPOSING;")
47
48 cpp_quote("EXTERN_C const CLSID CLSID_TF_ThreadMgr;")
49 cpp_quote("EXTERN_C const CLSID CLSID_TF_InputProcessorProfiles;")
50 cpp_quote("EXTERN_C const CLSID CLSID_TF_LangBarMgr;")
51 cpp_quote("EXTERN_C const CLSID CLSID_TF_CategoryMgr;")
52 cpp_quote("DEFINE_GUID(CLSID_TF_DisplayAttributeMgr,0x3ce74de4,0x53d3,0x4d74,0x8b,0x83,0x43,0x1b,0x38,0x28,0xba,0x53);")
53
54 /* GUIDs for Compartments */
55 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_DISABLED;")
56 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_OPENCLOSE;")
57 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_HANDWRITING_OPENCLOSE;")
58 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_DISABLED;")
59 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_OPENCLOSE;")
60 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_GLOBALSTATE;")
61 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_PERSISTMENUENABLED;")
62 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_EMPTYCONTEXT;")
63 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_TIPUISTATUS;")
64
65 /* GUIDs for Categories */
66 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD;")
67 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH;")
68 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING;")
69 cpp_quote("EXTERN_C const GUID GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER;")
70
71 typedef [uuid(7213778c-7bb0-4270-b050-6189ee594e97)] DWORD TfEditCookie;
72 typedef [uuid(de403c21-89fd-4f85-8b87-64584d063fbc)] DWORD TfClientId;
73 typedef [uuid(88a9c478-f3ec-4763-8345-cd9250443f8d)] DWORD TfGuidAtom;
74
75 cpp_quote("#define TF_MOD_ALT 0x0001")
76 cpp_quote("#define TF_MOD_CONTROL 0x0002")
77 cpp_quote("#define TF_MOD_SHIFT 0x0004")
78 cpp_quote("#define TF_MOD_RALT 0x0008")
79 cpp_quote("#define TF_MOD_RCONTROL 0x0010")
80 cpp_quote("#define TF_MOD_RSHIFT 0x0020")
81 cpp_quote("#define TF_MOD_LALT 0x0040")
82 cpp_quote("#define TF_MOD_LCONTROL 0x0080")
83 cpp_quote("#define TF_MOD_LSHIFT 0x0100")
84 cpp_quote("#define TF_MOD_ON_KEYUP 0x0200")
85 cpp_quote("#define TF_MOD_IGNORE_ALL_MODIFIER 0x0400")
86
87 interface ITfDocumentMgr;
88 interface ITfContext;
89 interface IEnumTfDocumentMgrs;
90 interface IEnumTfContexts;
91 interface ITfFunctionProvider;
92 interface IEnumTfFunctionProviders;
93 interface ITfCompartmentMgr;
94 interface ITfEditSession;
95 interface ITfRange;
96 interface ITfContextView;
97 interface IEnumTfContextViews;
98 interface ITfProperty;
99 interface ITfReadOnlyProperty;
100 interface IEnumTfProperties;
101 interface ITfRangeBackup;
102 interface IEnumTfLanguageProfiles;
103 interface ITfEditRecord;
104 interface ITfCompositionView;
105 interface ITfKeyEventSink;
106
107 typedef [uuid(e1b5808d-1e46-4c19-84dc-68c5f5978cc8)] struct TF_LANGUAGEPROFILE
108 {
109 CLSID clsid;
110 LANGID langid;
111 GUID catid;
112 BOOL fActive;
113 GUID guidProfile;
114 } TF_LANGUAGEPROFILE;
115
116 typedef [uuid(77c12f95-b783-450d-879f-1cd2362c6521)] struct TF_PRESERVEDKEY
117 {
118 UINT uVKey;
119 UINT uModifiers;
120 } TF_PRESERVEDKEY;
121
122 typedef [uuid(5a886226-ae9a-489b-b991-2b1e25ee59a9)] enum { TF_ANCHOR_START = 0, TF_ANCHOR_END = 1 } TfAnchor;
123
124 [
125 object,
126 uuid(aa80e801-2021-11d2-93e0-0060b067b86e),
127 pointer_default(unique)
128 ]
129 interface ITfThreadMgr: IUnknown
130 {
131 HRESULT Activate(
132 [out] TfClientId *ptid);
133
134 HRESULT Deactivate();
135
136 HRESULT CreateDocumentMgr(
137 [out] ITfDocumentMgr **ppdim);
138
139 HRESULT EnumDocumentMgrs(
140 [out] IEnumTfDocumentMgrs **ppEnum);
141
142 HRESULT GetFocus(
143 [out] ITfDocumentMgr **ppdimFocus);
144
145 HRESULT SetFocus(
146 [in] ITfDocumentMgr *pdimFocus);
147
148 HRESULT AssociateFocus(
149 [in] HWND hwnd,
150 [in, unique] ITfDocumentMgr *pdimNew,
151 [out] ITfDocumentMgr **ppdimPrev);
152
153 HRESULT IsThreadFocus(
154 [out] BOOL *pfThreadFocus);
155
156 HRESULT GetFunctionProvider(
157 [in] REFCLSID clsid,
158 [out] ITfFunctionProvider **ppFuncProv);
159
160 HRESULT EnumFunctionProviders(
161 [out] IEnumTfFunctionProviders **ppEnum);
162
163 HRESULT GetGlobalCompartment(
164 [out] ITfCompartmentMgr **ppCompMgr);
165 };
166
167 [
168 object,
169 uuid(d7540241-f9a1-4364-befc-dbcd2c4395b7),
170 pointer_default(unique)
171 ]
172 interface ITfCompositionView : IUnknown
173 {
174 HRESULT GetOwnerClsid([out] CLSID *pclsid);
175
176 HRESULT GetRange([out] ITfRange **ppRange);
177 }
178
179 [
180 object,
181 uuid(aa80e7f4-2021-11d2-93e0-0060b067b86e),
182 pointer_default(unique)
183 ]
184 interface ITfDocumentMgr: IUnknown
185 {
186 HRESULT CreateContext(
187 [in] TfClientId tidOwner,
188 [in] DWORD dwFlags,
189 [in, unique] IUnknown *punk,
190 [out] ITfContext **ppic,
191 [out] TfEditCookie *pecTextStore);
192
193 HRESULT Push(
194 [in] ITfContext *pic);
195
196 const DWORD TF_POPF_ALL = 0x0001;
197
198 HRESULT Pop(
199 [in] DWORD dwFlags);
200
201 HRESULT GetTop(
202 [out] ITfContext **ppic);
203
204 HRESULT GetBase(
205 [out] ITfContext **ppic);
206
207 HRESULT EnumContexts(
208 [out] IEnumTfContexts **ppEnum);
209 };
210
211 [
212 object,
213 uuid(aa80e7fd-2021-11d2-93e0-0060b067b86e),
214 pointer_default(unique)
215 ]
216 interface ITfContext : IUnknown
217 {
218 const DWORD TF_ES_ASYNCDONTCARE = 0x0;
219 const DWORD TF_ES_SYNC = 0x1;
220 const DWORD TF_ES_READ = 0x2;
221 const DWORD TF_ES_READWRITE = 0x6;
222 const DWORD TF_ES_ASYNC = 0x8;
223
224 HRESULT RequestEditSession(
225 [in] TfClientId tid,
226 [in] ITfEditSession *pes,
227 [in] DWORD dwFlags,
228 [out] HRESULT *phrSession);
229
230 HRESULT InWriteSession(
231 [in] TfClientId tid,
232 [out] BOOL *pfWriteSession);
233
234 typedef [uuid(1690be9b-d3e9-49f6-8d8b-51b905af4c43)] enum { TF_AE_NONE, TF_AE_START, TF_AE_END } TfActiveSelEnd;
235
236 typedef [uuid(36ae42a4-6989-4bdc-b48a-6137b7bf2e42)] struct TF_SELECTIONSTYLE
237 {
238 TfActiveSelEnd ase;
239 BOOL fInterimChar;
240 } TF_SELECTIONSTYLE;
241
242 typedef [uuid(75eb22f2-b0bf-46a8-8006-975a3b6efcf1)] struct TF_SELECTION
243 {
244 ITfRange *range;
245 TF_SELECTIONSTYLE style;
246 } TF_SELECTION;
247
248 const ULONG TF_DEFAULT_SELECTION = TS_DEFAULT_SELECTION;
249
250 HRESULT GetSelection(
251 [in] TfEditCookie ec,
252 [in] ULONG ulIndex,
253 [in] ULONG ulCount,
254 [out, size_is(ulCount), length_is(*pcFetched)] TF_SELECTION *pSelection,
255 [out] ULONG *pcFetched);
256
257 HRESULT SetSelection(
258 [in] TfEditCookie ec,
259 [in] ULONG ulCount,
260 [in, size_is(ulCount)] const TF_SELECTION *pSelection);
261
262 HRESULT GetStart(
263 [in] TfEditCookie ec,
264 [out] ITfRange **ppStart);
265
266 HRESULT GetEnd(
267 [in] TfEditCookie ec,
268 [out] ITfRange **ppEnd);
269
270 typedef [uuid(bc7d979a-846a-444d-afef-0a9bfa82b961)] TS_STATUS TF_STATUS;
271 const DWORD TF_SD_READONLY = TS_SD_READONLY;
272 const DWORD TF_SD_LOADING = TS_SD_LOADING;
273 const DWORD TF_SS_DISJOINTSEL = TS_SS_DISJOINTSEL;
274 const DWORD TF_SS_REGIONS = TS_SS_REGIONS;
275 const DWORD TF_SS_TRANSITORY = TS_SS_TRANSITORY;
276
277
278 HRESULT GetActiveView(
279 [out] ITfContextView **ppView);
280
281 HRESULT EnumViews(
282 [out] IEnumTfContextViews **ppEnum);
283
284 HRESULT GetStatus(
285 [out] TF_STATUS *pdcs);
286
287 HRESULT GetProperty(
288 [in] REFGUID guidProp,
289 [out] ITfProperty **ppProp);
290
291 HRESULT GetAppProperty(
292 [in] REFGUID guidProp,
293 [out] ITfReadOnlyProperty **ppProp);
294
295 HRESULT TrackProperties(
296 [in, size_is(cProp)] const GUID **prgProp,
297 [in] ULONG cProp,
298 [in, size_is(cAppProp)] const GUID **prgAppProp,
299 [in] ULONG cAppProp,
300 [out] ITfReadOnlyProperty **ppProperty);
301
302 HRESULT EnumProperties(
303 [out] IEnumTfProperties **ppEnum);
304
305 HRESULT GetDocumentMgr(
306 [out] ITfDocumentMgr **ppDm);
307
308 HRESULT CreateRangeBackup(
309 [in] TfEditCookie ec,
310 [in] ITfRange *pRange,
311 [out] ITfRangeBackup **ppBackup);
312
313 };
314
315 [
316 object,
317 uuid(4ea48a35-60ae-446f-8fd6-e6a8d82459f7),
318 pointer_default(unique)
319 ]
320 interface ITfSource : IUnknown
321 {
322 HRESULT AdviseSink(
323 [in] REFIID riid,
324 [in, iid_is(riid)] IUnknown *punk,
325 [out] DWORD *pdwCookie);
326
327 HRESULT UnadviseSink(
328 [in] DWORD dwCookie);
329 };
330
331 [
332 object,
333 local,
334 uuid(1F02B6C5-7842-4EE6-8A0B-9A24183A95CA),
335 pointer_default(unique)
336 ]
337 interface ITfInputProcessorProfiles : IUnknown
338 {
339 HRESULT Register(
340 [in] REFCLSID rclsid);
341
342 HRESULT Unregister(
343 [in] REFCLSID rclsid);
344
345 HRESULT AddLanguageProfile(
346 [in] REFCLSID rclsid,
347 [in] LANGID langid,
348 [in] REFGUID guidProfile,
349 [in, size_is(cchDesc)] const WCHAR *pchDesc,
350 [in] ULONG cchDesc,
351 [in, size_is(cchFile)] const WCHAR *pchIconFile,
352 [in] ULONG cchFile,
353 [in] ULONG uIconIndex);
354
355 HRESULT RemoveLanguageProfile(
356 [in] REFCLSID rclsid,
357 [in] LANGID langid,
358 [in] REFGUID guidProfile);
359
360 HRESULT EnumInputProcessorInfo(
361 [out] IEnumGUID **ppEnum);
362
363 HRESULT GetDefaultLanguageProfile(
364 [in] LANGID langid,
365 [in] REFGUID catid,
366 [out] CLSID *pclsid,
367 [out] GUID *pguidProfile);
368
369 HRESULT SetDefaultLanguageProfile(
370 [in] LANGID langid,
371 [in] REFCLSID rclsid,
372 [in] REFGUID guidProfiles);
373
374 HRESULT ActivateLanguageProfile(
375 [in] REFCLSID rclsid,
376 [in] LANGID langid,
377 [in] REFGUID guidProfiles);
378
379 HRESULT GetActiveLanguageProfile(
380 [in] REFCLSID rclsid,
381 [out] LANGID *plangid,
382 [out] GUID *pguidProfile);
383
384 HRESULT GetLanguageProfileDescription(
385 [in] REFCLSID rclsid,
386 [in] LANGID langid,
387 [in] REFGUID guidProfile,
388 [out] BSTR *pbstrProfile);
389
390 HRESULT GetCurrentLanguage(
391 [out] LANGID *plangid);
392
393 HRESULT ChangeCurrentLanguage(
394 [in] LANGID langid);
395
396 HRESULT GetLanguageList(
397 [out] LANGID **ppLangId,
398 [out] ULONG *pulCount);
399
400 HRESULT EnumLanguageProfiles(
401 [in] LANGID langid,
402 [out] IEnumTfLanguageProfiles **ppEnum);
403
404 HRESULT EnableLanguageProfile(
405 [in] REFCLSID rclsid,
406 [in] LANGID langid,
407 [in] REFGUID guidProfile,
408 [in] BOOL fEnable);
409
410 HRESULT IsEnabledLanguageProfile(
411 [in] REFCLSID rclsid,
412 [in] LANGID langid,
413 [in] REFGUID guidProfile,
414 [out] BOOL *pfEnable);
415
416 HRESULT EnableLanguageProfileByDefault(
417 [in] REFCLSID rclsid,
418 [in] LANGID langid,
419 [in] REFGUID guidProfile,
420 [in] BOOL fEnable);
421
422 HRESULT SubstituteKeyboardLayout(
423 [in] REFCLSID rclsid,
424 [in] LANGID langid,
425 [in] REFGUID guidProfile,
426 [in] HKL hKL);
427 };
428
429 typedef [uuid(c4cc07f1-80cc-4a7b-bc54-98512782cbe3)]
430 enum {
431 TF_LS_NONE = 0,
432 TF_LS_SOLID = 1,
433 TF_LS_DOT = 2,
434 TF_LS_DASH = 3,
435 TF_LS_SQUIGGLE = 4
436 } TF_DA_LINESTYLE;
437
438 typedef [uuid(d9b92e21-084a-401b-9c64-1e6dad91a1ab)]
439 enum {
440 TF_CT_NONE = 0,
441 TF_CT_SYSCOLOR = 1,
442 TF_CT_COLORREF = 2
443 } TF_DA_COLORTYPE;
444
445 typedef [uuid(90d0cb5e-6520-4a0f-b47c-c39bd955f0d6)]
446 struct TF_DA_COLOR {
447 TF_DA_COLORTYPE type;
448 [switch_type(TF_DA_COLORTYPE), switch_is(type)]
449 union {
450 [case(TF_CT_SYSCOLOR)] int nIndex;
451 [case(TF_CT_COLORREF)] COLORREF cr;
452 };
453 } TF_DA_COLOR;
454
455 typedef [uuid(33d2fe4b-6c24-4f67-8d75-3bc1819e4126)]
456 enum {
457 TF_ATTR_INPUT = 0,
458 TF_ATTR_TARGET_CONVERTED = 1,
459 TF_ATTR_CONVERTED = 2,
460 TF_ATTR_TARGET_NOTCONVERTED = 3,
461 TF_ATTR_INPUT_ERROR = 4,
462 TF_ATTR_FIXEDCONVERTED = 5,
463 TF_ATTR_OTHER = -1
464 } TF_DA_ATTR_INFO;
465
466 typedef [uuid(1bf1c305-419b-4182-a4d2-9bfadc3f021f)]
467 struct TF_DISPLAYATTRIBUTE {
468 TF_DA_COLOR crText;
469 TF_DA_COLOR crBk;
470 TF_DA_LINESTYLE lsStyle;
471 BOOL fBoldLine;
472 TF_DA_COLOR crLine;
473 TF_DA_ATTR_INFO bAttr;
474 } TF_DISPLAYATTRIBUTE;
475
476 [
477 object,
478 uuid(70528852-2f26-4aea-8c96-215150578932),
479 pointer_default(unique)
480 ]
481 interface ITfDisplayAttributeInfo : IUnknown
482 {
483 HRESULT GetGUID([out] GUID *pguid);
484
485 HRESULT GetDescription([out] BSTR *pbstrDesc);
486
487 HRESULT GetAttributeInfo([out] TF_DISPLAYATTRIBUTE *pda);
488
489 HRESULT SetAttributeInfo([in] const TF_DISPLAYATTRIBUTE *pda);
490
491 HRESULT Reset();
492 }
493
494 [
495 object,
496 uuid(7cef04d7-cb75-4e80-a7ab-5f5bc7d332de),
497 pointer_default(unique)
498 ]
499 interface IEnumTfDisplayAttributeInfo : IUnknown
500 {
501 HRESULT Clone([out] IEnumTfDisplayAttributeInfo **ppEnum);
502
503 HRESULT Next(
504 [in] ULONG ulCount,
505 [out, size_is(ulCount), length_is(*pcFetched)] ITfDisplayAttributeInfo **rgInfo,
506 [out] ULONG *pcFetched);
507
508 HRESULT Reset();
509
510 HRESULT Skip([in] ULONG ulCount);
511 }
512
513 [
514 object,
515 local,
516 uuid(8ded7393-5db1-475c-9e71-a39111b0ff67),
517 pointer_default(unique)
518 ]
519 interface ITfDisplayAttributeMgr : IUnknown
520 {
521 HRESULT OnUpdateInfo();
522
523 HRESULT EnumDisplayAttributeInfo([out] IEnumTfDisplayAttributeInfo **ppEnum);
524
525 HRESULT GetDisplayAttributeInfo(
526 [in] REFGUID guid,
527 [out] ITfDisplayAttributeInfo **ppInfo,
528 [out] CLSID *pclsidOwner);
529
530 }
531
532 [
533 object,
534 local,
535 uuid(c3acefb5-f69d-4905-938f-fcadcf4be830),
536 pointer_default(unique)
537 ]
538 interface ITfCategoryMgr : IUnknown
539 {
540 HRESULT RegisterCategory([in] REFCLSID rclsid,
541 [in] REFGUID rcatid,
542 [in] REFGUID rguid);
543
544 HRESULT UnregisterCategory([in] REFCLSID rclsid,
545 [in] REFGUID rcatid,
546 [in] REFGUID rguid);
547
548 HRESULT EnumCategoriesInItem([in] REFGUID rguid,
549 [out] IEnumGUID **ppEnum);
550
551 HRESULT EnumItemsInCategory([in] REFGUID rcatid,
552 [out] IEnumGUID **ppEnum);
553
554 HRESULT FindClosestCategory([in] REFGUID rguid,
555 [out] GUID *pcatid,
556 [in, size_is(ulCount)] const GUID **ppcatidList,
557 [in] ULONG ulCount);
558
559 HRESULT RegisterGUIDDescription([in] REFCLSID rclsid,
560 [in] REFGUID rguid,
561 [in, size_is(cch)] const WCHAR *pchDesc,
562 [in] ULONG cch);
563
564 HRESULT UnregisterGUIDDescription([in] REFCLSID rclsid,
565 [in] REFGUID rguid);
566
567 HRESULT GetGUIDDescription([in] REFGUID rguid,
568 [out] BSTR *pbstrDesc);
569
570 HRESULT RegisterGUIDDWORD([in] REFCLSID rclsid,
571 [in] REFGUID rguid,
572 [in] DWORD dw);
573
574 HRESULT UnregisterGUIDDWORD([in] REFCLSID rclsid,
575 [in] REFGUID rguid);
576
577 HRESULT GetGUIDDWORD([in] REFGUID rguid,
578 [out] DWORD *pdw);
579
580 HRESULT RegisterGUID([in] REFGUID rguid,
581 [out] TfGuidAtom *pguidatom);
582
583 HRESULT GetGUID([in] TfGuidAtom guidatom,
584 [out] GUID *pguid);
585
586 HRESULT IsEqualTfGuidAtom([in] TfGuidAtom guidatom,
587 [in] REFGUID rguid,
588 [out] BOOL *pfEqual);
589 };
590
591 [
592 object,
593 uuid(8127d409-ccd3-4683-967a-b43d5b482bf7),
594 pointer_default(unique)
595 ]
596 interface ITfTextEditSink : IUnknown
597 {
598 HRESULT OnEndEdit(
599 [in] ITfContext *pic,
600 [in] TfEditCookie ecReadOnly,
601 [in] ITfEditRecord *pEditRecord);
602 };
603
604 [
605 object,
606 uuid(5F20AA40-B57A-4F34-96AB-3576F377CC79),
607 pointer_default(unique)
608 ]
609 interface ITfContextOwnerCompositionSink : IUnknown
610 {
611 HRESULT OnStartComposition(
612 [in] ITfCompositionView *pComposition,
613 [out] BOOL *pfOk);
614
615 HRESULT OnUpdateComposition(
616 [in] ITfCompositionView *pComposition,
617 [in] ITfRange *pRangeNew);
618
619 HRESULT OnEndComposition(
620 [in] ITfCompositionView *pComposition);
621 };
622
623 [
624 object,
625 uuid(3d61bf11-ac5f-42c8-a4cb-931bcc28c744),
626 pointer_default(unique)
627 ]
628 interface IEnumTfLanguageProfiles : IUnknown
629 {
630 HRESULT Clone(
631 [out] IEnumTfLanguageProfiles **ppEnum);
632
633 HRESULT Next(
634 [in] ULONG ulCount,
635 [out, size_is(ulCount), length_is(*pcFetch)] TF_LANGUAGEPROFILE *pProfile,
636 [out] ULONG *pcFetch);
637
638 HRESULT Reset();
639
640 HRESULT Skip(
641 [in] ULONG ulCount);
642 };
643
644 [
645 object,
646 local,
647 uuid(aa80e7f7-2021-11d2-93e0-0060b067b86e),
648 pointer_default(unique)
649 ]
650 interface ITfTextInputProcessor : IUnknown
651 {
652 HRESULT Activate(
653 [in] ITfThreadMgr *ptim,
654 [in] TfClientId tid);
655
656 HRESULT Deactivate();
657 };
658
659 [
660 object,
661 uuid(aa80e80e-2021-11d2-93e0-0060b067b86e),
662 pointer_default(unique)
663 ]
664 interface ITfThreadMgrEventSink : IUnknown
665 {
666 HRESULT OnInitDocumentMgr(
667 [in] ITfDocumentMgr *pdim);
668
669 HRESULT OnUninitDocumentMgr(
670 [in] ITfDocumentMgr *pdim);
671
672 HRESULT OnSetFocus(
673 [in] ITfDocumentMgr *pdimFocus,
674 [in] ITfDocumentMgr *pdimPrevFocus);
675
676 HRESULT OnPushContext(
677 [in] ITfContext *pic);
678
679 HRESULT OnPopContext(
680 [in] ITfContext *pic);
681 };
682
683 [
684 object,
685 local,
686 uuid(aa80e7f0-2021-11d2-93e0-0060b067b86e),
687 pointer_default(unique)
688 ]
689 interface ITfKeystrokeMgr : IUnknown
690 {
691 HRESULT AdviseKeyEventSink(
692 [in] TfClientId tid,
693 [in] ITfKeyEventSink *pSink,
694 [in] BOOL fForeground);
695
696 HRESULT UnadviseKeyEventSink(
697 [in] TfClientId tid);
698
699 HRESULT GetForeground(
700 [out] CLSID *pclsid);
701
702 HRESULT TestKeyDown(
703 [in] WPARAM wParam,
704 [in] LPARAM lParam,
705 [out] BOOL *pfEaten);
706
707 HRESULT TestKeyUp(
708 [in] WPARAM wParam,
709 [in] LPARAM lParam,
710 [out] BOOL *pfEaten);
711
712 HRESULT KeyDown(
713 [in] WPARAM wParam,
714 [in] LPARAM lParam,
715 [out] BOOL *pfEaten);
716
717 HRESULT KeyUp(
718 [in] WPARAM wParam,
719 [in] LPARAM lParam,
720 [out] BOOL *pfEaten);
721
722 HRESULT GetPreservedKey(
723 [in] ITfContext *pic,
724 [in] const TF_PRESERVEDKEY *pprekey,
725 [out] GUID *pguid);
726
727 HRESULT IsPreservedKey(
728 [in] REFGUID rguid,
729 [in] const TF_PRESERVEDKEY *pprekey,
730 [out] BOOL *pfRegistered);
731
732 HRESULT PreserveKey(
733 [in] TfClientId tid,
734 [in] REFGUID rguid,
735 [in] const TF_PRESERVEDKEY *prekey,
736 [in, size_is(cchDesc)] const WCHAR *pchDesc,
737 [in] ULONG cchDesc);
738
739 HRESULT UnpreserveKey(
740 [in] REFGUID rguid,
741 [in] const TF_PRESERVEDKEY *pprekey);
742
743 HRESULT SetPreservedKeyDescription(
744 [in] REFGUID rguid,
745 [in, size_is(cchDesc)] const WCHAR *pchDesc,
746 [in] ULONG cchDesc);
747
748 HRESULT GetPreservedKeyDescription(
749 [in] REFGUID rguid,
750 [out] BSTR *pbstrDesc);
751
752 HRESULT SimulatePreservedKey(
753 [in] ITfContext *pic,
754 [in] REFGUID rguid,
755 [out] BOOL *pfEaten);
756 };
757
758 [
759 object,
760 local,
761 uuid(aa80e7f5-2021-11d2-93e0-0060b067b86e),
762 pointer_default(unique)
763 ]
764 interface ITfKeyEventSink : IUnknown
765 {
766 HRESULT OnSetFocus(
767 [in] BOOL fForeground);
768
769 HRESULT OnTestKeyDown(
770 [in] ITfContext *pic,
771 [in] WPARAM wParam,
772 [in] LPARAM lParam,
773 [out] BOOL *pfEaten);
774
775 HRESULT OnTestKeyUp(
776 [in] ITfContext *pic,
777 [in] WPARAM wParam,
778 [in] LPARAM lParam,
779 [out] BOOL *pfEaten);
780
781 HRESULT OnKeyDown(
782 [in] ITfContext *pic,
783 [in] WPARAM wParam,
784 [in] LPARAM lParam,
785 [out] BOOL *pfEaten);
786
787 HRESULT OnKeyUp(
788 [in] ITfContext *pic,
789 [in] WPARAM wParam,
790 [in] LPARAM lParam,
791 [out] BOOL *pfEaten);
792
793 HRESULT OnPreservedKey(
794 [in] ITfContext *pic,
795 [in] REFGUID rguid,
796 [out] BOOL *pfEaten);
797 };
798
799 [
800 object,
801 local,
802 uuid(8f1b8ad8-0b6b-4874-90c5-bd76011e8f7c),
803 pointer_default(unique)
804 ]
805 interface ITfMessagePump : IUnknown
806 {
807 HRESULT PeekMessageA(
808 [out] LPMSG pMsg,
809 [in] HWND hwnd,
810 [in] UINT wMsgFilterMin,
811 [in] UINT wMsgFilterMax,
812 [in] UINT wRemoveMsg,
813 [out] BOOL *pfResult);
814
815 HRESULT GetMessageA(
816 [out] LPMSG pMsg,
817 [in] HWND hwnd,
818 [in] UINT wMsgFilterMin,
819 [in] UINT wMsgFilterMax,
820 [out] BOOL *pfResult);
821
822 HRESULT PeekMessageW(
823 [out] LPMSG pMsg,
824 [in] HWND hwnd,
825 [in] UINT wMsgFilterMin,
826 [in] UINT wMsgFilterMax,
827 [in] UINT wRemoveMsg,
828 [out] BOOL *pfResult);
829
830 HRESULT GetMessageW(
831 [out] LPMSG pMsg,
832 [in] HWND hwnd,
833 [in] UINT wMsgFilterMin,
834 [in] UINT wMsgFilterMax,
835 [out] BOOL *pfResult);
836 };
837
838 [
839 object,
840 local,
841 uuid(d60a7b49-1b9f-4be2-b702-47e9dc05dec3),
842 pointer_default(unique)
843 ]
844 interface ITfClientId : IUnknown
845 {
846 HRESULT GetClientId(
847 [in] REFCLSID rclsid,
848 [out] TfClientId *ptid);
849 };
850
851 [
852 object,
853 uuid(43c9fe15-f494-4c17-9de2-b8a4ac350aa8),
854 pointer_default(unique)
855 ]
856 interface ITfLanguageProfileNotifySink : IUnknown
857 {
858 HRESULT OnLanguageChange(
859 [in] LANGID langid,
860 [out] BOOL *pfAccept);
861
862 HRESULT OnLanguageChanged();
863 }
864
865 [
866 object,
867 uuid(aa80e803-2021-11d2-93e0-0060b067b86e),
868 pointer_default(unique)
869 ]
870 interface ITfEditSession : IUnknown
871 {
872 HRESULT DoEditSession(
873 [in] TfEditCookie ec);
874 }
875
876 [
877 object,
878 uuid(aa80e7ff-2021-11d2-93e0-0060b067b86e),
879 pointer_default(unique)
880 ]
881 interface ITfRange : IUnknown
882 {
883 const WCHAR TF_CHAR_EMBEDDED = TS_CHAR_EMBEDDED;
884
885 typedef [uuid(cf610f06-2882-46f6-abe5-298568b664c4)] enum { TF_GRAVITY_BACKWARD = 0, TF_GRAVITY_FORWARD = 1 } TfGravity;
886
887 typedef [uuid(1e512533-bbdc-4530-9a8e-a1dc0af67468)] enum { TF_SD_BACKWARD = 0, TF_SD_FORWARD = 1 } TfShiftDir;
888
889 const DWORD TF_HF_OBJECT = 1;
890 const DWORD TF_TF_MOVESTART = 1;
891 const DWORD TF_TF_IGNOREEND = 2;
892 const DWORD TF_ST_CORRECTION = 1;
893 const DWORD TF_IE_CORRECTION = 1;
894
895 typedef [uuid(49930d51-7d93-448c-a48c-fea5dac192b1)] struct TF_HALTCOND
896 {
897 ITfRange *pHaltRange;
898 TfAnchor aHaltPos;
899 DWORD dwFlags;
900 } TF_HALTCOND;
901
902 HRESULT GetText(
903 [in] TfEditCookie ec,
904 [in] DWORD dwFlags,
905 [out, size_is(cchMax), length_is(*pcch)] WCHAR *pchText,
906 [in] ULONG cchMax,
907 [out] ULONG *pcch);
908
909 HRESULT SetText(
910 [in] TfEditCookie ec,
911 [in] DWORD dwFlags,
912 [in, size_is(cch), unique] const WCHAR *pchText,
913 [in] LONG cch);
914
915 HRESULT GetFormattedText(
916 [in] TfEditCookie ec,
917 [out] IDataObject **ppDataObject);
918
919 HRESULT GetEmbedded(
920 [in] TfEditCookie ec,
921 [in] REFGUID rguidService,
922 [in] REFIID riid,
923 [out, iid_is(riid)] IUnknown **ppunk);
924
925 HRESULT InsertEmbedded(
926 [in] TfEditCookie ec,
927 [in] DWORD dwFlags,
928 [in] IDataObject *pDataObject);
929
930 HRESULT ShiftStart(
931 [in] TfEditCookie ec,
932 [in] LONG cchReq,
933 [out] LONG *pcch,
934 [in, unique] const TF_HALTCOND *pHalt);
935
936 HRESULT ShiftEnd(
937 [in] TfEditCookie ec,
938 [in] LONG cchReq,
939 [out] LONG *pcch,
940 [in, unique] const TF_HALTCOND *pHalt);
941
942 HRESULT ShiftStartToRange(
943 [in] TfEditCookie ec,
944 [in] ITfRange *pRange,
945 [in] TfAnchor aPos);
946
947 HRESULT ShiftEndToRange(
948 [in] TfEditCookie ec,
949 [in] ITfRange *pRange,
950 [in] TfAnchor aPos);
951
952 HRESULT ShiftStartRegion(
953 [in] TfEditCookie ec,
954 [in] TfShiftDir dir,
955 [out] BOOL *pfNoRegion);
956
957 HRESULT ShiftEndRegion(
958 [in] TfEditCookie ec,
959 [in] TfShiftDir dir,
960 [out] BOOL *pfNoRegion);
961
962 HRESULT IsEmpty(
963 [in] TfEditCookie ec,
964 [out] BOOL *pfEmpty);
965
966 HRESULT Collapse(
967 [in] TfEditCookie ec,
968 [in] TfAnchor aPos);
969
970 HRESULT IsEqualStart(
971 [in] TfEditCookie ec,
972 [in] ITfRange *pWith,
973 [in] TfAnchor aPos,
974 [out] BOOL *pfEqual);
975
976 HRESULT IsEqualEnd(
977 [in] TfEditCookie ec,
978 [in] ITfRange *pWith,
979 [in] TfAnchor aPos,
980 [out] BOOL *pfEqual);
981
982 HRESULT CompareStart(
983 [in] TfEditCookie ec,
984 [in] ITfRange *pWith,
985 [in] TfAnchor aPos,
986 [out] LONG *plResult);
987
988 HRESULT CompareEnd(
989 [in] TfEditCookie ec,
990 [in] ITfRange *pWith,
991 [in] TfAnchor aPos,
992 [out] LONG *plResult);
993
994 HRESULT AdjustForInsert(
995 [in] TfEditCookie ec,
996 [in] ULONG cchInsert,
997 [out] BOOL *pfInsertOk);
998
999 HRESULT GetGravity(
1000 [out] TfGravity *pgStart,
1001 [out] TfGravity *pgEnd);
1002
1003 HRESULT SetGravity(
1004 [in] TfEditCookie ec,
1005 [in] TfGravity gStart,
1006 [in] TfGravity gEnd);
1007
1008 HRESULT Clone(
1009 [out] ITfRange **ppClone);
1010
1011 HRESULT GetContext(
1012 [out] ITfContext **ppContext);
1013 };
1014
1015 [
1016 object,
1017 uuid(057a6296-029b-4154-b79a-0d461d4ea94c),
1018 pointer_default(unique)
1019 ]
1020 interface ITfRangeACP : ITfRange
1021 {
1022 HRESULT GetExtent([out] LONG *pacpAnchor,
1023 [out] LONG *pcch);
1024
1025 HRESULT SetExtent([in] LONG acpAnchor,
1026 [in] LONG cch);
1027 }
1028
1029 [
1030 object,
1031 uuid(55ce16ba-3014-41c1-9ceb-fade1446ac6c),
1032 pointer_default(unique)
1033 ]
1034 interface ITfInsertAtSelection : IUnknown
1035 {
1036 const DWORD TF_IAS_NOQUERY = 0x1;
1037 const DWORD TF_IAS_QUERYONLY = 0x2;
1038 const DWORD TF_IAS_NO_DEFAULT_COMPOSITION = 0x80000000;
1039
1040 HRESULT InsertTextAtSelection(
1041 [in] TfEditCookie ec,
1042 [in] DWORD dwFlags,
1043 [in, size_is(cch)] const WCHAR *pchText,
1044 [in] LONG cch,
1045 [out] ITfRange **ppRange);
1046
1047 HRESULT InsertEmbeddedAtSelection(
1048 [in] TfEditCookie ec,
1049 [in] DWORD dwFlags,
1050 [in] IDataObject *pDataObject,
1051 [out] ITfRange **ppRange);
1052 };
1053
1054 [
1055 object,
1056 uuid(6834b120-88cb-11d2-bf45-00105a2799b5),
1057 pointer_default(unique)
1058 ]
1059 interface ITfPropertyStore : IUnknown
1060 {
1061 const DWORD TF_TU_CORRECTION = 0x1;
1062
1063 HRESULT GetType([out] GUID *pguid);
1064
1065 HRESULT GetDataType([out] DWORD *pdwReserved);
1066
1067 HRESULT GetData([out] VARIANT *pvarValue);
1068
1069 HRESULT OnTextUpdated(
1070 [in] DWORD dwFlags,
1071 [in] ITfRange *pRangeNew,
1072 [out] BOOL *pfAccept);
1073
1074 HRESULT Shrink(
1075 [in] ITfRange *pRangeNew,
1076 [out] BOOL *pfFree);
1077
1078 HRESULT Divide(
1079 [in] ITfRange *pRangeThis,
1080 [in] ITfRange *pRangeNew,
1081 [out] ITfPropertyStore **ppPropStore);
1082
1083 HRESULT Clone(
1084 [out] ITfPropertyStore **pPropStore);
1085
1086 HRESULT GetPropertyRangeCreator(
1087 [out] CLSID *pclsid);
1088
1089 HRESULT Serialize(
1090 [in] IStream *pStream,
1091 [out] ULONG *pcb);
1092 }
1093
1094 [
1095 object,
1096 uuid(f99d3f40-8e32-11d2-bf46-00105a2799b5),
1097 pointer_default(unique)
1098 ]
1099 interface IEnumTfRanges : IUnknown
1100 {
1101 HRESULT Clone([out] IEnumTfRanges **ppEnum);
1102
1103 HRESULT Next(
1104 [in] ULONG ulCount,
1105 [out, size_is(ulCount), length_is(*pcFetched)] ITfRange **ppRange,
1106 [out] ULONG *pcFetched);
1107
1108 HRESULT Reset();
1109
1110 HRESULT Skip(ULONG ulCount);
1111 }
1112
1113 [
1114 object,
1115 uuid(5efd22Ba-7838-46cb-88e2-cadb14124f8f),
1116 pointer_default(unique)
1117 ]
1118 interface IEnumITfCompositionView : IUnknown
1119 {
1120 HRESULT Clone([out] IEnumITfCompositionView **ppEnum);
1121
1122 HRESULT Next(
1123 [in] ULONG ulCount,
1124 [out, size_is(ulCount), length_is(*pcFetched)] ITfCompositionView **rgCompositionView,
1125 [out] ULONG *pcFetched);
1126
1127 HRESULT Reset();
1128
1129 HRESULT Skip([in] ULONG ulCount);
1130 }
1131
1132 [
1133 object,
1134 uuid(20168d64-5a8f-4a5a-b7bd-cfa29f4D0fd9),
1135 pointer_default(unique)
1136 ]
1137 interface ITfComposition : IUnknown
1138 {
1139 HRESULT GetRange([out] ITfRange **ppRange);
1140
1141 HRESULT ShiftStart(
1142 [in] TfEditCookie ecWrite,
1143 [in] ITfRange *pNewStart);
1144
1145 HRESULT ShiftEnd(
1146 [in] TfEditCookie ecWrite,
1147 [in] ITfRange *pNewEnd);
1148
1149 HRESULT EndComposition([in] TfEditCookie ecWrite);
1150 }
1151
1152 [
1153 object,
1154 uuid(a781718c-579a-4b15-a280-32b8577acc5e),
1155 pointer_default(unique)
1156 ]
1157 interface ITfCompositionSink : IUnknown
1158 {
1159 HRESULT OnCompositionTerminated(
1160 [in] TfEditCookie ecWrite,
1161 [in] ITfComposition *pComposition);
1162 }
1163
1164 [
1165 object,
1166 uuid(d40C8aae-aC92-4fc7-9a11-0ee0e23aa39b),
1167 pointer_default(unique)
1168 ]
1169 interface ITfContextComposition : IUnknown
1170 {
1171 HRESULT StartComposition(
1172 [in] TfEditCookie ecWrite,
1173 [in] ITfRange *pCompositionRange,
1174 [in] ITfCompositionSink *pSink,
1175 [out] ITfComposition **ppComposition);
1176
1177 HRESULT EnumCompositions([out] IEnumITfCompositionView **ppEnum);
1178
1179 HRESULT FindComposition(
1180 [in] TfEditCookie ecRead,
1181 [in] ITfRange *pTestRange,
1182 [out] IEnumITfCompositionView **ppEnum);
1183
1184 HRESULT TakeOwnership(
1185 [in] TfEditCookie ecWrite,
1186 [in] ITfCompositionView *pComposition,
1187 [in] ITfCompositionSink *pSink,
1188 [out] ITfComposition **ppComposition);
1189 }
1190
1191 [
1192 object,
1193 uuid(86462810-593b-4916-9764-19c08e9ce110),
1194 pointer_default(unique)
1195 ]
1196 interface ITfContextOwnerCompositionServices : ITfContextComposition
1197 {
1198 HRESULT TerminateComposition([in] ITfCompositionView *pComposition);
1199 }
1200
1201 [
1202 object,
1203 uuid(17d49a3d-f8b8-4b2f-b254-52319dd64c53),
1204 pointer_default(unique)
1205 ]
1206 interface ITfReadOnlyProperty : IUnknown
1207 {
1208 HRESULT GetType([out] GUID *pguid);
1209
1210 HRESULT EnumRanges(
1211 [in] TfEditCookie ec,
1212 [out] IEnumTfRanges **ppEnum,
1213 [in] ITfRange *pTargetRange);
1214
1215 HRESULT GetValue(
1216 [in] TfEditCookie ec,
1217 [in] ITfRange *pRange,
1218 [out] VARIANT *pvarValue);
1219
1220 HRESULT GetContext([out] ITfContext **ppContext);
1221 }
1222
1223 [
1224 object,
1225 uuid(e2449660-9542-11d2-bf46-00105a2799b5),
1226 pointer_default(unique)
1227 ]
1228 interface ITfProperty : ITfReadOnlyProperty
1229 {
1230 HRESULT FindRange(
1231 [in] TfEditCookie ec,
1232 [in] ITfRange *pRange,
1233 [out] ITfRange **ppRange,
1234 [in] TfAnchor aPos);
1235
1236 HRESULT SetValueStore(
1237 [in] TfEditCookie ec,
1238 [in] ITfRange *pRange,
1239 [in] ITfPropertyStore *pPropStore);
1240
1241 HRESULT SetValue(
1242 [in] TfEditCookie ec,
1243 [in] ITfRange *pRange,
1244 [in] const VARIANT *pvarValue);
1245
1246 HRESULT Clear(
1247 [in] TfEditCookie ec,
1248 [in] ITfRange *pRange);
1249 }
1250
1251 [
1252 object,
1253 uuid(bb08f7a9-607a-4384-8623-056892b64371),
1254 pointer_default(unique)
1255 ]
1256 interface ITfCompartment : IUnknown
1257 {
1258 HRESULT SetValue(
1259 [in] TfClientId tid,
1260 [in] const VARIANT *pvarValue);
1261
1262 HRESULT GetValue(
1263 [out] VARIANT *pvarValue);
1264 };
1265
1266 [
1267 object,
1268 uuid(7dcf57ac-18ad-438b-824d-979bffb74b7c),
1269 pointer_default(unique)
1270 ]
1271 interface ITfCompartmentMgr : IUnknown
1272 {
1273 HRESULT GetCompartment(
1274 [in] REFGUID rguid,
1275 [out] ITfCompartment **ppcomp);
1276
1277 HRESULT ClearCompartment(
1278 [in] TfClientId tid,
1279 [in] REFGUID rguid);
1280
1281 HRESULT EnumCompartments(
1282 [out] IEnumGUID **ppEnum);
1283 };
1284
1285 [
1286 object,
1287 uuid(743abd5f-f26d-48df-8cc5-238492419b64),
1288 pointer_default(unique)
1289 ]
1290 interface ITfCompartmentEventSink : IUnknown
1291 {
1292 HRESULT OnChange(
1293 [in] REFGUID rguid);
1294 }
1295
1296 [
1297 object,
1298 uuid(8f1a7ea6-1654-4502-a86e-b2902344d507),
1299 pointer_default(unique)
1300 ]
1301 interface IEnumTfContexts : IUnknown
1302 {
1303 HRESULT Clone(
1304 [out] IEnumTfContexts **ppEnum);
1305
1306 HRESULT Next(
1307 [in] ULONG ulCount,
1308 [out, size_is(ulCount), length_is(*pcFetched)] ITfContext **rgContext,
1309 [out] ULONG *pcFetched);
1310
1311 HRESULT Reset();
1312
1313 HRESULT Skip(
1314 [in] ULONG ulCount);
1315 };
1316
1317 [
1318 object,
1319 uuid(aa80e808-2021-11d2-93e0-0060b067b86e),
1320 pointer_default(unique)
1321 ]
1322 interface IEnumTfDocumentMgrs : IUnknown
1323 {
1324 HRESULT Clone(
1325 [out] IEnumTfDocumentMgrs **ppEnum);
1326
1327 HRESULT Next(
1328 [in] ULONG ulCount,
1329 [out, size_is(ulCount), length_is(*pcFetched)] ITfDocumentMgr **rgDocumentMgr,
1330 [out] ULONG *pcFetched);
1331
1332 HRESULT Reset();
1333
1334 HRESULT Skip(
1335 [in] ULONG ulCount);
1336 };
1337
1338 [
1339 object,
1340 uuid(73131f9c-56a9-49dd-b0ee-d046633f7528),
1341 pointer_default(unique)
1342 ]
1343 interface ITfSourceSingle : IUnknown
1344 {
1345 HRESULT AdviseSingleSink(
1346 [in] TfClientId tid,
1347 [in] REFIID riid,
1348 [in, iid_is(riid)] IUnknown *punk);
1349
1350 HRESULT UnadviseSingleSink(
1351 [in] TfClientId tid,
1352 [in] REFIID riid);
1353 };
1354
1355 [
1356 object,
1357 local,
1358 uuid(c0f1db0c-3a20-405c-a303-96b6010a885f),
1359 pointer_default(unique)
1360 ]
1361 interface ITfThreadFocusSink : IUnknown
1362 {
1363 HRESULT OnSetThreadFocus();
1364
1365 HRESULT OnKillThreadFocus();
1366 };