wine/include/msctf.idl
2010-02-17 10:55:45 +01:00

1361 lines
34 KiB
Text

/*
* 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("DEFINE_GUID(CLSID_TF_DisplayAttributeMgr,0x3ce74de4,0x53d3,0x4d74,0x8b,0x83,0x43,0x1b,0x38,0x28,0xba,0x53);")
/* 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();
};