/* * 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 ") 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(); };