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("HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim);")
cpp_quote("HRESULT WINAPI TF_CreateInputProcessorProfiles(ITfInputProcessorProfiles **ppipr);")
cpp_quote("HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pppbm);")
+cpp_quote("HRESULT WINAPI TF_CreateLangBarItemMgr(ITfLangBarItemMgr **pplbim);")
+cpp_quote("HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist(void);")
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("#define TF_MOD_ON_KEYUP 0x0200")
cpp_quote("#define TF_MOD_IGNORE_ALL_MODIFIER 0x0400")
+cpp_quote("#define TF_PROFILETYPE_INPUTPROCESSOR 0x0001")
+cpp_quote("#define TF_PROFILETYPE_KEYBOARDLAYOUT 0x0002")
+
+cpp_quote("#define TF_IPSINK_FLAG_ACTIVE 0x0001")
+
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;
+cpp_quote("#if 0")
+typedef [uuid(4f5d560f-5ab5-4dde-8c4d-404592857ab0)] UINT_PTR HKL;
+cpp_quote("#endif")
+
+typedef [uuid(e26d9e1d-691e-4f29-90d7-338dcf1f8cef)] struct TF_PERSISTENT_PROPERTY_HEADER_ACP
+{
+ GUID guidType;
+ LONG ichStart;
+ LONG cch;
+ ULONG cb;
+ DWORD dwPrivate;
+ CLSID clsidTIP;
+} TF_PERSISTENT_PROPERTY_HEADER_ACP;
+
typedef [uuid(e1b5808d-1e46-4c19-84dc-68c5f5978cc8)] struct TF_LANGUAGEPROFILE
{
CLSID clsid;
typedef [uuid(5a886226-ae9a-489b-b991-2b1e25ee59a9)] enum { TF_ANCHOR_START = 0, TF_ANCHOR_END = 1 } TfAnchor;
+[
+ object,
+ uuid(101d6610-0990-11d3-8df0-00105a2799b5),
+ pointer_default(unique)
+]
+interface ITfFunctionProvider : IUnknown
+{
+ HRESULT GetType(
+ [out] GUID *guid);
+
+ HRESULT GetDescription(
+ [out] BSTR *desc);
+
+ HRESULT GetFunction(
+ [in] REFGUID guid,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **func);
+}
+
+[
+ object,
+ uuid(e4b24db0-0990-11d3-8df0-00105a2799b5),
+ pointer_default(unique)
+]
+interface IEnumTfFunctionProviders : IUnknown
+{
+ HRESULT Clone(
+ [out] IEnumTfFunctionProviders **ret);
+
+ HRESULT Next(
+ [in] ULONG count,
+ [out, size_is(count), length_is(*fetched)] ITfFunctionProvider **prov,
+ [out] ULONG *fetched);
+
+ HRESULT Reset();
+
+ HRESULT Skip(
+ [in] ULONG count);
+}
+
[
object,
uuid(aa80e801-2021-11d2-93e0-0060b067b86e),
HRESULT GetGlobalCompartment(
[out] ITfCompartmentMgr **ppCompMgr);
-};
+}
+
+[
+ object,
+ uuid(3e90ade3-7594-4cb0-bb58-69628f5f458c),
+ pointer_default(unique)
+]
+interface ITfThreadMgrEx : ITfThreadMgr
+{
+ HRESULT ActivateEx(
+ [out] TfClientId *id,
+ [in] DWORD flags);
+ HRESULT GetActiveFlags(
+ [out] DWORD *flags);
+}
[
object,
HRESULT EnumContexts(
[out] IEnumTfContexts **ppEnum);
-};
+}
+
+[
+ object,
+ uuid(2433bf8e-0f9b-435c-ba2c-180611978c30),
+ pointer_default(unique)
+]
+interface ITfContextView : IUnknown
+{
+ HRESULT GetRangeFromPoint(
+ [in] TfEditCookie cookie,
+ [in] const POINT *pt,
+ [in] DWORD flags,
+ [out] ITfRange **range);
+
+ HRESULT GetTextExt(
+ [in] TfEditCookie cookie,
+ [in] ITfRange *range,
+ [out] RECT *rect,
+ [out] BOOL *clipped);
+
+ HRESULT GetScreenExt(
+ [out] RECT *rect);
+
+ HRESULT GetWnd(
+ [out] HWND *hwnd);
+}
+
+[
+ object,
+ uuid(f0c0f8dd-cf38-44e1-bb0f-68cf0d551c78),
+ pointer_default(unique)
+]
+interface IEnumTfContextViews : IUnknown
+{
+ HRESULT Clone(
+ [out] IEnumTfContextViews **ret);
+
+ HRESULT Next(
+ [in] ULONG count,
+ [out, size_is(count), length_is(*fetched)] ITfContextView **views,
+ [out] ULONG *fetched);
+
+ HRESULT Reset();
+
+ HRESULT Skip(
+ [in] ULONG count);
+}
+
+[
+ object,
+ uuid(19188cb0-aca9-11d2-afc5-00105a2799b5),
+ pointer_default(unique)
+]
+interface IEnumTfProperties : IUnknown
+{
+ HRESULT Clone(
+ [out] IEnumTfProperties **ret);
+
+ HRESULT Next(
+ [in] ULONG count,
+ [out, size_is(count), length_is(*fetched)] ITfProperty **props,
+ [out] ULONG *fetched);
+
+ HRESULT Reset();
+
+ HRESULT Skip(
+ [in] ULONG count);
+}
+
+[
+ object,
+ uuid(463a506d-6992-49d2-9b88-93d55e70bb16),
+ pointer_default(unique)
+]
+interface ITfRangeBackup : IUnknown
+{
+ HRESULT Restore(
+ [in] TfEditCookie cookie,
+ [in] ITfRange *range);
+}
[
object,
[in] TfEditCookie ec,
[in] ITfRange *pRange,
[out] ITfRangeBackup **ppBackup);
+}
-};
+const DWORD TF_INVALID_COOKIE = 0xffffffff;
[
object,
HRESULT UnadviseSink(
[in] DWORD dwCookie);
-};
+}
[
object,
[in] LANGID langid,
[in] REFGUID guidProfile,
[in] HKL hKL);
-};
+}
+
+typedef [uuid(44d2825a-10e5-43b2-877f-6cb2f43b7e7e)]
+struct TF_INPUTPROCESSORPROFILE {
+ DWORD dwProfileType;
+ LANGID langid;
+ CLSID clsid;
+ GUID guidProfile;
+ GUID catid;
+ HKL hklSubstitute;
+ DWORD dwCaps;
+ HKL hkl;
+ DWORD dwFlags;
+} TF_INPUTPROCESSORPROFILE;
+
+[
+ object,
+ uuid(71c6e74d-0f28-11d8-a82a-00065b84435c),
+ pointer_default(unique)
+]
+interface IEnumTfInputProcessorProfiles : IUnknown
+{
+ HRESULT Clone(
+ [out] IEnumTfInputProcessorProfiles **ppEnum);
+
+ HRESULT Next(
+ [in] ULONG ulCount,
+ [out, size_is(ulCount), length_is(*pcFetch)] TF_INPUTPROCESSORPROFILE *pProfile,
+ [out] ULONG *pcFetch);
+
+ HRESULT Reset();
+
+ HRESULT Skip(
+ [in] ULONG ulCount);
+}
+
+[
+ object,
+ uuid(71c6e74c-0f28-11d8-a82a-00065b84435c),
+ pointer_default(unique)
+]
+interface ITfInputProcessorProfileMgr : IUnknown
+{
+ HRESULT ActivateProfile(
+ [in] DWORD dwProfileType,
+ [in] LANGID langid,
+ [in] REFCLSID clsid,
+ [in] REFGUID guidProfile,
+ [in] HKL hkl,
+ [in] DWORD dwFlags);
+
+ HRESULT DeactivateProfile(
+ [in] DWORD dwProfileType,
+ [in] LANGID langid,
+ [in] REFCLSID clsid,
+ [in] REFGUID guidProfile,
+ [in] HKL hkl,
+ [in] DWORD dwFlags);
+
+ HRESULT GetProfile(
+ [in] DWORD dwProfileType,
+ [in] LANGID langid,
+ [in] REFCLSID clsid,
+ [in] REFGUID guidProfile,
+ [in] HKL hkl,
+ [out] TF_INPUTPROCESSORPROFILE *pProfile);
+
+
+ HRESULT EnumProfiles(
+ [in] LANGID langid,
+ [out] IEnumTfInputProcessorProfiles **ppEnum);
+
+ HRESULT ReleaseInputProcessor(
+ [in] REFCLSID rclsid,
+ [in] DWORD dwFlags);
+
+ HRESULT RegisterProfile(
+ [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,
+ [in] HKL hklsubstitute,
+ [in] DWORD dwPreferredLayout,
+ [in] BOOL bEnabledByDefault,
+ [in] DWORD dwFlags);
+
+ HRESULT UnregisterProfile(
+ [in] REFCLSID rclsid,
+ [in] LANGID langid,
+ [in] REFGUID guidProfile,
+ [in] DWORD dwFlags);
+
+ HRESULT GetActiveProfile(
+ [in] REFGUID catid,
+ [out] TF_INPUTPROCESSORPROFILE *pProfile);
+}
typedef [uuid(c4cc07f1-80cc-4a7b-bc54-98512782cbe3)]
enum {
HRESULT IsEqualTfGuidAtom([in] TfGuidAtom guidatom,
[in] REFGUID rguid,
[out] BOOL *pfEqual);
-};
+}
+
+[
+ 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(42d4d099-7c1a-4a89-b836-6c6f22160df0),
+ pointer_default(unique)
+]
+interface ITfEditRecord : IUnknown
+{
+ const DWORD TF_GTP_INCL_TEXT = 0x1;
+
+ HRESULT GetSelectionStatus(
+ [out] BOOL *changed);
+
+ HRESULT GetTextAndPropertyUpdates(
+ [in] DWORD flags,
+ [in, size_is(count)] const GUID **props,
+ [in] ULONG count,
+ [out] IEnumTfRanges **ret);
+}
[
object,
[in] ITfContext *pic,
[in] TfEditCookie ecReadOnly,
[in] ITfEditRecord *pEditRecord);
-};
+}
[
object,
HRESULT OnEndComposition(
[in] ITfCompositionView *pComposition);
-};
+}
+
+[
+ object,
+ uuid(b246cb75-a93e-4652-bf8c-b3fe0cfd7e57),
+ pointer_default(unique)
+]
+interface ITfActiveLanguageProfileNotifySink : IUnknown
+{
+ HRESULT OnActivated(
+ [in] REFCLSID clsid,
+ [in] REFGUID guidProfile,
+ [in] BOOL fActivated);
+}
[
object,
HRESULT Skip(
[in] ULONG ulCount);
-};
+}
[
object,
[in] TfClientId tid);
HRESULT Deactivate();
-};
+}
[
object,
HRESULT OnPopContext(
[in] ITfContext *pic);
-};
+}
[
object,
[in] ITfContext *pic,
[in] REFGUID rguid,
[out] BOOL *pfEaten);
-};
+}
[
object,
[in] ITfContext *pic,
[in] REFGUID rguid,
[out] BOOL *pfEaten);
-};
+}
[
object,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[out] BOOL *pfResult);
-};
+}
[
object,
HRESULT GetClientId(
[in] REFCLSID rclsid,
[out] TfClientId *ptid);
-};
+}
[
object,
HRESULT GetContext(
[out] ITfContext **ppContext);
-};
+}
[
object,
[in] DWORD dwFlags,
[in] IDataObject *pDataObject,
[out] ITfRange **ppRange);
-};
+}
[
object,
[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),
HRESULT TerminateComposition([in] ITfCompositionView *pComposition);
}
+[
+ object,
+ uuid(4ef89150-0807-11d3-8df0-00105a2799b5),
+ pointer_default(unique)
+]
+interface ITfPersistentPropertyLoaderACP : IUnknown
+{
+ HRESULT LoadProperty(
+ [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr,
+ [out] IStream **ppStream);
+}
+
+[
+ object,
+ uuid(b23eb630-3e1c-11d3-a745-0050040ab407),
+ pointer_default(unique)
+]
+interface ITfContextOwnerServices : IUnknown
+{
+ HRESULT OnLayoutChange();
+
+ HRESULT OnStatusChange([in] DWORD dwFlags);
+
+ HRESULT OnAttributeChange([in] REFGUID rguidAttribute);
+
+ HRESULT Serialize(
+ [in] ITfProperty *pProp,
+ [in] ITfRange *pRange,
+ [out] TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr,
+ [in] IStream *pStream);
+
+ HRESULT Unserialize(
+ [in] ITfProperty *pProp,
+ [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr,
+ [in] IStream *pStream,
+ [in] ITfPersistentPropertyLoaderACP *pLoader);
+
+ HRESULT ForceLoadProperty([in] ITfProperty *pProp);
+
+ HRESULT CreateRange(
+ [in] LONG acpStart,
+ [in] LONG acpEnd,
+ [out] ITfRangeACP **ppRange);
+}
+
[
object,
uuid(17d49a3d-f8b8-4b2f-b254-52319dd64c53),
HRESULT GetValue(
[out] VARIANT *pvarValue);
-};
+}
[
object,
HRESULT EnumCompartments(
[out] IEnumGUID **ppEnum);
-};
+}
[
object,
HRESULT Skip(
[in] ULONG ulCount);
-};
+}
[
object,
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)
+ object,
+ local,
+ uuid(ea1ea137-19df-11d7-a6d2-00065b84435c),
+ pointer_default(unique)
]
-interface ITfThreadFocusSink : IUnknown
+interface ITfUIElement : IUnknown
{
- HRESULT OnSetThreadFocus();
+ HRESULT GetDescription(
+ [out] BSTR *description);
- HRESULT OnKillThreadFocus();
-};
+ HRESULT GetGUID(
+ [out] GUID *guid);
-[
- object,
- uuid(101d6610-0990-11d3-8df0-00105a2799b5),
- pointer_default(unique)
-]
-interface ITfFunctionProvider : IUnknown
-{
- HRESULT GetType(
- [out] GUID *pguid);
-
- HRESULT GetDescription(
- [out] BSTR *pbstrDesc);
+ HRESULT Show(
+ [in] BOOL show);
- HRESULT GetFunction(
- [in] REFGUID rguid,
- [in] REFIID riid,
- [out, iid_is(riid)] IUnknown **ppunk);
+ HRESULT IsShown(
+ [out] BOOL *show);
}
[
- object,
- uuid(e4b24db0-0990-11d3-8df0-00105a2799b5),
- pointer_default(unique)
+ object,
+ local,
+ uuid(887aa91e-acba-4931-84da-3c5208cf543f),
+ pointer_default(unique)
]
-interface IEnumTfFunctionProviders : IUnknown
+interface IEnumTfUIElements : IUnknown
{
HRESULT Clone(
- [out] IEnumTfFunctionProviders **ppEnum);
+ [out] IEnumTfUIElements **enum_elements);
HRESULT Next(
- [in] ULONG ulCount,
- [out, size_is(ulCount), length_is(*pcFetch)] ITfFunctionProvider **ppCmdobj,
- [out] ULONG *pcFetch);
+ [in] ULONG count,
+ [out, size_is(count), length_is(fetched)] ITfUIElement **element,
+ [out] ULONG fetched);
HRESULT Reset();
HRESULT Skip(
- [in] ULONG ulCount);
-};
+ [in] ULONG count);
+}
[
- object,
- uuid(2433bf8e-0f9b-435c-ba2c-180611978c30),
- pointer_default(unique)
+ object,
+ local,
+ uuid(ea1ea135-19df-11d7-a6d2-00065b84435c),
+ pointer_default(unique)
]
-interface ITfContextView : IUnknown
+interface ITfUIElementMgr : IUnknown
{
- HRESULT GetRangeFromPoint(
- [in] TfEditCookie ec,
- [in] const POINT *ppt,
- [in] DWORD dwFlags,
- [out] ITfRange **ppRange);
+ HRESULT BeginUIElement(
+ [in] ITfUIElement *element,
+ [in, out] BOOL *show,
+ [out] DWORD *id);
- HRESULT GetTextExt(
- [in] TfEditCookie ec,
- [in] ITfRange *pRange,
- [out] RECT *prc,
- [out] BOOL *pfClipped);
+ HRESULT UpdateUIElement(
+ [in] DWORD id);
- HRESULT GetScreenExt(
- [out] RECT *prc);
+ HRESULT EndUIElement(
+ [in] DWORD id);
- HRESULT GetWnd(
- [out] HWND *phwnd);
-};
+ HRESULT GetUIElement(
+ [in] DWORD id,
+ [out] ITfUIElement **element);
+
+ HRESULT EnumUIElements(
+ [out] IEnumTfUIElements **enum_elements);
+}
[
object,
- uuid(f0c0f8dd-cf38-44e1-bb0f-68cf0d551c78),
+ uuid(73131f9c-56a9-49dd-b0ee-d046633f7528),
pointer_default(unique)
]
-interface IEnumTfContextViews : IUnknown
+interface ITfSourceSingle : IUnknown
{
- HRESULT Clone(
- [out] IEnumTfContextViews **ppEnum);
-
- HRESULT Next(
- [in] ULONG ulCount,
- [out, size_is(ulCount), length_is(*pcFetched)] ITfContextView **rgViews,
- [out] ULONG *pcFetched);
-
- HRESULT Reset();
+ HRESULT AdviseSingleSink(
+ [in] TfClientId tid,
+ [in] REFIID riid,
+ [in, iid_is(riid)] IUnknown *punk);
- HRESULT Skip(
- [in] ULONG ulCount);
-};
+ HRESULT UnadviseSingleSink(
+ [in] TfClientId tid,
+ [in] REFIID riid);
+}
[
object,
- uuid(19188cb0-aca9-11d2-afc5-00105a2799b5),
+ local,
+ uuid(c0f1db0c-3a20-405c-a303-96b6010a885f),
pointer_default(unique)
]
-interface IEnumTfProperties : IUnknown
+interface ITfThreadFocusSink : IUnknown
{
- HRESULT Clone(
- [out] IEnumTfProperties **ppEnum);
-
- HRESULT Next(
- [in] ULONG ulCount,
- [out, size_is(ulCount), length_is(*pcFetched)] ITfProperty **ppProp,
- [out] ULONG *pcFetched);
-
- HRESULT Reset();
+ HRESULT OnSetThreadFocus();
- HRESULT Skip(
- [in] ULONG ulCount);
+ HRESULT OnKillThreadFocus();
}
[
object,
- uuid(463a506d-6992-49d2-9b88-93d55e70bb16),
+ uuid(71c6e74e-0f28-11d8-a82a-00065b84435c),
pointer_default(unique)
]
-interface ITfRangeBackup : IUnknown
+interface ITfInputProcessorProfileActivationSink : IUnknown
{
- HRESULT Restore(
- [in] TfEditCookie ec,
- [in] ITfRange *pRange);
-};
+ HRESULT OnActivated(
+ [in] DWORD dwProfileType,
+ [in] LANGID langid,
+ [in] REFCLSID clsid,
+ [in] REFGUID catid,
+ [in] REFGUID guidProfile,
+ [in] HKL hkl,
+ [in] DWORD dwFlags);
+}
[
- object,
- uuid(42d4d099-7c1a-4a89-b836-6c6f22160df0),
- pointer_default(unique)
+ object,
+ local,
+ uuid(a1adaaa2-3a24-449d-ac96-5183e7f5c217),
+ pointer_default(unique)
]
-interface ITfEditRecord : IUnknown
+interface ITfMouseSink : IUnknown
{
- const DWORD TF_GTP_INCL_TEXT = 0x1;
+ HRESULT OnMouseEvent(
+ [in] ULONG uEdge,
+ [in] ULONG uQuadrant,
+ [in] DWORD dwBtnStatus,
+ [out] BOOL *pfEaten);
+}
- HRESULT GetSelectionStatus(
- [out] BOOL *pfChanged);
+[
+ object,
+ uuid(09d146cd-a544-4132-925b-7afa8ef322d0),
+ pointer_default(unique)
+]
+interface ITfMouseTracker : IUnknown
+{
+ HRESULT AdviseMouseSink(
+ [in] ITfRange *range,
+ [in] ITfMouseSink *pSink,
+ [out] DWORD *pdwCookie);
- HRESULT GetTextAndPropertyUpdates(
- [in] DWORD dwFlags,
- [in, size_is(cProperties)] const GUID **prgProperties,
- [in] ULONG cProperties,
- [out] IEnumTfRanges **ppEnum);
-};
+ HRESULT UnadviseMouseSink([in] DWORD dwCookie);
+}
+
+[
+ object,
+ uuid(3bdd78e2-c16e-47fd-b883-ce6facc1a208),
+ pointer_default(unique)
+]
+interface ITfMouseTrackerACP : IUnknown
+{
+ HRESULT AdviseMouseSink(
+ [in] ITfRangeACP *range,
+ [in] ITfMouseSink *pSink,
+ [out] DWORD *pdwCookie);
+
+ HRESULT UnadviseMouseSink([in] DWORD dwCookie);
+}