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