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