01e944cf5df7d865be86cea721baba708ccf56c4
[reactos.git] / sdk / 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
26 cpp_quote("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
27 cpp_quote("#define TF_E_DISCONNECTED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0504)")
28 cpp_quote("#define TF_E_ALREADY_EXISTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)")
29 cpp_quote("#define TF_E_NOLOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)")
30
31 cpp_quote("HRESULT WINAPI TF_CreateThreadMgr(ITfThreadMgr **pptim);")
32 cpp_quote("HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim);")
33 cpp_quote("HRESULT WINAPI TF_CreateInputProcessorProfiles(ITfInputProcessorProfiles **ppipr);")
34 cpp_quote("HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pppbm);")
35 cpp_quote("HRESULT WINAPI TF_CreateLangBarItemMgr(ITfLangBarItemMgr **pplbim);")
36 cpp_quote("HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist(void);")
37
38 cpp_quote("EXTERN_C const GUID GUID_PROP_TEXTOWNER;")
39 cpp_quote("DEFINE_GUID(GUID_PROP_ATTRIBUTE,0x34b45670,0x7526,0x11d2,0xa1,0x47,0x00,0x10,0x5a,0x27,0x99,0xb5);")
40 cpp_quote("EXTERN_C const GUID GUID_PROP_LANGID;")
41 cpp_quote("EXTERN_C const GUID GUID_PROP_READING;")
42 cpp_quote("EXTERN_C const GUID GUID_PROP_COMPOSING;")
43
44 cpp_quote("EXTERN_C const CLSID CLSID_TF_ThreadMgr;")
45 cpp_quote("EXTERN_C const CLSID CLSID_TF_InputProcessorProfiles;")
46 cpp_quote("EXTERN_C const CLSID CLSID_TF_LangBarMgr;")
47 cpp_quote("EXTERN_C const CLSID CLSID_TF_CategoryMgr;")
48 cpp_quote("EXTERN_C const CLSID CLSID_TF_DisplayAttributeMgr;")
49
50 /* GUIDs for Compartments */
51 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_DISABLED;")
52 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_OPENCLOSE;")
53 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_HANDWRITING_OPENCLOSE;")
54 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_DISABLED;")
55 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_OPENCLOSE;")
56 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_GLOBALSTATE;")
57 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_PERSISTMENUENABLED;")
58 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_EMPTYCONTEXT;")
59 cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_TIPUISTATUS;")
60
61 /* GUIDs for Categories */
62 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD;")
63 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH;")
64 cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING;")
65 cpp_quote("EXTERN_C const GUID GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER;")
66
67 typedef [uuid(7213778c-7bb0-4270-b050-6189ee594e97)] DWORD TfEditCookie;
68 typedef [uuid(de403c21-89fd-4f85-8b87-64584d063fbc)] DWORD TfClientId;
69 typedef [uuid(88a9c478-f3ec-4763-8345-cd9250443f8d)] DWORD TfGuidAtom;
70
71 cpp_quote("#define TF_MOD_ALT 0x0001")
72 cpp_quote("#define TF_MOD_CONTROL 0x0002")
73 cpp_quote("#define TF_MOD_SHIFT 0x0004")
74 cpp_quote("#define TF_MOD_RALT 0x0008")
75 cpp_quote("#define TF_MOD_RCONTROL 0x0010")
76 cpp_quote("#define TF_MOD_RSHIFT 0x0020")
77 cpp_quote("#define TF_MOD_LALT 0x0040")
78 cpp_quote("#define TF_MOD_LCONTROL 0x0080")
79 cpp_quote("#define TF_MOD_LSHIFT 0x0100")
80 cpp_quote("#define TF_MOD_ON_KEYUP 0x0200")
81 cpp_quote("#define TF_MOD_IGNORE_ALL_MODIFIER 0x0400")
82
83 cpp_quote("#define TF_PROFILETYPE_INPUTPROCESSOR 0x0001")
84 cpp_quote("#define TF_PROFILETYPE_KEYBOARDLAYOUT 0x0002")
85
86 cpp_quote("#define TF_IPSINK_FLAG_ACTIVE 0x0001")
87
88 interface ITfDocumentMgr;
89 interface ITfContext;
90 interface IEnumTfDocumentMgrs;
91 interface IEnumTfContexts;
92 interface ITfCompartmentMgr;
93 interface ITfEditSession;
94 interface ITfRange;
95 interface ITfProperty;
96 interface ITfReadOnlyProperty;
97 interface IEnumTfLanguageProfiles;
98 interface ITfCompositionView;
99 interface ITfKeyEventSink;
100 interface ITfPersistentPropertyLoaderACP;
101 interface ITfRangeACP;
102
103 cpp_quote("#if 0")
104 typedef [uuid(4f5d560f-5ab5-4dde-8c4d-404592857ab0)] UINT_PTR HKL;
105 cpp_quote("#endif")
106
107 typedef [uuid(e26d9e1d-691e-4f29-90d7-338dcf1f8cef)] struct TF_PERSISTENT_PROPERTY_HEADER_ACP
108 {
109 GUID guidType;
110 LONG ichStart;
111 LONG cch;
112 ULONG cb;
113 DWORD dwPrivate;
114 CLSID clsidTIP;
115 } TF_PERSISTENT_PROPERTY_HEADER_ACP;
116
117 typedef [uuid(e1b5808d-1e46-4c19-84dc-68c5f5978cc8)] struct TF_LANGUAGEPROFILE
118 {
119 CLSID clsid;
120 LANGID langid;
121 GUID catid;
122 BOOL fActive;
123 GUID guidProfile;
124 } TF_LANGUAGEPROFILE;
125
126 typedef [uuid(77c12f95-b783-450d-879f-1cd2362c6521)] struct TF_PRESERVEDKEY
127 {
128 UINT uVKey;
129 UINT uModifiers;
130 } TF_PRESERVEDKEY;
131
132 typedef [uuid(5a886226-ae9a-489b-b991-2b1e25ee59a9)] enum { TF_ANCHOR_START = 0, TF_ANCHOR_END = 1 } TfAnchor;
133
134 [
135 object,
136 uuid(101d6610-0990-11d3-8df0-00105a2799b5),
137 pointer_default(unique)
138 ]
139 interface ITfFunctionProvider : IUnknown
140 {
141 HRESULT GetType(
142 [out] GUID *guid);
143
144 HRESULT GetDescription(
145 [out] BSTR *desc);
146
147 HRESULT GetFunction(
148 [in] REFGUID guid,
149 [in] REFIID riid,
150 [out, iid_is(riid)] IUnknown **func);
151 }
152
153 [
154 object,
155 uuid(e4b24db0-0990-11d3-8df0-00105a2799b5),
156 pointer_default(unique)
157 ]
158 interface IEnumTfFunctionProviders : IUnknown
159 {
160 HRESULT Clone(
161 [out] IEnumTfFunctionProviders **ret);
162
163 HRESULT Next(
164 [in] ULONG count,
165 [out, size_is(count), length_is(*fetched)] ITfFunctionProvider **prov,
166 [out] ULONG *fetched);
167
168 HRESULT Reset();
169
170 HRESULT Skip(
171 [in] ULONG count);
172 }
173
174 [
175 object,
176 uuid(aa80e801-2021-11d2-93e0-0060b067b86e),
177 pointer_default(unique)
178 ]
179 interface ITfThreadMgr: IUnknown
180 {
181 HRESULT Activate(
182 [out] TfClientId *ptid);
183
184 HRESULT Deactivate();
185
186 HRESULT CreateDocumentMgr(
187 [out] ITfDocumentMgr **ppdim);
188
189 HRESULT EnumDocumentMgrs(
190 [out] IEnumTfDocumentMgrs **ppEnum);
191
192 HRESULT GetFocus(
193 [out] ITfDocumentMgr **ppdimFocus);
194
195 HRESULT SetFocus(
196 [in] ITfDocumentMgr *pdimFocus);
197
198 HRESULT AssociateFocus(
199 [in] HWND hwnd,
200 [in, unique] ITfDocumentMgr *pdimNew,
201 [out] ITfDocumentMgr **ppdimPrev);
202
203 HRESULT IsThreadFocus(
204 [out] BOOL *pfThreadFocus);
205
206 HRESULT GetFunctionProvider(
207 [in] REFCLSID clsid,
208 [out] ITfFunctionProvider **ppFuncProv);
209
210 HRESULT EnumFunctionProviders(
211 [out] IEnumTfFunctionProviders **ppEnum);
212
213 HRESULT GetGlobalCompartment(
214 [out] ITfCompartmentMgr **ppCompMgr);
215 }
216
217 [
218 object,
219 uuid(3e90ade3-7594-4cb0-bb58-69628f5f458c),
220 pointer_default(unique)
221 ]
222 interface ITfThreadMgrEx : ITfThreadMgr
223 {
224 HRESULT ActivateEx(
225 [out] TfClientId *id,
226 [in] DWORD flags);
227 HRESULT GetActiveFlags(
228 [out] DWORD *flags);
229 }
230
231 [
232 object,
233 uuid(d7540241-f9a1-4364-befc-dbcd2c4395b7),
234 pointer_default(unique)
235 ]
236 interface ITfCompositionView : IUnknown
237 {
238 HRESULT GetOwnerClsid([out] CLSID *pclsid);
239
240 HRESULT GetRange([out] ITfRange **ppRange);
241 }
242
243 [
244 object,
245 uuid(aa80e7f4-2021-11d2-93e0-0060b067b86e),
246 pointer_default(unique)
247 ]
248 interface ITfDocumentMgr: IUnknown
249 {
250 HRESULT CreateContext(
251 [in] TfClientId tidOwner,
252 [in] DWORD dwFlags,
253 [in, unique] IUnknown *punk,
254 [out] ITfContext **ppic,
255 [out] TfEditCookie *pecTextStore);
256
257 HRESULT Push(
258 [in] ITfContext *pic);
259
260 const DWORD TF_POPF_ALL = 0x0001;
261
262 HRESULT Pop(
263 [in] DWORD dwFlags);
264
265 HRESULT GetTop(
266 [out] ITfContext **ppic);
267
268 HRESULT GetBase(
269 [out] ITfContext **ppic);
270
271 HRESULT EnumContexts(
272 [out] IEnumTfContexts **ppEnum);
273 }
274
275 [
276 object,
277 uuid(2433bf8e-0f9b-435c-ba2c-180611978c30),
278 pointer_default(unique)
279 ]
280 interface ITfContextView : IUnknown
281 {
282 HRESULT GetRangeFromPoint(
283 [in] TfEditCookie cookie,
284 [in] const POINT *pt,
285 [in] DWORD flags,
286 [out] ITfRange **range);
287
288 HRESULT GetTextExt(
289 [in] TfEditCookie cookie,
290 [in] ITfRange *range,
291 [out] RECT *rect,
292 [out] BOOL *clipped);
293
294 HRESULT GetScreenExt(
295 [out] RECT *rect);
296
297 HRESULT GetWnd(
298 [out] HWND *hwnd);
299 }
300
301 [
302 object,
303 uuid(f0c0f8dd-cf38-44e1-bb0f-68cf0d551c78),
304 pointer_default(unique)
305 ]
306 interface IEnumTfContextViews : IUnknown
307 {
308 HRESULT Clone(
309 [out] IEnumTfContextViews **ret);
310
311 HRESULT Next(
312 [in] ULONG count,
313 [out, size_is(count), length_is(*fetched)] ITfContextView **views,
314 [out] ULONG *fetched);
315
316 HRESULT Reset();
317
318 HRESULT Skip(
319 [in] ULONG count);
320 }
321
322 [
323 object,
324 uuid(19188cb0-aca9-11d2-afc5-00105a2799b5),
325 pointer_default(unique)
326 ]
327 interface IEnumTfProperties : IUnknown
328 {
329 HRESULT Clone(
330 [out] IEnumTfProperties **ret);
331
332 HRESULT Next(
333 [in] ULONG count,
334 [out, size_is(count), length_is(*fetched)] ITfProperty **props,
335 [out] ULONG *fetched);
336
337 HRESULT Reset();
338
339 HRESULT Skip(
340 [in] ULONG count);
341 }
342
343 [
344 object,
345 uuid(463a506d-6992-49d2-9b88-93d55e70bb16),
346 pointer_default(unique)
347 ]
348 interface ITfRangeBackup : IUnknown
349 {
350 HRESULT Restore(
351 [in] TfEditCookie cookie,
352 [in] ITfRange *range);
353 }
354
355 [
356 object,
357 uuid(aa80e901-2021-11d2-93e0-0060b067b86e),
358 pointer_default(unique)
359 ]
360 interface ITextStoreACPServices : IUnknown
361 {
362 HRESULT Serialize(
363 [in] ITfProperty *prop,
364 [in] ITfRange *range,
365 [out] TF_PERSISTENT_PROPERTY_HEADER_ACP *header,
366 [in] IStream *stream);
367
368 HRESULT Unserialize(
369 [in] ITfProperty *prop,
370 [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *header,
371 [in] IStream *stream,
372 [in] ITfPersistentPropertyLoaderACP *loader);
373
374 HRESULT ForceLoadProperty(
375 [in] ITfProperty *prop);
376
377 HRESULT CreateRange(
378 [in] LONG start,
379 [in] LONG end,
380 [out] ITfRangeACP **range);
381 }
382
383 [
384 object,
385 uuid(aa80e7fd-2021-11d2-93e0-0060b067b86e),
386 pointer_default(unique)
387 ]
388 interface ITfContext : IUnknown
389 {
390 const DWORD TF_ES_ASYNCDONTCARE = 0x0;
391 const DWORD TF_ES_SYNC = 0x1;
392 const DWORD TF_ES_READ = 0x2;
393 const DWORD TF_ES_READWRITE = 0x6;
394 const DWORD TF_ES_ASYNC = 0x8;
395
396 HRESULT RequestEditSession(
397 [in] TfClientId tid,
398 [in] ITfEditSession *pes,
399 [in] DWORD dwFlags,
400 [out] HRESULT *phrSession);
401
402 HRESULT InWriteSession(
403 [in] TfClientId tid,
404 [out] BOOL *pfWriteSession);
405
406 typedef [uuid(1690be9b-d3e9-49f6-8d8b-51b905af4c43)] enum { TF_AE_NONE, TF_AE_START, TF_AE_END } TfActiveSelEnd;
407
408 typedef [uuid(36ae42a4-6989-4bdc-b48a-6137b7bf2e42)] struct TF_SELECTIONSTYLE
409 {
410 TfActiveSelEnd ase;
411 BOOL fInterimChar;
412 } TF_SELECTIONSTYLE;
413
414 typedef [uuid(75eb22f2-b0bf-46a8-8006-975a3b6efcf1)] struct TF_SELECTION
415 {
416 ITfRange *range;
417 TF_SELECTIONSTYLE style;
418 } TF_SELECTION;
419
420 const ULONG TF_DEFAULT_SELECTION = TS_DEFAULT_SELECTION;
421
422 HRESULT GetSelection(
423 [in] TfEditCookie ec,
424 [in] ULONG ulIndex,
425 [in] ULONG ulCount,
426 [out, size_is(ulCount), length_is(*pcFetched)] TF_SELECTION *pSelection,
427 [out] ULONG *pcFetched);
428
429 HRESULT SetSelection(
430 [in] TfEditCookie ec,
431 [in] ULONG ulCount,
432 [in, size_is(ulCount)] const TF_SELECTION *pSelection);
433
434 HRESULT GetStart(
435 [in] TfEditCookie ec,
436 [out] ITfRange **ppStart);
437
438 HRESULT GetEnd(
439 [in] TfEditCookie ec,
440 [out] ITfRange **ppEnd);
441
442 typedef [uuid(bc7d979a-846a-444d-afef-0a9bfa82b961)] TS_STATUS TF_STATUS;
443 const DWORD TF_SD_READONLY = TS_SD_READONLY;
444 const DWORD TF_SD_LOADING = TS_SD_LOADING;
445 const DWORD TF_SS_DISJOINTSEL = TS_SS_DISJOINTSEL;
446 const DWORD TF_SS_REGIONS = TS_SS_REGIONS;
447 const DWORD TF_SS_TRANSITORY = TS_SS_TRANSITORY;
448
449
450 HRESULT GetActiveView(
451 [out] ITfContextView **ppView);
452
453 HRESULT EnumViews(
454 [out] IEnumTfContextViews **ppEnum);
455
456 HRESULT GetStatus(
457 [out] TF_STATUS *pdcs);
458
459 HRESULT GetProperty(
460 [in] REFGUID guidProp,
461 [out] ITfProperty **ppProp);
462
463 HRESULT GetAppProperty(
464 [in] REFGUID guidProp,
465 [out] ITfReadOnlyProperty **ppProp);
466
467 HRESULT TrackProperties(
468 [in, size_is(cProp)] const GUID **prgProp,
469 [in] ULONG cProp,
470 [in, size_is(cAppProp)] const GUID **prgAppProp,
471 [in] ULONG cAppProp,
472 [out] ITfReadOnlyProperty **ppProperty);
473
474 HRESULT EnumProperties(
475 [out] IEnumTfProperties **ppEnum);
476
477 HRESULT GetDocumentMgr(
478 [out] ITfDocumentMgr **ppDm);
479
480 HRESULT CreateRangeBackup(
481 [in] TfEditCookie ec,
482 [in] ITfRange *pRange,
483 [out] ITfRangeBackup **ppBackup);
484 }
485
486 const DWORD TF_INVALID_COOKIE = 0xffffffff;
487
488 [
489 object,
490 uuid(4ea48a35-60ae-446f-8fd6-e6a8d82459f7),
491 pointer_default(unique)
492 ]
493 interface ITfSource : IUnknown
494 {
495 HRESULT AdviseSink(
496 [in] REFIID riid,
497 [in, iid_is(riid)] IUnknown *punk,
498 [out] DWORD *pdwCookie);
499
500 HRESULT UnadviseSink(
501 [in] DWORD dwCookie);
502 }
503
504 [
505 object,
506 local,
507 uuid(1F02B6C5-7842-4EE6-8A0B-9A24183A95CA),
508 pointer_default(unique)
509 ]
510 interface ITfInputProcessorProfiles : IUnknown
511 {
512 HRESULT Register(
513 [in] REFCLSID rclsid);
514
515 HRESULT Unregister(
516 [in] REFCLSID rclsid);
517
518 HRESULT AddLanguageProfile(
519 [in] REFCLSID rclsid,
520 [in] LANGID langid,
521 [in] REFGUID guidProfile,
522 [in, size_is(cchDesc)] const WCHAR *pchDesc,
523 [in] ULONG cchDesc,
524 [in, size_is(cchFile)] const WCHAR *pchIconFile,
525 [in] ULONG cchFile,
526 [in] ULONG uIconIndex);
527
528 HRESULT RemoveLanguageProfile(
529 [in] REFCLSID rclsid,
530 [in] LANGID langid,
531 [in] REFGUID guidProfile);
532
533 HRESULT EnumInputProcessorInfo(
534 [out] IEnumGUID **ppEnum);
535
536 HRESULT GetDefaultLanguageProfile(
537 [in] LANGID langid,
538 [in] REFGUID catid,
539 [out] CLSID *pclsid,
540 [out] GUID *pguidProfile);
541
542 HRESULT SetDefaultLanguageProfile(
543 [in] LANGID langid,
544 [in] REFCLSID rclsid,
545 [in] REFGUID guidProfiles);
546
547 HRESULT ActivateLanguageProfile(
548 [in] REFCLSID rclsid,
549 [in] LANGID langid,
550 [in] REFGUID guidProfiles);
551
552 HRESULT GetActiveLanguageProfile(
553 [in] REFCLSID rclsid,
554 [out] LANGID *plangid,
555 [out] GUID *pguidProfile);
556
557 HRESULT GetLanguageProfileDescription(
558 [in] REFCLSID rclsid,
559 [in] LANGID langid,
560 [in] REFGUID guidProfile,
561 [out] BSTR *pbstrProfile);
562
563 HRESULT GetCurrentLanguage(
564 [out] LANGID *plangid);
565
566 HRESULT ChangeCurrentLanguage(
567 [in] LANGID langid);
568
569 HRESULT GetLanguageList(
570 [out] LANGID **ppLangId,
571 [out] ULONG *pulCount);
572
573 HRESULT EnumLanguageProfiles(
574 [in] LANGID langid,
575 [out] IEnumTfLanguageProfiles **ppEnum);
576
577 HRESULT EnableLanguageProfile(
578 [in] REFCLSID rclsid,
579 [in] LANGID langid,
580 [in] REFGUID guidProfile,
581 [in] BOOL fEnable);
582
583 HRESULT IsEnabledLanguageProfile(
584 [in] REFCLSID rclsid,
585 [in] LANGID langid,
586 [in] REFGUID guidProfile,
587 [out] BOOL *pfEnable);
588
589 HRESULT EnableLanguageProfileByDefault(
590 [in] REFCLSID rclsid,
591 [in] LANGID langid,
592 [in] REFGUID guidProfile,
593 [in] BOOL fEnable);
594
595 HRESULT SubstituteKeyboardLayout(
596 [in] REFCLSID rclsid,
597 [in] LANGID langid,
598 [in] REFGUID guidProfile,
599 [in] HKL hKL);
600 }
601
602 typedef [uuid(44d2825a-10e5-43b2-877f-6cb2f43b7e7e)]
603 struct TF_INPUTPROCESSORPROFILE {
604 DWORD dwProfileType;
605 LANGID langid;
606 CLSID clsid;
607 GUID guidProfile;
608 GUID catid;
609 HKL hklSubstitute;
610 DWORD dwCaps;
611 HKL hkl;
612 DWORD dwFlags;
613 } TF_INPUTPROCESSORPROFILE;
614
615 [
616 object,
617 uuid(71c6e74d-0f28-11d8-a82a-00065b84435c),
618 pointer_default(unique)
619 ]
620 interface IEnumTfInputProcessorProfiles : IUnknown
621 {
622 HRESULT Clone(
623 [out] IEnumTfInputProcessorProfiles **ppEnum);
624
625 HRESULT Next(
626 [in] ULONG ulCount,
627 [out, size_is(ulCount), length_is(*pcFetch)] TF_INPUTPROCESSORPROFILE *pProfile,
628 [out] ULONG *pcFetch);
629
630 HRESULT Reset();
631
632 HRESULT Skip(
633 [in] ULONG ulCount);
634 }
635
636 [
637 object,
638 uuid(71c6e74c-0f28-11d8-a82a-00065b84435c),
639 pointer_default(unique)
640 ]
641 interface ITfInputProcessorProfileMgr : IUnknown
642 {
643 HRESULT ActivateProfile(
644 [in] DWORD dwProfileType,
645 [in] LANGID langid,
646 [in] REFCLSID clsid,
647 [in] REFGUID guidProfile,
648 [in] HKL hkl,
649 [in] DWORD dwFlags);
650
651 HRESULT DeactivateProfile(
652 [in] DWORD dwProfileType,
653 [in] LANGID langid,
654 [in] REFCLSID clsid,
655 [in] REFGUID guidProfile,
656 [in] HKL hkl,
657 [in] DWORD dwFlags);
658
659 HRESULT GetProfile(
660 [in] DWORD dwProfileType,
661 [in] LANGID langid,
662 [in] REFCLSID clsid,
663 [in] REFGUID guidProfile,
664 [in] HKL hkl,
665 [out] TF_INPUTPROCESSORPROFILE *pProfile);
666
667
668 HRESULT EnumProfiles(
669 [in] LANGID langid,
670 [out] IEnumTfInputProcessorProfiles **ppEnum);
671
672 HRESULT ReleaseInputProcessor(
673 [in] REFCLSID rclsid,
674 [in] DWORD dwFlags);
675
676 HRESULT RegisterProfile(
677 [in] REFCLSID rclsid,
678 [in] LANGID langid,
679 [in] REFGUID guidProfile,
680 [in, size_is(cchDesc)] const WCHAR *pchDesc,
681 [in] ULONG cchDesc,
682 [in, size_is(cchFile)] const WCHAR *pchIconFile,
683 [in] ULONG cchFile,
684 [in] ULONG uIconIndex,
685 [in] HKL hklsubstitute,
686 [in] DWORD dwPreferredLayout,
687 [in] BOOL bEnabledByDefault,
688 [in] DWORD dwFlags);
689
690 HRESULT UnregisterProfile(
691 [in] REFCLSID rclsid,
692 [in] LANGID langid,
693 [in] REFGUID guidProfile,
694 [in] DWORD dwFlags);
695
696 HRESULT GetActiveProfile(
697 [in] REFGUID catid,
698 [out] TF_INPUTPROCESSORPROFILE *pProfile);
699 }
700
701 typedef [uuid(c4cc07f1-80cc-4a7b-bc54-98512782cbe3)]
702 enum {
703 TF_LS_NONE = 0,
704 TF_LS_SOLID = 1,
705 TF_LS_DOT = 2,
706 TF_LS_DASH = 3,
707 TF_LS_SQUIGGLE = 4
708 } TF_DA_LINESTYLE;
709
710 typedef [uuid(d9b92e21-084a-401b-9c64-1e6dad91a1ab)]
711 enum {
712 TF_CT_NONE = 0,
713 TF_CT_SYSCOLOR = 1,
714 TF_CT_COLORREF = 2
715 } TF_DA_COLORTYPE;
716
717 typedef [uuid(90d0cb5e-6520-4a0f-b47c-c39bd955f0d6)]
718 struct TF_DA_COLOR {
719 TF_DA_COLORTYPE type;
720 [switch_type(TF_DA_COLORTYPE), switch_is(type)]
721 union {
722 [case(TF_CT_SYSCOLOR)] int nIndex;
723 [case(TF_CT_COLORREF)] COLORREF cr;
724 };
725 } TF_DA_COLOR;
726
727 typedef [uuid(33d2fe4b-6c24-4f67-8d75-3bc1819e4126)]
728 enum {
729 TF_ATTR_INPUT = 0,
730 TF_ATTR_TARGET_CONVERTED = 1,
731 TF_ATTR_CONVERTED = 2,
732 TF_ATTR_TARGET_NOTCONVERTED = 3,
733 TF_ATTR_INPUT_ERROR = 4,
734 TF_ATTR_FIXEDCONVERTED = 5,
735 TF_ATTR_OTHER = -1
736 } TF_DA_ATTR_INFO;
737
738 typedef [uuid(1bf1c305-419b-4182-a4d2-9bfadc3f021f)]
739 struct TF_DISPLAYATTRIBUTE {
740 TF_DA_COLOR crText;
741 TF_DA_COLOR crBk;
742 TF_DA_LINESTYLE lsStyle;
743 BOOL fBoldLine;
744 TF_DA_COLOR crLine;
745 TF_DA_ATTR_INFO bAttr;
746 } TF_DISPLAYATTRIBUTE;
747
748 [
749 object,
750 uuid(70528852-2f26-4aea-8c96-215150578932),
751 pointer_default(unique)
752 ]
753 interface ITfDisplayAttributeInfo : IUnknown
754 {
755 HRESULT GetGUID([out] GUID *pguid);
756
757 HRESULT GetDescription([out] BSTR *pbstrDesc);
758
759 HRESULT GetAttributeInfo([out] TF_DISPLAYATTRIBUTE *pda);
760
761 HRESULT SetAttributeInfo([in] const TF_DISPLAYATTRIBUTE *pda);
762
763 HRESULT Reset();
764 }
765
766 [
767 object,
768 uuid(7cef04d7-cb75-4e80-a7ab-5f5bc7d332de),
769 pointer_default(unique)
770 ]
771 interface IEnumTfDisplayAttributeInfo : IUnknown
772 {
773 HRESULT Clone([out] IEnumTfDisplayAttributeInfo **ppEnum);
774
775 HRESULT Next(
776 [in] ULONG ulCount,
777 [out, size_is(ulCount), length_is(*pcFetched)] ITfDisplayAttributeInfo **rgInfo,
778 [out] ULONG *pcFetched);
779
780 HRESULT Reset();
781
782 HRESULT Skip([in] ULONG ulCount);
783 }
784
785 [
786 object,
787 local,
788 uuid(8ded7393-5db1-475c-9e71-a39111b0ff67),
789 pointer_default(unique)
790 ]
791 interface ITfDisplayAttributeMgr : IUnknown
792 {
793 HRESULT OnUpdateInfo();
794
795 HRESULT EnumDisplayAttributeInfo([out] IEnumTfDisplayAttributeInfo **ppEnum);
796
797 HRESULT GetDisplayAttributeInfo(
798 [in] REFGUID guid,
799 [out] ITfDisplayAttributeInfo **ppInfo,
800 [out] CLSID *pclsidOwner);
801
802 }
803
804 [
805 object,
806 local,
807 uuid(c3acefb5-f69d-4905-938f-fcadcf4be830),
808 pointer_default(unique)
809 ]
810 interface ITfCategoryMgr : IUnknown
811 {
812 HRESULT RegisterCategory([in] REFCLSID rclsid,
813 [in] REFGUID rcatid,
814 [in] REFGUID rguid);
815
816 HRESULT UnregisterCategory([in] REFCLSID rclsid,
817 [in] REFGUID rcatid,
818 [in] REFGUID rguid);
819
820 HRESULT EnumCategoriesInItem([in] REFGUID rguid,
821 [out] IEnumGUID **ppEnum);
822
823 HRESULT EnumItemsInCategory([in] REFGUID rcatid,
824 [out] IEnumGUID **ppEnum);
825
826 HRESULT FindClosestCategory([in] REFGUID rguid,
827 [out] GUID *pcatid,
828 [in, size_is(ulCount)] const GUID **ppcatidList,
829 [in] ULONG ulCount);
830
831 HRESULT RegisterGUIDDescription([in] REFCLSID rclsid,
832 [in] REFGUID rguid,
833 [in, size_is(cch)] const WCHAR *pchDesc,
834 [in] ULONG cch);
835
836 HRESULT UnregisterGUIDDescription([in] REFCLSID rclsid,
837 [in] REFGUID rguid);
838
839 HRESULT GetGUIDDescription([in] REFGUID rguid,
840 [out] BSTR *pbstrDesc);
841
842 HRESULT RegisterGUIDDWORD([in] REFCLSID rclsid,
843 [in] REFGUID rguid,
844 [in] DWORD dw);
845
846 HRESULT UnregisterGUIDDWORD([in] REFCLSID rclsid,
847 [in] REFGUID rguid);
848
849 HRESULT GetGUIDDWORD([in] REFGUID rguid,
850 [out] DWORD *pdw);
851
852 HRESULT RegisterGUID([in] REFGUID rguid,
853 [out] TfGuidAtom *pguidatom);
854
855 HRESULT GetGUID([in] TfGuidAtom guidatom,
856 [out] GUID *pguid);
857
858 HRESULT IsEqualTfGuidAtom([in] TfGuidAtom guidatom,
859 [in] REFGUID rguid,
860 [out] BOOL *pfEqual);
861 }
862
863 [
864 object,
865 uuid(f99d3f40-8e32-11d2-bf46-00105a2799b5),
866 pointer_default(unique)
867 ]
868 interface IEnumTfRanges : IUnknown
869 {
870 HRESULT Clone([out] IEnumTfRanges **ppEnum);
871
872 HRESULT Next(
873 [in] ULONG ulCount,
874 [out, size_is(ulCount), length_is(*pcFetched)] ITfRange **ppRange,
875 [out] ULONG *pcFetched);
876
877 HRESULT Reset();
878
879 HRESULT Skip(ULONG ulCount);
880 }
881
882 [
883 object,
884 uuid(42d4d099-7c1a-4a89-b836-6c6f22160df0),
885 pointer_default(unique)
886 ]
887 interface ITfEditRecord : IUnknown
888 {
889 const DWORD TF_GTP_INCL_TEXT = 0x1;
890
891 HRESULT GetSelectionStatus(
892 [out] BOOL *changed);
893
894 HRESULT GetTextAndPropertyUpdates(
895 [in] DWORD flags,
896 [in, size_is(count)] const GUID **props,
897 [in] ULONG count,
898 [out] IEnumTfRanges **ret);
899 }
900
901 [
902 object,
903 uuid(8127d409-ccd3-4683-967a-b43d5b482bf7),
904 pointer_default(unique)
905 ]
906 interface ITfTextEditSink : IUnknown
907 {
908 HRESULT OnEndEdit(
909 [in] ITfContext *pic,
910 [in] TfEditCookie ecReadOnly,
911 [in] ITfEditRecord *pEditRecord);
912 }
913
914 [
915 object,
916 uuid(5F20AA40-B57A-4F34-96AB-3576F377CC79),
917 pointer_default(unique)
918 ]
919 interface ITfContextOwnerCompositionSink : IUnknown
920 {
921 HRESULT OnStartComposition(
922 [in] ITfCompositionView *pComposition,
923 [out] BOOL *pfOk);
924
925 HRESULT OnUpdateComposition(
926 [in] ITfCompositionView *pComposition,
927 [in] ITfRange *pRangeNew);
928
929 HRESULT OnEndComposition(
930 [in] ITfCompositionView *pComposition);
931 }
932
933 [
934 object,
935 uuid(b246cb75-a93e-4652-bf8c-b3fe0cfd7e57),
936 pointer_default(unique)
937 ]
938 interface ITfActiveLanguageProfileNotifySink : IUnknown
939 {
940 HRESULT OnActivated(
941 [in] REFCLSID clsid,
942 [in] REFGUID guidProfile,
943 [in] BOOL fActivated);
944 }
945
946 [
947 object,
948 uuid(3d61bf11-ac5f-42c8-a4cb-931bcc28c744),
949 pointer_default(unique)
950 ]
951 interface IEnumTfLanguageProfiles : IUnknown
952 {
953 HRESULT Clone(
954 [out] IEnumTfLanguageProfiles **ppEnum);
955
956 HRESULT Next(
957 [in] ULONG ulCount,
958 [out, size_is(ulCount), length_is(*pcFetch)] TF_LANGUAGEPROFILE *pProfile,
959 [out] ULONG *pcFetch);
960
961 HRESULT Reset();
962
963 HRESULT Skip(
964 [in] ULONG ulCount);
965 }
966
967 [
968 object,
969 local,
970 uuid(aa80e7f7-2021-11d2-93e0-0060b067b86e),
971 pointer_default(unique)
972 ]
973 interface ITfTextInputProcessor : IUnknown
974 {
975 HRESULT Activate(
976 [in] ITfThreadMgr *ptim,
977 [in] TfClientId tid);
978
979 HRESULT Deactivate();
980 }
981
982 [
983 object,
984 uuid(aa80e80e-2021-11d2-93e0-0060b067b86e),
985 pointer_default(unique)
986 ]
987 interface ITfThreadMgrEventSink : IUnknown
988 {
989 HRESULT OnInitDocumentMgr(
990 [in] ITfDocumentMgr *pdim);
991
992 HRESULT OnUninitDocumentMgr(
993 [in] ITfDocumentMgr *pdim);
994
995 HRESULT OnSetFocus(
996 [in] ITfDocumentMgr *pdimFocus,
997 [in] ITfDocumentMgr *pdimPrevFocus);
998
999 HRESULT OnPushContext(
1000 [in] ITfContext *pic);
1001
1002 HRESULT OnPopContext(
1003 [in] ITfContext *pic);
1004 }
1005
1006 [
1007 object,
1008 local,
1009 uuid(aa80e7f0-2021-11d2-93e0-0060b067b86e),
1010 pointer_default(unique)
1011 ]
1012 interface ITfKeystrokeMgr : IUnknown
1013 {
1014 HRESULT AdviseKeyEventSink(
1015 [in] TfClientId tid,
1016 [in] ITfKeyEventSink *pSink,
1017 [in] BOOL fForeground);
1018
1019 HRESULT UnadviseKeyEventSink(
1020 [in] TfClientId tid);
1021
1022 HRESULT GetForeground(
1023 [out] CLSID *pclsid);
1024
1025 HRESULT TestKeyDown(
1026 [in] WPARAM wParam,
1027 [in] LPARAM lParam,
1028 [out] BOOL *pfEaten);
1029
1030 HRESULT TestKeyUp(
1031 [in] WPARAM wParam,
1032 [in] LPARAM lParam,
1033 [out] BOOL *pfEaten);
1034
1035 HRESULT KeyDown(
1036 [in] WPARAM wParam,
1037 [in] LPARAM lParam,
1038 [out] BOOL *pfEaten);
1039
1040 HRESULT KeyUp(
1041 [in] WPARAM wParam,
1042 [in] LPARAM lParam,
1043 [out] BOOL *pfEaten);
1044
1045 HRESULT GetPreservedKey(
1046 [in] ITfContext *pic,
1047 [in] const TF_PRESERVEDKEY *pprekey,
1048 [out] GUID *pguid);
1049
1050 HRESULT IsPreservedKey(
1051 [in] REFGUID rguid,
1052 [in] const TF_PRESERVEDKEY *pprekey,
1053 [out] BOOL *pfRegistered);
1054
1055 HRESULT PreserveKey(
1056 [in] TfClientId tid,
1057 [in] REFGUID rguid,
1058 [in] const TF_PRESERVEDKEY *prekey,
1059 [in, size_is(cchDesc)] const WCHAR *pchDesc,
1060 [in] ULONG cchDesc);
1061
1062 HRESULT UnpreserveKey(
1063 [in] REFGUID rguid,
1064 [in] const TF_PRESERVEDKEY *pprekey);
1065
1066 HRESULT SetPreservedKeyDescription(
1067 [in] REFGUID rguid,
1068 [in, size_is(cchDesc)] const WCHAR *pchDesc,
1069 [in] ULONG cchDesc);
1070
1071 HRESULT GetPreservedKeyDescription(
1072 [in] REFGUID rguid,
1073 [out] BSTR *pbstrDesc);
1074
1075 HRESULT SimulatePreservedKey(
1076 [in] ITfContext *pic,
1077 [in] REFGUID rguid,
1078 [out] BOOL *pfEaten);
1079 }
1080
1081 [
1082 object,
1083 local,
1084 uuid(aa80e7f5-2021-11d2-93e0-0060b067b86e),
1085 pointer_default(unique)
1086 ]
1087 interface ITfKeyEventSink : IUnknown
1088 {
1089 HRESULT OnSetFocus(
1090 [in] BOOL fForeground);
1091
1092 HRESULT OnTestKeyDown(
1093 [in] ITfContext *pic,
1094 [in] WPARAM wParam,
1095 [in] LPARAM lParam,
1096 [out] BOOL *pfEaten);
1097
1098 HRESULT OnTestKeyUp(
1099 [in] ITfContext *pic,
1100 [in] WPARAM wParam,
1101 [in] LPARAM lParam,
1102 [out] BOOL *pfEaten);
1103
1104 HRESULT OnKeyDown(
1105 [in] ITfContext *pic,
1106 [in] WPARAM wParam,
1107 [in] LPARAM lParam,
1108 [out] BOOL *pfEaten);
1109
1110 HRESULT OnKeyUp(
1111 [in] ITfContext *pic,
1112 [in] WPARAM wParam,
1113 [in] LPARAM lParam,
1114 [out] BOOL *pfEaten);
1115
1116 HRESULT OnPreservedKey(
1117 [in] ITfContext *pic,
1118 [in] REFGUID rguid,
1119 [out] BOOL *pfEaten);
1120 }
1121
1122 [
1123 object,
1124 local,
1125 uuid(1cd4c13b-1c36-4191-a70a-7f3e611f367d),
1126 pointer_default(unique)
1127 ]
1128 interface ITfKeyTraceEventSink : IUnknown
1129 {
1130 HRESULT OnKeyTraceDown(
1131 [in] WPARAM wParam,
1132 [in] LPARAM lParam);
1133
1134 HRESULT OnKeyTraceUp(
1135 [in] WPARAM wParam,
1136 [in] LPARAM lParam);
1137 }
1138
1139 [
1140 object,
1141 local,
1142 uuid(8f1b8ad8-0b6b-4874-90c5-bd76011e8f7c),
1143 pointer_default(unique)
1144 ]
1145 interface ITfMessagePump : IUnknown
1146 {
1147 HRESULT PeekMessageA(
1148 [out] LPMSG pMsg,
1149 [in] HWND hwnd,
1150 [in] UINT wMsgFilterMin,
1151 [in] UINT wMsgFilterMax,
1152 [in] UINT wRemoveMsg,
1153 [out] BOOL *pfResult);
1154
1155 HRESULT GetMessageA(
1156 [out] LPMSG pMsg,
1157 [in] HWND hwnd,
1158 [in] UINT wMsgFilterMin,
1159 [in] UINT wMsgFilterMax,
1160 [out] BOOL *pfResult);
1161
1162 HRESULT PeekMessageW(
1163 [out] LPMSG pMsg,
1164 [in] HWND hwnd,
1165 [in] UINT wMsgFilterMin,
1166 [in] UINT wMsgFilterMax,
1167 [in] UINT wRemoveMsg,
1168 [out] BOOL *pfResult);
1169
1170 HRESULT GetMessageW(
1171 [out] LPMSG pMsg,
1172 [in] HWND hwnd,
1173 [in] UINT wMsgFilterMin,
1174 [in] UINT wMsgFilterMax,
1175 [out] BOOL *pfResult);
1176 }
1177
1178 [
1179 object,
1180 local,
1181 uuid(d60a7b49-1b9f-4be2-b702-47e9dc05dec3),
1182 pointer_default(unique)
1183 ]
1184 interface ITfClientId : IUnknown
1185 {
1186 HRESULT GetClientId(
1187 [in] REFCLSID rclsid,
1188 [out] TfClientId *ptid);
1189 }
1190
1191 [
1192 object,
1193 uuid(43c9fe15-f494-4c17-9de2-b8a4ac350aa8),
1194 pointer_default(unique)
1195 ]
1196 interface ITfLanguageProfileNotifySink : IUnknown
1197 {
1198 HRESULT OnLanguageChange(
1199 [in] LANGID langid,
1200 [out] BOOL *pfAccept);
1201
1202 HRESULT OnLanguageChanged();
1203 }
1204
1205 [
1206 object,
1207 uuid(aa80e803-2021-11d2-93e0-0060b067b86e),
1208 pointer_default(unique)
1209 ]
1210 interface ITfEditSession : IUnknown
1211 {
1212 HRESULT DoEditSession(
1213 [in] TfEditCookie ec);
1214 }
1215
1216 [
1217 object,
1218 uuid(aa80e7ff-2021-11d2-93e0-0060b067b86e),
1219 pointer_default(unique)
1220 ]
1221 interface ITfRange : IUnknown
1222 {
1223 const WCHAR TF_CHAR_EMBEDDED = TS_CHAR_EMBEDDED;
1224
1225 typedef [uuid(cf610f06-2882-46f6-abe5-298568b664c4)] enum { TF_GRAVITY_BACKWARD = 0, TF_GRAVITY_FORWARD = 1 } TfGravity;
1226
1227 typedef [uuid(1e512533-bbdc-4530-9a8e-a1dc0af67468)] enum { TF_SD_BACKWARD = 0, TF_SD_FORWARD = 1 } TfShiftDir;
1228
1229 const DWORD TF_HF_OBJECT = 1;
1230 const DWORD TF_TF_MOVESTART = 1;
1231 const DWORD TF_TF_IGNOREEND = 2;
1232 const DWORD TF_ST_CORRECTION = 1;
1233 const DWORD TF_IE_CORRECTION = 1;
1234
1235 typedef [uuid(49930d51-7d93-448c-a48c-fea5dac192b1)] struct TF_HALTCOND
1236 {
1237 ITfRange *pHaltRange;
1238 TfAnchor aHaltPos;
1239 DWORD dwFlags;
1240 } TF_HALTCOND;
1241
1242 HRESULT GetText(
1243 [in] TfEditCookie ec,
1244 [in] DWORD dwFlags,
1245 [out, size_is(cchMax), length_is(*pcch)] WCHAR *pchText,
1246 [in] ULONG cchMax,
1247 [out] ULONG *pcch);
1248
1249 HRESULT SetText(
1250 [in] TfEditCookie ec,
1251 [in] DWORD dwFlags,
1252 [in, size_is(cch), unique] const WCHAR *pchText,
1253 [in] LONG cch);
1254
1255 HRESULT GetFormattedText(
1256 [in] TfEditCookie ec,
1257 [out] IDataObject **ppDataObject);
1258
1259 HRESULT GetEmbedded(
1260 [in] TfEditCookie ec,
1261 [in] REFGUID rguidService,
1262 [in] REFIID riid,
1263 [out, iid_is(riid)] IUnknown **ppunk);
1264
1265 HRESULT InsertEmbedded(
1266 [in] TfEditCookie ec,
1267 [in] DWORD dwFlags,
1268 [in] IDataObject *pDataObject);
1269
1270 HRESULT ShiftStart(
1271 [in] TfEditCookie ec,
1272 [in] LONG cchReq,
1273 [out] LONG *pcch,
1274 [in, unique] const TF_HALTCOND *pHalt);
1275
1276 HRESULT ShiftEnd(
1277 [in] TfEditCookie ec,
1278 [in] LONG cchReq,
1279 [out] LONG *pcch,
1280 [in, unique] const TF_HALTCOND *pHalt);
1281
1282 HRESULT ShiftStartToRange(
1283 [in] TfEditCookie ec,
1284 [in] ITfRange *pRange,
1285 [in] TfAnchor aPos);
1286
1287 HRESULT ShiftEndToRange(
1288 [in] TfEditCookie ec,
1289 [in] ITfRange *pRange,
1290 [in] TfAnchor aPos);
1291
1292 HRESULT ShiftStartRegion(
1293 [in] TfEditCookie ec,
1294 [in] TfShiftDir dir,
1295 [out] BOOL *pfNoRegion);
1296
1297 HRESULT ShiftEndRegion(
1298 [in] TfEditCookie ec,
1299 [in] TfShiftDir dir,
1300 [out] BOOL *pfNoRegion);
1301
1302 HRESULT IsEmpty(
1303 [in] TfEditCookie ec,
1304 [out] BOOL *pfEmpty);
1305
1306 HRESULT Collapse(
1307 [in] TfEditCookie ec,
1308 [in] TfAnchor aPos);
1309
1310 HRESULT IsEqualStart(
1311 [in] TfEditCookie ec,
1312 [in] ITfRange *pWith,
1313 [in] TfAnchor aPos,
1314 [out] BOOL *pfEqual);
1315
1316 HRESULT IsEqualEnd(
1317 [in] TfEditCookie ec,
1318 [in] ITfRange *pWith,
1319 [in] TfAnchor aPos,
1320 [out] BOOL *pfEqual);
1321
1322 HRESULT CompareStart(
1323 [in] TfEditCookie ec,
1324 [in] ITfRange *pWith,
1325 [in] TfAnchor aPos,
1326 [out] LONG *plResult);
1327
1328 HRESULT CompareEnd(
1329 [in] TfEditCookie ec,
1330 [in] ITfRange *pWith,
1331 [in] TfAnchor aPos,
1332 [out] LONG *plResult);
1333
1334 HRESULT AdjustForInsert(
1335 [in] TfEditCookie ec,
1336 [in] ULONG cchInsert,
1337 [out] BOOL *pfInsertOk);
1338
1339 HRESULT GetGravity(
1340 [out] TfGravity *pgStart,
1341 [out] TfGravity *pgEnd);
1342
1343 HRESULT SetGravity(
1344 [in] TfEditCookie ec,
1345 [in] TfGravity gStart,
1346 [in] TfGravity gEnd);
1347
1348 HRESULT Clone(
1349 [out] ITfRange **ppClone);
1350
1351 HRESULT GetContext(
1352 [out] ITfContext **ppContext);
1353 }
1354
1355 [
1356 object,
1357 uuid(057a6296-029b-4154-b79a-0d461d4ea94c),
1358 pointer_default(unique)
1359 ]
1360 interface ITfRangeACP : ITfRange
1361 {
1362 HRESULT GetExtent([out] LONG *pacpAnchor,
1363 [out] LONG *pcch);
1364
1365 HRESULT SetExtent([in] LONG acpAnchor,
1366 [in] LONG cch);
1367 }
1368
1369 [
1370 object,
1371 uuid(55ce16ba-3014-41c1-9ceb-fade1446ac6c),
1372 pointer_default(unique)
1373 ]
1374 interface ITfInsertAtSelection : IUnknown
1375 {
1376 const DWORD TF_IAS_NOQUERY = 0x1;
1377 const DWORD TF_IAS_QUERYONLY = 0x2;
1378 const DWORD TF_IAS_NO_DEFAULT_COMPOSITION = 0x80000000;
1379
1380 HRESULT InsertTextAtSelection(
1381 [in] TfEditCookie ec,
1382 [in] DWORD dwFlags,
1383 [in, size_is(cch)] const WCHAR *pchText,
1384 [in] LONG cch,
1385 [out] ITfRange **ppRange);
1386
1387 HRESULT InsertEmbeddedAtSelection(
1388 [in] TfEditCookie ec,
1389 [in] DWORD dwFlags,
1390 [in] IDataObject *pDataObject,
1391 [out] ITfRange **ppRange);
1392 }
1393
1394 [
1395 object,
1396 uuid(6834b120-88cb-11d2-bf45-00105a2799b5),
1397 pointer_default(unique)
1398 ]
1399 interface ITfPropertyStore : IUnknown
1400 {
1401 const DWORD TF_TU_CORRECTION = 0x1;
1402
1403 HRESULT GetType([out] GUID *pguid);
1404
1405 HRESULT GetDataType([out] DWORD *pdwReserved);
1406
1407 HRESULT GetData([out] VARIANT *pvarValue);
1408
1409 HRESULT OnTextUpdated(
1410 [in] DWORD dwFlags,
1411 [in] ITfRange *pRangeNew,
1412 [out] BOOL *pfAccept);
1413
1414 HRESULT Shrink(
1415 [in] ITfRange *pRangeNew,
1416 [out] BOOL *pfFree);
1417
1418 HRESULT Divide(
1419 [in] ITfRange *pRangeThis,
1420 [in] ITfRange *pRangeNew,
1421 [out] ITfPropertyStore **ppPropStore);
1422
1423 HRESULT Clone(
1424 [out] ITfPropertyStore **pPropStore);
1425
1426 HRESULT GetPropertyRangeCreator(
1427 [out] CLSID *pclsid);
1428
1429 HRESULT Serialize(
1430 [in] IStream *pStream,
1431 [out] ULONG *pcb);
1432 }
1433
1434 [
1435 object,
1436 uuid(5efd22Ba-7838-46cb-88e2-cadb14124f8f),
1437 pointer_default(unique)
1438 ]
1439 interface IEnumITfCompositionView : IUnknown
1440 {
1441 HRESULT Clone([out] IEnumITfCompositionView **ppEnum);
1442
1443 HRESULT Next(
1444 [in] ULONG ulCount,
1445 [out, size_is(ulCount), length_is(*pcFetched)] ITfCompositionView **rgCompositionView,
1446 [out] ULONG *pcFetched);
1447
1448 HRESULT Reset();
1449
1450 HRESULT Skip([in] ULONG ulCount);
1451 }
1452
1453 [
1454 object,
1455 uuid(20168d64-5a8f-4a5a-b7bd-cfa29f4D0fd9),
1456 pointer_default(unique)
1457 ]
1458 interface ITfComposition : IUnknown
1459 {
1460 HRESULT GetRange([out] ITfRange **ppRange);
1461
1462 HRESULT ShiftStart(
1463 [in] TfEditCookie ecWrite,
1464 [in] ITfRange *pNewStart);
1465
1466 HRESULT ShiftEnd(
1467 [in] TfEditCookie ecWrite,
1468 [in] ITfRange *pNewEnd);
1469
1470 HRESULT EndComposition([in] TfEditCookie ecWrite);
1471 }
1472
1473 [
1474 object,
1475 uuid(a781718c-579a-4b15-a280-32b8577acc5e),
1476 pointer_default(unique)
1477 ]
1478 interface ITfCompositionSink : IUnknown
1479 {
1480 HRESULT OnCompositionTerminated(
1481 [in] TfEditCookie ecWrite,
1482 [in] ITfComposition *pComposition);
1483 }
1484
1485 [
1486 object,
1487 uuid(d40C8aae-aC92-4fc7-9a11-0ee0e23aa39b),
1488 pointer_default(unique)
1489 ]
1490 interface ITfContextComposition : IUnknown
1491 {
1492 HRESULT StartComposition(
1493 [in] TfEditCookie ecWrite,
1494 [in] ITfRange *pCompositionRange,
1495 [in] ITfCompositionSink *pSink,
1496 [out] ITfComposition **ppComposition);
1497
1498 HRESULT EnumCompositions([out] IEnumITfCompositionView **ppEnum);
1499
1500 HRESULT FindComposition(
1501 [in] TfEditCookie ecRead,
1502 [in] ITfRange *pTestRange,
1503 [out] IEnumITfCompositionView **ppEnum);
1504
1505 HRESULT TakeOwnership(
1506 [in] TfEditCookie ecWrite,
1507 [in] ITfCompositionView *pComposition,
1508 [in] ITfCompositionSink *pSink,
1509 [out] ITfComposition **ppComposition);
1510 }
1511
1512 [
1513 object,
1514 uuid(86462810-593b-4916-9764-19c08e9ce110),
1515 pointer_default(unique)
1516 ]
1517 interface ITfContextOwnerCompositionServices : ITfContextComposition
1518 {
1519 HRESULT TerminateComposition([in] ITfCompositionView *pComposition);
1520 }
1521
1522 [
1523 object,
1524 uuid(4ef89150-0807-11d3-8df0-00105a2799b5),
1525 pointer_default(unique)
1526 ]
1527 interface ITfPersistentPropertyLoaderACP : IUnknown
1528 {
1529 HRESULT LoadProperty(
1530 [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr,
1531 [out] IStream **ppStream);
1532 }
1533
1534 [
1535 object,
1536 uuid(b23eb630-3e1c-11d3-a745-0050040ab407),
1537 pointer_default(unique)
1538 ]
1539 interface ITfContextOwnerServices : IUnknown
1540 {
1541 HRESULT OnLayoutChange();
1542
1543 HRESULT OnStatusChange([in] DWORD dwFlags);
1544
1545 HRESULT OnAttributeChange([in] REFGUID rguidAttribute);
1546
1547 HRESULT Serialize(
1548 [in] ITfProperty *pProp,
1549 [in] ITfRange *pRange,
1550 [out] TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr,
1551 [in] IStream *pStream);
1552
1553 HRESULT Unserialize(
1554 [in] ITfProperty *pProp,
1555 [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr,
1556 [in] IStream *pStream,
1557 [in] ITfPersistentPropertyLoaderACP *pLoader);
1558
1559 HRESULT ForceLoadProperty([in] ITfProperty *pProp);
1560
1561 HRESULT CreateRange(
1562 [in] LONG acpStart,
1563 [in] LONG acpEnd,
1564 [out] ITfRangeACP **ppRange);
1565 }
1566
1567 [
1568 object,
1569 uuid(17d49a3d-f8b8-4b2f-b254-52319dd64c53),
1570 pointer_default(unique)
1571 ]
1572 interface ITfReadOnlyProperty : IUnknown
1573 {
1574 HRESULT GetType([out] GUID *pguid);
1575
1576 HRESULT EnumRanges(
1577 [in] TfEditCookie ec,
1578 [out] IEnumTfRanges **ppEnum,
1579 [in] ITfRange *pTargetRange);
1580
1581 HRESULT GetValue(
1582 [in] TfEditCookie ec,
1583 [in] ITfRange *pRange,
1584 [out] VARIANT *pvarValue);
1585
1586 HRESULT GetContext([out] ITfContext **ppContext);
1587 }
1588
1589 [
1590 object,
1591 uuid(e2449660-9542-11d2-bf46-00105a2799b5),
1592 pointer_default(unique)
1593 ]
1594 interface ITfProperty : ITfReadOnlyProperty
1595 {
1596 HRESULT FindRange(
1597 [in] TfEditCookie ec,
1598 [in] ITfRange *pRange,
1599 [out] ITfRange **ppRange,
1600 [in] TfAnchor aPos);
1601
1602 HRESULT SetValueStore(
1603 [in] TfEditCookie ec,
1604 [in] ITfRange *pRange,
1605 [in] ITfPropertyStore *pPropStore);
1606
1607 HRESULT SetValue(
1608 [in] TfEditCookie ec,
1609 [in] ITfRange *pRange,
1610 [in] const VARIANT *pvarValue);
1611
1612 HRESULT Clear(
1613 [in] TfEditCookie ec,
1614 [in] ITfRange *pRange);
1615 }
1616
1617 [
1618 object,
1619 uuid(bb08f7a9-607a-4384-8623-056892b64371),
1620 pointer_default(unique)
1621 ]
1622 interface ITfCompartment : IUnknown
1623 {
1624 HRESULT SetValue(
1625 [in] TfClientId tid,
1626 [in] const VARIANT *pvarValue);
1627
1628 HRESULT GetValue(
1629 [out] VARIANT *pvarValue);
1630 }
1631
1632 [
1633 object,
1634 uuid(7dcf57ac-18ad-438b-824d-979bffb74b7c),
1635 pointer_default(unique)
1636 ]
1637 interface ITfCompartmentMgr : IUnknown
1638 {
1639 HRESULT GetCompartment(
1640 [in] REFGUID rguid,
1641 [out] ITfCompartment **ppcomp);
1642
1643 HRESULT ClearCompartment(
1644 [in] TfClientId tid,
1645 [in] REFGUID rguid);
1646
1647 HRESULT EnumCompartments(
1648 [out] IEnumGUID **ppEnum);
1649 }
1650
1651 [
1652 object,
1653 uuid(743abd5f-f26d-48df-8cc5-238492419b64),
1654 pointer_default(unique)
1655 ]
1656 interface ITfCompartmentEventSink : IUnknown
1657 {
1658 HRESULT OnChange(
1659 [in] REFGUID rguid);
1660 }
1661
1662 [
1663 object,
1664 uuid(8f1a7ea6-1654-4502-a86e-b2902344d507),
1665 pointer_default(unique)
1666 ]
1667 interface IEnumTfContexts : IUnknown
1668 {
1669 HRESULT Clone(
1670 [out] IEnumTfContexts **ppEnum);
1671
1672 HRESULT Next(
1673 [in] ULONG ulCount,
1674 [out, size_is(ulCount), length_is(*pcFetched)] ITfContext **rgContext,
1675 [out] ULONG *pcFetched);
1676
1677 HRESULT Reset();
1678
1679 HRESULT Skip(
1680 [in] ULONG ulCount);
1681 }
1682
1683 [
1684 object,
1685 uuid(aa80e808-2021-11d2-93e0-0060b067b86e),
1686 pointer_default(unique)
1687 ]
1688 interface IEnumTfDocumentMgrs : IUnknown
1689 {
1690 HRESULT Clone(
1691 [out] IEnumTfDocumentMgrs **ppEnum);
1692
1693 HRESULT Next(
1694 [in] ULONG ulCount,
1695 [out, size_is(ulCount), length_is(*pcFetched)] ITfDocumentMgr **rgDocumentMgr,
1696 [out] ULONG *pcFetched);
1697
1698 HRESULT Reset();
1699
1700 HRESULT Skip(
1701 [in] ULONG ulCount);
1702 }
1703
1704 [
1705 object,
1706 local,
1707 uuid(ea1ea137-19df-11d7-a6d2-00065b84435c),
1708 pointer_default(unique)
1709 ]
1710 interface ITfUIElement : IUnknown
1711 {
1712 HRESULT GetDescription(
1713 [out] BSTR *description);
1714
1715 HRESULT GetGUID(
1716 [out] GUID *guid);
1717
1718 HRESULT Show(
1719 [in] BOOL show);
1720
1721 HRESULT IsShown(
1722 [out] BOOL *show);
1723 }
1724
1725 [
1726 object,
1727 local,
1728 uuid(887aa91e-acba-4931-84da-3c5208cf543f),
1729 pointer_default(unique)
1730 ]
1731 interface IEnumTfUIElements : IUnknown
1732 {
1733 HRESULT Clone(
1734 [out] IEnumTfUIElements **enum_elements);
1735
1736 HRESULT Next(
1737 [in] ULONG count,
1738 [out, size_is(count), length_is(fetched)] ITfUIElement **element,
1739 [out] ULONG fetched);
1740
1741 HRESULT Reset();
1742
1743 HRESULT Skip(
1744 [in] ULONG count);
1745 }
1746
1747 [
1748 object,
1749 local,
1750 uuid(ea1ea135-19df-11d7-a6d2-00065b84435c),
1751 pointer_default(unique)
1752 ]
1753 interface ITfUIElementMgr : IUnknown
1754 {
1755 HRESULT BeginUIElement(
1756 [in] ITfUIElement *element,
1757 [in, out] BOOL *show,
1758 [out] DWORD *id);
1759
1760 HRESULT UpdateUIElement(
1761 [in] DWORD id);
1762
1763 HRESULT EndUIElement(
1764 [in] DWORD id);
1765
1766 HRESULT GetUIElement(
1767 [in] DWORD id,
1768 [out] ITfUIElement **element);
1769
1770 HRESULT EnumUIElements(
1771 [out] IEnumTfUIElements **enum_elements);
1772 }
1773
1774 [
1775 object,
1776 uuid(73131f9c-56a9-49dd-b0ee-d046633f7528),
1777 pointer_default(unique)
1778 ]
1779 interface ITfSourceSingle : IUnknown
1780 {
1781 HRESULT AdviseSingleSink(
1782 [in] TfClientId tid,
1783 [in] REFIID riid,
1784 [in, iid_is(riid)] IUnknown *punk);
1785
1786 HRESULT UnadviseSingleSink(
1787 [in] TfClientId tid,
1788 [in] REFIID riid);
1789 }
1790
1791 [
1792 object,
1793 local,
1794 uuid(c0f1db0c-3a20-405c-a303-96b6010a885f),
1795 pointer_default(unique)
1796 ]
1797 interface ITfThreadFocusSink : IUnknown
1798 {
1799 HRESULT OnSetThreadFocus();
1800
1801 HRESULT OnKillThreadFocus();
1802 }
1803
1804 [
1805 object,
1806 uuid(71c6e74e-0f28-11d8-a82a-00065b84435c),
1807 pointer_default(unique)
1808 ]
1809 interface ITfInputProcessorProfileActivationSink : IUnknown
1810 {
1811 HRESULT OnActivated(
1812 [in] DWORD dwProfileType,
1813 [in] LANGID langid,
1814 [in] REFCLSID clsid,
1815 [in] REFGUID catid,
1816 [in] REFGUID guidProfile,
1817 [in] HKL hkl,
1818 [in] DWORD dwFlags);
1819 }
1820
1821 [
1822 object,
1823 local,
1824 uuid(a1adaaa2-3a24-449d-ac96-5183e7f5c217),
1825 pointer_default(unique)
1826 ]
1827 interface ITfMouseSink : IUnknown
1828 {
1829 HRESULT OnMouseEvent(
1830 [in] ULONG uEdge,
1831 [in] ULONG uQuadrant,
1832 [in] DWORD dwBtnStatus,
1833 [out] BOOL *pfEaten);
1834 }
1835
1836 [
1837 object,
1838 uuid(09d146cd-a544-4132-925b-7afa8ef322d0),
1839 pointer_default(unique)
1840 ]
1841 interface ITfMouseTracker : IUnknown
1842 {
1843 HRESULT AdviseMouseSink(
1844 [in] ITfRange *range,
1845 [in] ITfMouseSink *pSink,
1846 [out] DWORD *pdwCookie);
1847
1848 HRESULT UnadviseMouseSink([in] DWORD dwCookie);
1849 }
1850
1851 [
1852 object,
1853 uuid(3bdd78e2-c16e-47fd-b883-ce6facc1a208),
1854 pointer_default(unique)
1855 ]
1856 interface ITfMouseTrackerACP : IUnknown
1857 {
1858 HRESULT AdviseMouseSink(
1859 [in] ITfRangeACP *range,
1860 [in] ITfMouseSink *pSink,
1861 [out] DWORD *pdwCookie);
1862
1863 HRESULT UnadviseMouseSink([in] DWORD dwCookie);
1864 }
1865
1866 [
1867 object,
1868 local,
1869 uuid(a615096f-1c57-4813-8a15-55ee6e5a839c),
1870 pointer_default(unique)
1871 ]
1872 interface ITfTransitoryExtensionSink : IUnknown
1873 {
1874 HRESULT OnTransitoryExtensionUpdated(
1875 [in] ITfContext *pic,
1876 [in] TfEditCookie ecReadOnly,
1877 [in] ITfRange *pResultRange,
1878 [in] ITfRange *pCompositionRange,
1879 [out] BOOL *pfDeleteResultRange);
1880 }