|  | /* | 
|  | * Copyright 2008 Aric Stewart, CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | #ifndef DO_NO_IMPORTS | 
|  | import "oaidl.idl"; | 
|  | import "comcat.idl"; | 
|  | import "textstor.idl"; | 
|  | import "ctfutb.idl"; | 
|  | #endif | 
|  | cpp_quote("#include <winuser.h>") | 
|  |  | 
|  | cpp_quote("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)") | 
|  | cpp_quote("#define TF_E_DISCONNECTED    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0504)") | 
|  | cpp_quote("#define TF_E_ALREADY_EXISTS  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)") | 
|  | cpp_quote("#define TF_E_NOLOCK          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)") | 
|  |  | 
|  | cpp_quote("HRESULT WINAPI TF_CreateThreadMgr(ITfThreadMgr **pptim);") | 
|  | cpp_quote("HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim);") | 
|  | cpp_quote("HRESULT WINAPI TF_CreateInputProcessorProfiles(ITfInputProcessorProfiles **ppipr);") | 
|  | cpp_quote("HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pppbm);") | 
|  |  | 
|  | cpp_quote("EXTERN_C const GUID GUID_PROP_TEXTOWNER;") | 
|  | cpp_quote("DEFINE_GUID(GUID_PROP_ATTRIBUTE,0x34b45670,0x7526,0x11d2,0xa1,0x47,0x00,0x10,0x5a,0x27,0x99,0xb5);") | 
|  | cpp_quote("EXTERN_C const GUID GUID_PROP_LANGID;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_PROP_READING;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_PROP_COMPOSING;") | 
|  |  | 
|  | cpp_quote("EXTERN_C const CLSID CLSID_TF_ThreadMgr;") | 
|  | cpp_quote("EXTERN_C const CLSID CLSID_TF_InputProcessorProfiles;") | 
|  | cpp_quote("EXTERN_C const CLSID CLSID_TF_LangBarMgr;") | 
|  | cpp_quote("EXTERN_C const CLSID CLSID_TF_CategoryMgr;") | 
|  | cpp_quote("EXTERN_C const CLSID CLSID_TF_DisplayAttributeMgr;") | 
|  |  | 
|  | /* GUIDs for Compartments */ | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_DISABLED;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_KEYBOARD_OPENCLOSE;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_HANDWRITING_OPENCLOSE;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_DISABLED;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_OPENCLOSE;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_SPEECH_GLOBALSTATE;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_PERSISTMENUENABLED;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_EMPTYCONTEXT;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_COMPARTMENT_TIPUISTATUS;") | 
|  |  | 
|  | /* GUIDs for Categories */ | 
|  | cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING;") | 
|  | cpp_quote("EXTERN_C const GUID GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER;") | 
|  |  | 
|  | typedef [uuid(7213778c-7bb0-4270-b050-6189ee594e97)]  DWORD TfEditCookie; | 
|  | typedef [uuid(de403c21-89fd-4f85-8b87-64584d063fbc)] DWORD TfClientId; | 
|  | typedef [uuid(88a9c478-f3ec-4763-8345-cd9250443f8d)] DWORD TfGuidAtom; | 
|  |  | 
|  | cpp_quote("#define TF_MOD_ALT                   0x0001") | 
|  | cpp_quote("#define TF_MOD_CONTROL               0x0002") | 
|  | cpp_quote("#define TF_MOD_SHIFT                 0x0004") | 
|  | cpp_quote("#define TF_MOD_RALT                  0x0008") | 
|  | cpp_quote("#define TF_MOD_RCONTROL              0x0010") | 
|  | cpp_quote("#define TF_MOD_RSHIFT                0x0020") | 
|  | cpp_quote("#define TF_MOD_LALT                  0x0040") | 
|  | cpp_quote("#define TF_MOD_LCONTROL              0x0080") | 
|  | cpp_quote("#define TF_MOD_LSHIFT                0x0100") | 
|  | cpp_quote("#define TF_MOD_ON_KEYUP              0x0200") | 
|  | cpp_quote("#define TF_MOD_IGNORE_ALL_MODIFIER   0x0400") | 
|  |  | 
|  | interface ITfDocumentMgr; | 
|  | interface ITfContext; | 
|  | interface IEnumTfDocumentMgrs; | 
|  | interface IEnumTfContexts; | 
|  | interface ITfFunctionProvider; | 
|  | interface IEnumTfFunctionProviders; | 
|  | interface ITfCompartmentMgr; | 
|  | interface ITfEditSession; | 
|  | interface ITfRange; | 
|  | interface ITfContextView; | 
|  | interface IEnumTfContextViews; | 
|  | interface ITfProperty; | 
|  | interface ITfReadOnlyProperty; | 
|  | interface IEnumTfProperties; | 
|  | interface ITfRangeBackup; | 
|  | interface IEnumTfLanguageProfiles; | 
|  | interface ITfEditRecord; | 
|  | interface ITfCompositionView; | 
|  | interface ITfKeyEventSink; | 
|  |  | 
|  | typedef [uuid(e1b5808d-1e46-4c19-84dc-68c5f5978cc8)] struct TF_LANGUAGEPROFILE | 
|  | { | 
|  | CLSID clsid; | 
|  | LANGID langid; | 
|  | GUID catid; | 
|  | BOOL fActive; | 
|  | GUID guidProfile; | 
|  | } TF_LANGUAGEPROFILE; | 
|  |  | 
|  | typedef [uuid(77c12f95-b783-450d-879f-1cd2362c6521)] struct TF_PRESERVEDKEY | 
|  | { | 
|  | UINT uVKey; | 
|  | UINT uModifiers; | 
|  | } TF_PRESERVEDKEY; | 
|  |  | 
|  | typedef [uuid(5a886226-ae9a-489b-b991-2b1e25ee59a9)]  enum { TF_ANCHOR_START = 0, TF_ANCHOR_END = 1 } TfAnchor; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(aa80e801-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfThreadMgr: IUnknown | 
|  | { | 
|  | HRESULT Activate( | 
|  | [out] TfClientId *ptid); | 
|  |  | 
|  | HRESULT Deactivate(); | 
|  |  | 
|  | HRESULT CreateDocumentMgr( | 
|  | [out] ITfDocumentMgr **ppdim); | 
|  |  | 
|  | HRESULT EnumDocumentMgrs( | 
|  | [out] IEnumTfDocumentMgrs **ppEnum); | 
|  |  | 
|  | HRESULT GetFocus( | 
|  | [out] ITfDocumentMgr **ppdimFocus); | 
|  |  | 
|  | HRESULT SetFocus( | 
|  | [in] ITfDocumentMgr *pdimFocus); | 
|  |  | 
|  | HRESULT AssociateFocus( | 
|  | [in] HWND hwnd, | 
|  | [in, unique] ITfDocumentMgr *pdimNew, | 
|  | [out] ITfDocumentMgr **ppdimPrev); | 
|  |  | 
|  | HRESULT IsThreadFocus( | 
|  | [out] BOOL *pfThreadFocus); | 
|  |  | 
|  | HRESULT GetFunctionProvider( | 
|  | [in] REFCLSID clsid, | 
|  | [out] ITfFunctionProvider **ppFuncProv); | 
|  |  | 
|  | HRESULT EnumFunctionProviders( | 
|  | [out] IEnumTfFunctionProviders **ppEnum); | 
|  |  | 
|  | HRESULT GetGlobalCompartment( | 
|  | [out] ITfCompartmentMgr **ppCompMgr); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(d7540241-f9a1-4364-befc-dbcd2c4395b7), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfCompositionView : IUnknown | 
|  | { | 
|  | HRESULT GetOwnerClsid([out] CLSID *pclsid); | 
|  |  | 
|  | HRESULT GetRange([out] ITfRange **ppRange); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(aa80e7f4-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfDocumentMgr: IUnknown | 
|  | { | 
|  | HRESULT CreateContext( | 
|  | [in] TfClientId tidOwner, | 
|  | [in] DWORD dwFlags, | 
|  | [in, unique] IUnknown *punk, | 
|  | [out] ITfContext **ppic, | 
|  | [out] TfEditCookie *pecTextStore); | 
|  |  | 
|  | HRESULT Push( | 
|  | [in] ITfContext *pic); | 
|  |  | 
|  | const DWORD TF_POPF_ALL = 0x0001; | 
|  |  | 
|  | HRESULT Pop( | 
|  | [in] DWORD dwFlags); | 
|  |  | 
|  | HRESULT GetTop( | 
|  | [out] ITfContext **ppic); | 
|  |  | 
|  | HRESULT GetBase( | 
|  | [out] ITfContext **ppic); | 
|  |  | 
|  | HRESULT EnumContexts( | 
|  | [out] IEnumTfContexts **ppEnum); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(aa80e7fd-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfContext : IUnknown | 
|  | { | 
|  | const DWORD TF_ES_ASYNCDONTCARE = 0x0; | 
|  | const DWORD TF_ES_SYNC          = 0x1; | 
|  | const DWORD TF_ES_READ          = 0x2; | 
|  | const DWORD TF_ES_READWRITE     = 0x6; | 
|  | const DWORD TF_ES_ASYNC         = 0x8; | 
|  |  | 
|  | HRESULT RequestEditSession( | 
|  | [in] TfClientId tid, | 
|  | [in] ITfEditSession *pes, | 
|  | [in] DWORD dwFlags, | 
|  | [out] HRESULT *phrSession); | 
|  |  | 
|  | HRESULT InWriteSession( | 
|  | [in] TfClientId tid, | 
|  | [out] BOOL *pfWriteSession); | 
|  |  | 
|  | typedef [uuid(1690be9b-d3e9-49f6-8d8b-51b905af4c43)] enum { TF_AE_NONE, TF_AE_START, TF_AE_END } TfActiveSelEnd; | 
|  |  | 
|  | typedef [uuid(36ae42a4-6989-4bdc-b48a-6137b7bf2e42)] struct TF_SELECTIONSTYLE | 
|  | { | 
|  | TfActiveSelEnd ase; | 
|  | BOOL fInterimChar; | 
|  | } TF_SELECTIONSTYLE; | 
|  |  | 
|  | typedef [uuid(75eb22f2-b0bf-46a8-8006-975a3b6efcf1)] struct TF_SELECTION | 
|  | { | 
|  | ITfRange *range; | 
|  | TF_SELECTIONSTYLE style; | 
|  | } TF_SELECTION; | 
|  |  | 
|  | const ULONG TF_DEFAULT_SELECTION =  TS_DEFAULT_SELECTION; | 
|  |  | 
|  | HRESULT GetSelection( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ULONG ulIndex, | 
|  | [in] ULONG ulCount, | 
|  | [out, size_is(ulCount), length_is(*pcFetched)] TF_SELECTION *pSelection, | 
|  | [out] ULONG *pcFetched); | 
|  |  | 
|  | HRESULT SetSelection( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ULONG ulCount, | 
|  | [in, size_is(ulCount)] const TF_SELECTION *pSelection); | 
|  |  | 
|  | HRESULT GetStart( | 
|  | [in] TfEditCookie ec, | 
|  | [out] ITfRange **ppStart); | 
|  |  | 
|  | HRESULT GetEnd( | 
|  | [in] TfEditCookie ec, | 
|  | [out] ITfRange **ppEnd); | 
|  |  | 
|  | typedef [uuid(bc7d979a-846a-444d-afef-0a9bfa82b961)] TS_STATUS TF_STATUS; | 
|  | const DWORD TF_SD_READONLY    = TS_SD_READONLY; | 
|  | const DWORD TF_SD_LOADING     = TS_SD_LOADING; | 
|  | const DWORD TF_SS_DISJOINTSEL = TS_SS_DISJOINTSEL; | 
|  | const DWORD TF_SS_REGIONS     = TS_SS_REGIONS; | 
|  | const DWORD TF_SS_TRANSITORY  = TS_SS_TRANSITORY; | 
|  |  | 
|  |  | 
|  | HRESULT GetActiveView( | 
|  | [out] ITfContextView **ppView); | 
|  |  | 
|  | HRESULT EnumViews( | 
|  | [out] IEnumTfContextViews **ppEnum); | 
|  |  | 
|  | HRESULT GetStatus( | 
|  | [out] TF_STATUS *pdcs); | 
|  |  | 
|  | HRESULT GetProperty( | 
|  | [in] REFGUID guidProp, | 
|  | [out] ITfProperty **ppProp); | 
|  |  | 
|  | HRESULT GetAppProperty( | 
|  | [in] REFGUID guidProp, | 
|  | [out] ITfReadOnlyProperty **ppProp); | 
|  |  | 
|  | HRESULT TrackProperties( | 
|  | [in, size_is(cProp)] const GUID **prgProp, | 
|  | [in] ULONG cProp, | 
|  | [in, size_is(cAppProp)] const GUID **prgAppProp, | 
|  | [in] ULONG cAppProp, | 
|  | [out] ITfReadOnlyProperty **ppProperty); | 
|  |  | 
|  | HRESULT EnumProperties( | 
|  | [out] IEnumTfProperties **ppEnum); | 
|  |  | 
|  | HRESULT GetDocumentMgr( | 
|  | [out] ITfDocumentMgr **ppDm); | 
|  |  | 
|  | HRESULT CreateRangeBackup( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange, | 
|  | [out] ITfRangeBackup **ppBackup); | 
|  |  | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(4ea48a35-60ae-446f-8fd6-e6a8d82459f7), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfSource : IUnknown | 
|  | { | 
|  | HRESULT AdviseSink( | 
|  | [in] REFIID riid, | 
|  | [in, iid_is(riid)] IUnknown *punk, | 
|  | [out] DWORD *pdwCookie); | 
|  |  | 
|  | HRESULT UnadviseSink( | 
|  | [in] DWORD dwCookie); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(1F02B6C5-7842-4EE6-8A0B-9A24183A95CA), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfInputProcessorProfiles : IUnknown | 
|  | { | 
|  | HRESULT Register( | 
|  | [in] REFCLSID rclsid); | 
|  |  | 
|  | HRESULT Unregister( | 
|  | [in] REFCLSID rclsid); | 
|  |  | 
|  | HRESULT AddLanguageProfile( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfile, | 
|  | [in, size_is(cchDesc)] const WCHAR *pchDesc, | 
|  | [in] ULONG cchDesc, | 
|  | [in, size_is(cchFile)] const WCHAR *pchIconFile, | 
|  | [in] ULONG cchFile, | 
|  | [in] ULONG uIconIndex); | 
|  |  | 
|  | HRESULT RemoveLanguageProfile( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfile); | 
|  |  | 
|  | HRESULT EnumInputProcessorInfo( | 
|  | [out] IEnumGUID **ppEnum); | 
|  |  | 
|  | HRESULT GetDefaultLanguageProfile( | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID catid, | 
|  | [out] CLSID *pclsid, | 
|  | [out] GUID *pguidProfile); | 
|  |  | 
|  | HRESULT SetDefaultLanguageProfile( | 
|  | [in] LANGID langid, | 
|  | [in] REFCLSID rclsid, | 
|  | [in] REFGUID guidProfiles); | 
|  |  | 
|  | HRESULT ActivateLanguageProfile( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfiles); | 
|  |  | 
|  | HRESULT GetActiveLanguageProfile( | 
|  | [in] REFCLSID rclsid, | 
|  | [out] LANGID *plangid, | 
|  | [out] GUID *pguidProfile); | 
|  |  | 
|  | HRESULT GetLanguageProfileDescription( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfile, | 
|  | [out] BSTR *pbstrProfile); | 
|  |  | 
|  | HRESULT GetCurrentLanguage( | 
|  | [out] LANGID *plangid); | 
|  |  | 
|  | HRESULT ChangeCurrentLanguage( | 
|  | [in] LANGID langid); | 
|  |  | 
|  | HRESULT GetLanguageList( | 
|  | [out] LANGID **ppLangId, | 
|  | [out] ULONG *pulCount); | 
|  |  | 
|  | HRESULT EnumLanguageProfiles( | 
|  | [in] LANGID langid, | 
|  | [out] IEnumTfLanguageProfiles **ppEnum); | 
|  |  | 
|  | HRESULT EnableLanguageProfile( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfile, | 
|  | [in] BOOL fEnable); | 
|  |  | 
|  | HRESULT IsEnabledLanguageProfile( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfile, | 
|  | [out] BOOL *pfEnable); | 
|  |  | 
|  | HRESULT EnableLanguageProfileByDefault( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfile, | 
|  | [in] BOOL fEnable); | 
|  |  | 
|  | HRESULT SubstituteKeyboardLayout( | 
|  | [in] REFCLSID rclsid, | 
|  | [in] LANGID langid, | 
|  | [in] REFGUID guidProfile, | 
|  | [in] HKL hKL); | 
|  | }; | 
|  |  | 
|  | typedef [uuid(c4cc07f1-80cc-4a7b-bc54-98512782cbe3)] | 
|  | enum { | 
|  | TF_LS_NONE      = 0, | 
|  | TF_LS_SOLID     = 1, | 
|  | TF_LS_DOT       = 2, | 
|  | TF_LS_DASH      = 3, | 
|  | TF_LS_SQUIGGLE  = 4 | 
|  | } TF_DA_LINESTYLE; | 
|  |  | 
|  | typedef [uuid(d9b92e21-084a-401b-9c64-1e6dad91a1ab)] | 
|  | enum { | 
|  | TF_CT_NONE      = 0, | 
|  | TF_CT_SYSCOLOR  = 1, | 
|  | TF_CT_COLORREF  = 2 | 
|  | } TF_DA_COLORTYPE; | 
|  |  | 
|  | typedef [uuid(90d0cb5e-6520-4a0f-b47c-c39bd955f0d6)] | 
|  | struct TF_DA_COLOR { | 
|  | TF_DA_COLORTYPE type; | 
|  | [switch_type(TF_DA_COLORTYPE), switch_is(type)] | 
|  | union { | 
|  | [case(TF_CT_SYSCOLOR)] int nIndex; | 
|  | [case(TF_CT_COLORREF)] COLORREF cr; | 
|  | }; | 
|  | } TF_DA_COLOR; | 
|  |  | 
|  | typedef [uuid(33d2fe4b-6c24-4f67-8d75-3bc1819e4126)] | 
|  | enum { | 
|  | TF_ATTR_INPUT                = 0, | 
|  | TF_ATTR_TARGET_CONVERTED     = 1, | 
|  | TF_ATTR_CONVERTED            = 2, | 
|  | TF_ATTR_TARGET_NOTCONVERTED  = 3, | 
|  | TF_ATTR_INPUT_ERROR          = 4, | 
|  | TF_ATTR_FIXEDCONVERTED       = 5, | 
|  | TF_ATTR_OTHER                = -1 | 
|  | } TF_DA_ATTR_INFO; | 
|  |  | 
|  | typedef [uuid(1bf1c305-419b-4182-a4d2-9bfadc3f021f)] | 
|  | struct TF_DISPLAYATTRIBUTE { | 
|  | TF_DA_COLOR      crText; | 
|  | TF_DA_COLOR      crBk; | 
|  | TF_DA_LINESTYLE  lsStyle; | 
|  | BOOL             fBoldLine; | 
|  | TF_DA_COLOR      crLine; | 
|  | TF_DA_ATTR_INFO  bAttr; | 
|  | } TF_DISPLAYATTRIBUTE; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(70528852-2f26-4aea-8c96-215150578932), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfDisplayAttributeInfo : IUnknown | 
|  | { | 
|  | HRESULT GetGUID([out] GUID *pguid); | 
|  |  | 
|  | HRESULT GetDescription([out] BSTR *pbstrDesc); | 
|  |  | 
|  | HRESULT GetAttributeInfo([out] TF_DISPLAYATTRIBUTE *pda); | 
|  |  | 
|  | HRESULT SetAttributeInfo([in] const TF_DISPLAYATTRIBUTE *pda); | 
|  |  | 
|  | HRESULT Reset(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(7cef04d7-cb75-4e80-a7ab-5f5bc7d332de), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IEnumTfDisplayAttributeInfo : IUnknown | 
|  | { | 
|  | HRESULT Clone([out] IEnumTfDisplayAttributeInfo **ppEnum); | 
|  |  | 
|  | HRESULT Next( | 
|  | [in] ULONG ulCount, | 
|  | [out, size_is(ulCount), length_is(*pcFetched)] ITfDisplayAttributeInfo **rgInfo, | 
|  | [out] ULONG *pcFetched); | 
|  |  | 
|  | HRESULT Reset(); | 
|  |  | 
|  | HRESULT Skip([in] ULONG ulCount); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(8ded7393-5db1-475c-9e71-a39111b0ff67), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfDisplayAttributeMgr : IUnknown | 
|  | { | 
|  | HRESULT OnUpdateInfo(); | 
|  |  | 
|  | HRESULT EnumDisplayAttributeInfo([out] IEnumTfDisplayAttributeInfo **ppEnum); | 
|  |  | 
|  | HRESULT GetDisplayAttributeInfo( | 
|  | [in] REFGUID guid, | 
|  | [out] ITfDisplayAttributeInfo **ppInfo, | 
|  | [out] CLSID *pclsidOwner); | 
|  |  | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(c3acefb5-f69d-4905-938f-fcadcf4be830), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfCategoryMgr : IUnknown | 
|  | { | 
|  | HRESULT RegisterCategory([in] REFCLSID rclsid, | 
|  | [in] REFGUID rcatid, | 
|  | [in] REFGUID rguid); | 
|  |  | 
|  | HRESULT UnregisterCategory([in] REFCLSID rclsid, | 
|  | [in] REFGUID rcatid, | 
|  | [in] REFGUID rguid); | 
|  |  | 
|  | HRESULT EnumCategoriesInItem([in] REFGUID rguid, | 
|  | [out] IEnumGUID **ppEnum); | 
|  |  | 
|  | HRESULT EnumItemsInCategory([in] REFGUID rcatid, | 
|  | [out] IEnumGUID **ppEnum); | 
|  |  | 
|  | HRESULT FindClosestCategory([in] REFGUID rguid, | 
|  | [out] GUID *pcatid, | 
|  | [in, size_is(ulCount)] const GUID **ppcatidList, | 
|  | [in] ULONG ulCount); | 
|  |  | 
|  | HRESULT RegisterGUIDDescription([in] REFCLSID rclsid, | 
|  | [in] REFGUID rguid, | 
|  | [in, size_is(cch)] const WCHAR *pchDesc, | 
|  | [in] ULONG cch); | 
|  |  | 
|  | HRESULT UnregisterGUIDDescription([in] REFCLSID rclsid, | 
|  | [in] REFGUID rguid); | 
|  |  | 
|  | HRESULT GetGUIDDescription([in] REFGUID rguid, | 
|  | [out] BSTR *pbstrDesc); | 
|  |  | 
|  | HRESULT RegisterGUIDDWORD([in] REFCLSID rclsid, | 
|  | [in] REFGUID rguid, | 
|  | [in] DWORD dw); | 
|  |  | 
|  | HRESULT UnregisterGUIDDWORD([in] REFCLSID rclsid, | 
|  | [in] REFGUID rguid); | 
|  |  | 
|  | HRESULT GetGUIDDWORD([in] REFGUID rguid, | 
|  | [out] DWORD *pdw); | 
|  |  | 
|  | HRESULT RegisterGUID([in] REFGUID rguid, | 
|  | [out] TfGuidAtom *pguidatom); | 
|  |  | 
|  | HRESULT GetGUID([in] TfGuidAtom guidatom, | 
|  | [out] GUID *pguid); | 
|  |  | 
|  | HRESULT IsEqualTfGuidAtom([in] TfGuidAtom guidatom, | 
|  | [in] REFGUID rguid, | 
|  | [out] BOOL *pfEqual); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(8127d409-ccd3-4683-967a-b43d5b482bf7), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfTextEditSink : IUnknown | 
|  | { | 
|  | HRESULT OnEndEdit( | 
|  | [in] ITfContext *pic, | 
|  | [in] TfEditCookie ecReadOnly, | 
|  | [in] ITfEditRecord *pEditRecord); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(5F20AA40-B57A-4F34-96AB-3576F377CC79), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfContextOwnerCompositionSink : IUnknown | 
|  | { | 
|  | HRESULT OnStartComposition( | 
|  | [in] ITfCompositionView *pComposition, | 
|  | [out] BOOL *pfOk); | 
|  |  | 
|  | HRESULT OnUpdateComposition( | 
|  | [in] ITfCompositionView *pComposition, | 
|  | [in] ITfRange *pRangeNew); | 
|  |  | 
|  | HRESULT OnEndComposition( | 
|  | [in] ITfCompositionView *pComposition); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(3d61bf11-ac5f-42c8-a4cb-931bcc28c744), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IEnumTfLanguageProfiles : IUnknown | 
|  | { | 
|  | HRESULT Clone( | 
|  | [out] IEnumTfLanguageProfiles **ppEnum); | 
|  |  | 
|  | HRESULT Next( | 
|  | [in] ULONG ulCount, | 
|  | [out, size_is(ulCount), length_is(*pcFetch)] TF_LANGUAGEPROFILE *pProfile, | 
|  | [out] ULONG *pcFetch); | 
|  |  | 
|  | HRESULT Reset(); | 
|  |  | 
|  | HRESULT Skip( | 
|  | [in] ULONG ulCount); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(aa80e7f7-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfTextInputProcessor : IUnknown | 
|  | { | 
|  | HRESULT Activate( | 
|  | [in] ITfThreadMgr *ptim, | 
|  | [in] TfClientId tid); | 
|  |  | 
|  | HRESULT Deactivate(); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(aa80e80e-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfThreadMgrEventSink : IUnknown | 
|  | { | 
|  | HRESULT OnInitDocumentMgr( | 
|  | [in] ITfDocumentMgr *pdim); | 
|  |  | 
|  | HRESULT OnUninitDocumentMgr( | 
|  | [in] ITfDocumentMgr *pdim); | 
|  |  | 
|  | HRESULT OnSetFocus( | 
|  | [in] ITfDocumentMgr *pdimFocus, | 
|  | [in] ITfDocumentMgr *pdimPrevFocus); | 
|  |  | 
|  | HRESULT OnPushContext( | 
|  | [in] ITfContext *pic); | 
|  |  | 
|  | HRESULT OnPopContext( | 
|  | [in] ITfContext *pic); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(aa80e7f0-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfKeystrokeMgr : IUnknown | 
|  | { | 
|  | HRESULT AdviseKeyEventSink( | 
|  | [in] TfClientId tid, | 
|  | [in] ITfKeyEventSink *pSink, | 
|  | [in] BOOL fForeground); | 
|  |  | 
|  | HRESULT UnadviseKeyEventSink( | 
|  | [in] TfClientId tid); | 
|  |  | 
|  | HRESULT GetForeground( | 
|  | [out] CLSID *pclsid); | 
|  |  | 
|  | HRESULT TestKeyDown( | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT TestKeyUp( | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT KeyDown( | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT KeyUp( | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT GetPreservedKey( | 
|  | [in] ITfContext *pic, | 
|  | [in] const TF_PRESERVEDKEY *pprekey, | 
|  | [out] GUID *pguid); | 
|  |  | 
|  | HRESULT IsPreservedKey( | 
|  | [in] REFGUID rguid, | 
|  | [in] const TF_PRESERVEDKEY *pprekey, | 
|  | [out] BOOL *pfRegistered); | 
|  |  | 
|  | HRESULT PreserveKey( | 
|  | [in] TfClientId tid, | 
|  | [in] REFGUID rguid, | 
|  | [in] const TF_PRESERVEDKEY *prekey, | 
|  | [in, size_is(cchDesc)] const WCHAR *pchDesc, | 
|  | [in] ULONG cchDesc); | 
|  |  | 
|  | HRESULT UnpreserveKey( | 
|  | [in] REFGUID rguid, | 
|  | [in] const TF_PRESERVEDKEY *pprekey); | 
|  |  | 
|  | HRESULT SetPreservedKeyDescription( | 
|  | [in] REFGUID rguid, | 
|  | [in, size_is(cchDesc)] const WCHAR *pchDesc, | 
|  | [in] ULONG cchDesc); | 
|  |  | 
|  | HRESULT GetPreservedKeyDescription( | 
|  | [in] REFGUID rguid, | 
|  | [out] BSTR *pbstrDesc); | 
|  |  | 
|  | HRESULT SimulatePreservedKey( | 
|  | [in] ITfContext *pic, | 
|  | [in] REFGUID rguid, | 
|  | [out] BOOL *pfEaten); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(aa80e7f5-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfKeyEventSink : IUnknown | 
|  | { | 
|  | HRESULT OnSetFocus( | 
|  | [in] BOOL fForeground); | 
|  |  | 
|  | HRESULT OnTestKeyDown( | 
|  | [in] ITfContext *pic, | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT OnTestKeyUp( | 
|  | [in] ITfContext *pic, | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT OnKeyDown( | 
|  | [in] ITfContext *pic, | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT OnKeyUp( | 
|  | [in] ITfContext *pic, | 
|  | [in] WPARAM wParam, | 
|  | [in] LPARAM lParam, | 
|  | [out] BOOL *pfEaten); | 
|  |  | 
|  | HRESULT OnPreservedKey( | 
|  | [in] ITfContext *pic, | 
|  | [in] REFGUID rguid, | 
|  | [out] BOOL *pfEaten); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(8f1b8ad8-0b6b-4874-90c5-bd76011e8f7c), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfMessagePump : IUnknown | 
|  | { | 
|  | HRESULT PeekMessageA( | 
|  | [out] LPMSG pMsg, | 
|  | [in] HWND hwnd, | 
|  | [in] UINT wMsgFilterMin, | 
|  | [in] UINT wMsgFilterMax, | 
|  | [in] UINT wRemoveMsg, | 
|  | [out] BOOL *pfResult); | 
|  |  | 
|  | HRESULT GetMessageA( | 
|  | [out] LPMSG pMsg, | 
|  | [in] HWND hwnd, | 
|  | [in] UINT wMsgFilterMin, | 
|  | [in] UINT wMsgFilterMax, | 
|  | [out] BOOL *pfResult); | 
|  |  | 
|  | HRESULT PeekMessageW( | 
|  | [out] LPMSG pMsg, | 
|  | [in] HWND hwnd, | 
|  | [in] UINT wMsgFilterMin, | 
|  | [in] UINT wMsgFilterMax, | 
|  | [in] UINT wRemoveMsg, | 
|  | [out] BOOL *pfResult); | 
|  |  | 
|  | HRESULT GetMessageW( | 
|  | [out] LPMSG pMsg, | 
|  | [in] HWND hwnd, | 
|  | [in] UINT wMsgFilterMin, | 
|  | [in] UINT wMsgFilterMax, | 
|  | [out] BOOL *pfResult); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(d60a7b49-1b9f-4be2-b702-47e9dc05dec3), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfClientId : IUnknown | 
|  | { | 
|  | HRESULT GetClientId( | 
|  | [in] REFCLSID rclsid, | 
|  | [out] TfClientId *ptid); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(43c9fe15-f494-4c17-9de2-b8a4ac350aa8), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfLanguageProfileNotifySink : IUnknown | 
|  | { | 
|  | HRESULT OnLanguageChange( | 
|  | [in] LANGID langid, | 
|  | [out] BOOL *pfAccept); | 
|  |  | 
|  | HRESULT OnLanguageChanged(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(aa80e803-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfEditSession : IUnknown | 
|  | { | 
|  | HRESULT DoEditSession( | 
|  | [in] TfEditCookie ec); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(aa80e7ff-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfRange : IUnknown | 
|  | { | 
|  | const WCHAR TF_CHAR_EMBEDDED     = TS_CHAR_EMBEDDED; | 
|  |  | 
|  | typedef [uuid(cf610f06-2882-46f6-abe5-298568b664c4)] enum { TF_GRAVITY_BACKWARD = 0, TF_GRAVITY_FORWARD = 1 } TfGravity; | 
|  |  | 
|  | typedef [uuid(1e512533-bbdc-4530-9a8e-a1dc0af67468)] enum { TF_SD_BACKWARD = 0, TF_SD_FORWARD = 1 } TfShiftDir; | 
|  |  | 
|  | const DWORD TF_HF_OBJECT         = 1; | 
|  | const DWORD TF_TF_MOVESTART      = 1; | 
|  | const DWORD TF_TF_IGNOREEND      = 2; | 
|  | const DWORD TF_ST_CORRECTION     = 1; | 
|  | const DWORD TF_IE_CORRECTION     = 1; | 
|  |  | 
|  | typedef [uuid(49930d51-7d93-448c-a48c-fea5dac192b1)] struct  TF_HALTCOND | 
|  | { | 
|  | ITfRange *pHaltRange; | 
|  | TfAnchor aHaltPos; | 
|  | DWORD dwFlags; | 
|  | } TF_HALTCOND; | 
|  |  | 
|  | HRESULT GetText( | 
|  | [in] TfEditCookie ec, | 
|  | [in] DWORD dwFlags, | 
|  | [out, size_is(cchMax), length_is(*pcch)] WCHAR *pchText, | 
|  | [in] ULONG cchMax, | 
|  | [out] ULONG *pcch); | 
|  |  | 
|  | HRESULT SetText( | 
|  | [in] TfEditCookie ec, | 
|  | [in] DWORD dwFlags, | 
|  | [in, size_is(cch), unique] const WCHAR *pchText, | 
|  | [in] LONG cch); | 
|  |  | 
|  | HRESULT GetFormattedText( | 
|  | [in] TfEditCookie ec, | 
|  | [out] IDataObject **ppDataObject); | 
|  |  | 
|  | HRESULT GetEmbedded( | 
|  | [in] TfEditCookie ec, | 
|  | [in] REFGUID rguidService, | 
|  | [in] REFIID riid, | 
|  | [out, iid_is(riid)] IUnknown **ppunk); | 
|  |  | 
|  | HRESULT InsertEmbedded( | 
|  | [in] TfEditCookie ec, | 
|  | [in] DWORD dwFlags, | 
|  | [in] IDataObject *pDataObject); | 
|  |  | 
|  | HRESULT ShiftStart( | 
|  | [in] TfEditCookie ec, | 
|  | [in] LONG cchReq, | 
|  | [out] LONG *pcch, | 
|  | [in, unique] const TF_HALTCOND *pHalt); | 
|  |  | 
|  | HRESULT ShiftEnd( | 
|  | [in] TfEditCookie ec, | 
|  | [in] LONG cchReq, | 
|  | [out] LONG *pcch, | 
|  | [in, unique] const TF_HALTCOND *pHalt); | 
|  |  | 
|  | HRESULT ShiftStartToRange( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange, | 
|  | [in] TfAnchor aPos); | 
|  |  | 
|  | HRESULT ShiftEndToRange( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange, | 
|  | [in] TfAnchor aPos); | 
|  |  | 
|  | HRESULT ShiftStartRegion( | 
|  | [in] TfEditCookie ec, | 
|  | [in] TfShiftDir dir, | 
|  | [out] BOOL *pfNoRegion); | 
|  |  | 
|  | HRESULT ShiftEndRegion( | 
|  | [in] TfEditCookie ec, | 
|  | [in] TfShiftDir dir, | 
|  | [out] BOOL *pfNoRegion); | 
|  |  | 
|  | HRESULT IsEmpty( | 
|  | [in] TfEditCookie ec, | 
|  | [out] BOOL *pfEmpty); | 
|  |  | 
|  | HRESULT Collapse( | 
|  | [in] TfEditCookie ec, | 
|  | [in] TfAnchor aPos); | 
|  |  | 
|  | HRESULT IsEqualStart( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pWith, | 
|  | [in] TfAnchor aPos, | 
|  | [out] BOOL *pfEqual); | 
|  |  | 
|  | HRESULT IsEqualEnd( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pWith, | 
|  | [in] TfAnchor aPos, | 
|  | [out] BOOL *pfEqual); | 
|  |  | 
|  | HRESULT CompareStart( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pWith, | 
|  | [in] TfAnchor aPos, | 
|  | [out] LONG *plResult); | 
|  |  | 
|  | HRESULT CompareEnd( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pWith, | 
|  | [in] TfAnchor aPos, | 
|  | [out] LONG *plResult); | 
|  |  | 
|  | HRESULT AdjustForInsert( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ULONG cchInsert, | 
|  | [out] BOOL *pfInsertOk); | 
|  |  | 
|  | HRESULT GetGravity( | 
|  | [out] TfGravity *pgStart, | 
|  | [out] TfGravity *pgEnd); | 
|  |  | 
|  | HRESULT SetGravity( | 
|  | [in] TfEditCookie ec, | 
|  | [in] TfGravity gStart, | 
|  | [in] TfGravity gEnd); | 
|  |  | 
|  | HRESULT Clone( | 
|  | [out] ITfRange **ppClone); | 
|  |  | 
|  | HRESULT GetContext( | 
|  | [out] ITfContext **ppContext); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(057a6296-029b-4154-b79a-0d461d4ea94c), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfRangeACP : ITfRange | 
|  | { | 
|  | HRESULT GetExtent([out] LONG *pacpAnchor, | 
|  | [out] LONG *pcch); | 
|  |  | 
|  | HRESULT SetExtent([in] LONG acpAnchor, | 
|  | [in] LONG cch); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(55ce16ba-3014-41c1-9ceb-fade1446ac6c), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfInsertAtSelection : IUnknown | 
|  | { | 
|  | const DWORD TF_IAS_NOQUERY   = 0x1; | 
|  | const DWORD TF_IAS_QUERYONLY = 0x2; | 
|  | const DWORD TF_IAS_NO_DEFAULT_COMPOSITION = 0x80000000; | 
|  |  | 
|  | HRESULT InsertTextAtSelection( | 
|  | [in] TfEditCookie ec, | 
|  | [in] DWORD dwFlags, | 
|  | [in, size_is(cch)] const WCHAR *pchText, | 
|  | [in] LONG cch, | 
|  | [out] ITfRange **ppRange); | 
|  |  | 
|  | HRESULT InsertEmbeddedAtSelection( | 
|  | [in] TfEditCookie ec, | 
|  | [in] DWORD dwFlags, | 
|  | [in] IDataObject *pDataObject, | 
|  | [out] ITfRange **ppRange); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(6834b120-88cb-11d2-bf45-00105a2799b5), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfPropertyStore : IUnknown | 
|  | { | 
|  | const DWORD TF_TU_CORRECTION = 0x1; | 
|  |  | 
|  | HRESULT GetType([out] GUID *pguid); | 
|  |  | 
|  | HRESULT GetDataType([out] DWORD *pdwReserved); | 
|  |  | 
|  | HRESULT GetData([out] VARIANT *pvarValue); | 
|  |  | 
|  | HRESULT OnTextUpdated( | 
|  | [in] DWORD dwFlags, | 
|  | [in] ITfRange *pRangeNew, | 
|  | [out] BOOL *pfAccept); | 
|  |  | 
|  | HRESULT Shrink( | 
|  | [in] ITfRange *pRangeNew, | 
|  | [out] BOOL *pfFree); | 
|  |  | 
|  | HRESULT Divide( | 
|  | [in] ITfRange *pRangeThis, | 
|  | [in] ITfRange *pRangeNew, | 
|  | [out] ITfPropertyStore **ppPropStore); | 
|  |  | 
|  | HRESULT Clone( | 
|  | [out] ITfPropertyStore **pPropStore); | 
|  |  | 
|  | HRESULT GetPropertyRangeCreator( | 
|  | [out] CLSID *pclsid); | 
|  |  | 
|  | HRESULT Serialize( | 
|  | [in] IStream *pStream, | 
|  | [out] ULONG *pcb); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(f99d3f40-8e32-11d2-bf46-00105a2799b5), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IEnumTfRanges : IUnknown | 
|  | { | 
|  | HRESULT Clone([out] IEnumTfRanges **ppEnum); | 
|  |  | 
|  | HRESULT Next( | 
|  | [in] ULONG ulCount, | 
|  | [out, size_is(ulCount), length_is(*pcFetched)] ITfRange **ppRange, | 
|  | [out] ULONG *pcFetched); | 
|  |  | 
|  | HRESULT Reset(); | 
|  |  | 
|  | HRESULT Skip(ULONG ulCount); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(5efd22Ba-7838-46cb-88e2-cadb14124f8f), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IEnumITfCompositionView : IUnknown | 
|  | { | 
|  | HRESULT Clone([out] IEnumITfCompositionView **ppEnum); | 
|  |  | 
|  | HRESULT Next( | 
|  | [in] ULONG ulCount, | 
|  | [out, size_is(ulCount), length_is(*pcFetched)] ITfCompositionView **rgCompositionView, | 
|  | [out] ULONG *pcFetched); | 
|  |  | 
|  | HRESULT Reset(); | 
|  |  | 
|  | HRESULT Skip([in] ULONG ulCount); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(20168d64-5a8f-4a5a-b7bd-cfa29f4D0fd9), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfComposition : IUnknown | 
|  | { | 
|  | HRESULT GetRange([out] ITfRange **ppRange); | 
|  |  | 
|  | HRESULT ShiftStart( | 
|  | [in] TfEditCookie ecWrite, | 
|  | [in] ITfRange *pNewStart); | 
|  |  | 
|  | HRESULT ShiftEnd( | 
|  | [in] TfEditCookie ecWrite, | 
|  | [in] ITfRange *pNewEnd); | 
|  |  | 
|  | HRESULT EndComposition([in] TfEditCookie ecWrite); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(a781718c-579a-4b15-a280-32b8577acc5e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfCompositionSink : IUnknown | 
|  | { | 
|  | HRESULT OnCompositionTerminated( | 
|  | [in] TfEditCookie ecWrite, | 
|  | [in] ITfComposition *pComposition); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(d40C8aae-aC92-4fc7-9a11-0ee0e23aa39b), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfContextComposition : IUnknown | 
|  | { | 
|  | HRESULT StartComposition( | 
|  | [in] TfEditCookie ecWrite, | 
|  | [in] ITfRange *pCompositionRange, | 
|  | [in] ITfCompositionSink *pSink, | 
|  | [out] ITfComposition **ppComposition); | 
|  |  | 
|  | HRESULT EnumCompositions([out] IEnumITfCompositionView **ppEnum); | 
|  |  | 
|  | HRESULT FindComposition( | 
|  | [in] TfEditCookie ecRead, | 
|  | [in] ITfRange *pTestRange, | 
|  | [out] IEnumITfCompositionView **ppEnum); | 
|  |  | 
|  | HRESULT TakeOwnership( | 
|  | [in] TfEditCookie ecWrite, | 
|  | [in] ITfCompositionView *pComposition, | 
|  | [in] ITfCompositionSink *pSink, | 
|  | [out] ITfComposition **ppComposition); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(86462810-593b-4916-9764-19c08e9ce110), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfContextOwnerCompositionServices : ITfContextComposition | 
|  | { | 
|  | HRESULT TerminateComposition([in] ITfCompositionView *pComposition); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(17d49a3d-f8b8-4b2f-b254-52319dd64c53), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfReadOnlyProperty : IUnknown | 
|  | { | 
|  | HRESULT GetType([out] GUID *pguid); | 
|  |  | 
|  | HRESULT EnumRanges( | 
|  | [in] TfEditCookie ec, | 
|  | [out] IEnumTfRanges **ppEnum, | 
|  | [in] ITfRange *pTargetRange); | 
|  |  | 
|  | HRESULT GetValue( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange, | 
|  | [out] VARIANT *pvarValue); | 
|  |  | 
|  | HRESULT GetContext([out] ITfContext **ppContext); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(e2449660-9542-11d2-bf46-00105a2799b5), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfProperty : ITfReadOnlyProperty | 
|  | { | 
|  | HRESULT FindRange( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange, | 
|  | [out] ITfRange **ppRange, | 
|  | [in] TfAnchor aPos); | 
|  |  | 
|  | HRESULT SetValueStore( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange, | 
|  | [in] ITfPropertyStore *pPropStore); | 
|  |  | 
|  | HRESULT SetValue( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange, | 
|  | [in] const VARIANT *pvarValue); | 
|  |  | 
|  | HRESULT Clear( | 
|  | [in] TfEditCookie ec, | 
|  | [in] ITfRange *pRange); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(bb08f7a9-607a-4384-8623-056892b64371), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfCompartment : IUnknown | 
|  | { | 
|  | HRESULT SetValue( | 
|  | [in] TfClientId tid, | 
|  | [in] const VARIANT *pvarValue); | 
|  |  | 
|  | HRESULT GetValue( | 
|  | [out] VARIANT *pvarValue); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(7dcf57ac-18ad-438b-824d-979bffb74b7c), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfCompartmentMgr : IUnknown | 
|  | { | 
|  | HRESULT GetCompartment( | 
|  | [in] REFGUID rguid, | 
|  | [out] ITfCompartment **ppcomp); | 
|  |  | 
|  | HRESULT ClearCompartment( | 
|  | [in] TfClientId tid, | 
|  | [in] REFGUID rguid); | 
|  |  | 
|  | HRESULT EnumCompartments( | 
|  | [out] IEnumGUID **ppEnum); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(743abd5f-f26d-48df-8cc5-238492419b64), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfCompartmentEventSink : IUnknown | 
|  | { | 
|  | HRESULT OnChange( | 
|  | [in] REFGUID rguid); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(8f1a7ea6-1654-4502-a86e-b2902344d507), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IEnumTfContexts : IUnknown | 
|  | { | 
|  | HRESULT Clone( | 
|  | [out] IEnumTfContexts **ppEnum); | 
|  |  | 
|  | HRESULT Next( | 
|  | [in] ULONG ulCount, | 
|  | [out, size_is(ulCount), length_is(*pcFetched)] ITfContext **rgContext, | 
|  | [out] ULONG *pcFetched); | 
|  |  | 
|  | HRESULT Reset(); | 
|  |  | 
|  | HRESULT Skip( | 
|  | [in] ULONG ulCount); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(aa80e808-2021-11d2-93e0-0060b067b86e), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IEnumTfDocumentMgrs : IUnknown | 
|  | { | 
|  | HRESULT Clone( | 
|  | [out] IEnumTfDocumentMgrs **ppEnum); | 
|  |  | 
|  | HRESULT Next( | 
|  | [in] ULONG ulCount, | 
|  | [out, size_is(ulCount), length_is(*pcFetched)] ITfDocumentMgr **rgDocumentMgr, | 
|  | [out] ULONG *pcFetched); | 
|  |  | 
|  | HRESULT Reset(); | 
|  |  | 
|  | HRESULT Skip( | 
|  | [in] ULONG ulCount); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(73131f9c-56a9-49dd-b0ee-d046633f7528), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfSourceSingle : IUnknown | 
|  | { | 
|  | HRESULT AdviseSingleSink( | 
|  | [in] TfClientId tid, | 
|  | [in] REFIID riid, | 
|  | [in, iid_is(riid)] IUnknown *punk); | 
|  |  | 
|  | HRESULT UnadviseSingleSink( | 
|  | [in] TfClientId tid, | 
|  | [in] REFIID riid); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(c0f1db0c-3a20-405c-a303-96b6010a885f), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITfThreadFocusSink : IUnknown | 
|  | { | 
|  | HRESULT OnSetThreadFocus(); | 
|  |  | 
|  | HRESULT OnKillThreadFocus(); | 
|  | }; |