Blob Blame History Raw
From fc960d33b03f8e241f501c5d7f79700c2d1c9a95 Mon Sep 17 00:00:00 2001
From: Jacek Caban <jacek@codeweavers.com>
Date: Wed, 29 Apr 2015 22:09:54 +0200
Subject: msinkaut.h: Generated header file.


diff --git a/mingw-w64-headers/include/msinkaut.h b/mingw-w64-headers/include/msinkaut.h
new file mode 100644
index 0000000..fadab56
--- /dev/null
+++ b/mingw-w64-headers/include/msinkaut.h
@@ -0,0 +1,7850 @@
+/*** Autogenerated by WIDL 1.6 from include/msinkaut.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __msinkaut_h__
+#define __msinkaut_h__
+
+/* Forward declarations */
+
+#ifndef __IInkExtendedProperty_FWD_DEFINED__
+#define __IInkExtendedProperty_FWD_DEFINED__
+typedef interface IInkExtendedProperty IInkExtendedProperty;
+#endif
+
+#ifndef __IInkExtendedProperties_FWD_DEFINED__
+#define __IInkExtendedProperties_FWD_DEFINED__
+typedef interface IInkExtendedProperties IInkExtendedProperties;
+#endif
+
+#ifndef __IInkDrawingAttributes_FWD_DEFINED__
+#define __IInkDrawingAttributes_FWD_DEFINED__
+typedef interface IInkDrawingAttributes IInkDrawingAttributes;
+#endif
+
+#ifndef __IInkRectangle_FWD_DEFINED__
+#define __IInkRectangle_FWD_DEFINED__
+typedef interface IInkRectangle IInkRectangle;
+#endif
+
+#ifndef __IInkTablet_FWD_DEFINED__
+#define __IInkTablet_FWD_DEFINED__
+typedef interface IInkTablet IInkTablet;
+#endif
+
+#ifndef __IInkCursorButton_FWD_DEFINED__
+#define __IInkCursorButton_FWD_DEFINED__
+typedef interface IInkCursorButton IInkCursorButton;
+#endif
+
+#ifndef __IInkCursorButtons_FWD_DEFINED__
+#define __IInkCursorButtons_FWD_DEFINED__
+typedef interface IInkCursorButtons IInkCursorButtons;
+#endif
+
+#ifndef __IInkCursor_FWD_DEFINED__
+#define __IInkCursor_FWD_DEFINED__
+typedef interface IInkCursor IInkCursor;
+#endif
+
+#ifndef __IInkTransform_FWD_DEFINED__
+#define __IInkTransform_FWD_DEFINED__
+typedef interface IInkTransform IInkTransform;
+#endif
+
+#ifndef __IInkRecognitionAlternates_FWD_DEFINED__
+#define __IInkRecognitionAlternates_FWD_DEFINED__
+typedef interface IInkRecognitionAlternates IInkRecognitionAlternates;
+#endif
+
+#ifndef __IInkRecognitionAlternate_FWD_DEFINED__
+#define __IInkRecognitionAlternate_FWD_DEFINED__
+typedef interface IInkRecognitionAlternate IInkRecognitionAlternate;
+#endif
+
+#ifndef __IInkRecognitionResult_FWD_DEFINED__
+#define __IInkRecognitionResult_FWD_DEFINED__
+typedef interface IInkRecognitionResult IInkRecognitionResult;
+#endif
+
+#ifndef __IInkStrokeDisp_FWD_DEFINED__
+#define __IInkStrokeDisp_FWD_DEFINED__
+typedef interface IInkStrokeDisp IInkStrokeDisp;
+#endif
+
+#ifndef __IInkCustomStrokes_FWD_DEFINED__
+#define __IInkCustomStrokes_FWD_DEFINED__
+typedef interface IInkCustomStrokes IInkCustomStrokes;
+#endif
+
+#ifndef __IInkDisp_FWD_DEFINED__
+#define __IInkDisp_FWD_DEFINED__
+typedef interface IInkDisp IInkDisp;
+#endif
+
+#ifndef __IInkStrokes_FWD_DEFINED__
+#define __IInkStrokes_FWD_DEFINED__
+typedef interface IInkStrokes IInkStrokes;
+#endif
+
+#ifndef __IInkRenderer_FWD_DEFINED__
+#define __IInkRenderer_FWD_DEFINED__
+typedef interface IInkRenderer IInkRenderer;
+#endif
+
+#ifndef __IInkCursors_FWD_DEFINED__
+#define __IInkCursors_FWD_DEFINED__
+typedef interface IInkCursors IInkCursors;
+#endif
+
+#ifndef __IInkCollector_FWD_DEFINED__
+#define __IInkCollector_FWD_DEFINED__
+typedef interface IInkCollector IInkCollector;
+#endif
+
+#ifndef ___IInkCollectorEvents_FWD_DEFINED__
+#define ___IInkCollectorEvents_FWD_DEFINED__
+typedef interface _IInkCollectorEvents _IInkCollectorEvents;
+#endif
+
+#ifndef __InkCollector_FWD_DEFINED__
+#define __InkCollector_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class InkCollector InkCollector;
+#else
+typedef struct InkCollector InkCollector;
+#endif /* defined __cplusplus */
+#endif /* defined __InkCollector_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+#include <tpcshrd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum InkRasterOperation {
+    IRO_Black = 1,
+    IRO_NotMergePen = 2,
+    IRO_MaskNotPen = 3,
+    IRO_NotCopyPen = 4,
+    IRO_MaskPenNot = 5,
+    IRO_Not = 6,
+    IRO_XOrPen = 7,
+    IRO_NotMaskPen = 8,
+    IRO_MaskPen = 9,
+    IRO_NotXOrPen = 10,
+    IRO_NoOperation = 11,
+    IRO_MergeNotPen = 12,
+    IRO_CopyPen = 13,
+    IRO_MergePenNot = 14,
+    IRO_MergePen = 15,
+    IRO_White = 16
+} InkRasterOperation;
+typedef enum InkPenTip {
+    IPT_Ball = 0,
+    IPT_Rectangle = 1
+} InkPenTip;
+typedef enum TabletHardwareCapabilities {
+    THWC_Integrated = 0x1,
+    THWC_CursorMustTouch = 0x2,
+    THWC_HardProximity = 0x4,
+    THWC_CursorsHavePhysicalIds = 0x8
+} TabletHardwareCapabilities;
+typedef enum TabletPropertyMetricUnit {
+    TPMU_Default = 0,
+    TPMU_Inches = 1,
+    TPMU_Centimeters = 2,
+    TPMU_Degrees = 3,
+    TPMU_Radians = 4,
+    TPMU_Seconds = 5,
+    TPMU_Pounds = 6,
+    TPMU_Grams = 7
+} TabletPropertyMetricUnit;
+typedef enum InkCursorButtonState {
+    ICBS_Unavailable = 0,
+    ICBS_Up = 1,
+    ICBS_Down = 2
+} InkCursorButtonState;
+typedef enum InkRecognitionConfidence {
+    IRC_Strong = 0,
+    IRC_Intermediate = 1,
+    IRC_Poor = 2
+} InkRecognitionConfidence;
+typedef enum InkBoundingBoxMode {
+    IBBM_Default = 0,
+    IBBM_NoCurveFit = 1,
+    IBBM_CurveFit = 2,
+    IBBM_PointsOnly = 3,
+    IBBM_Union = 4
+} InkBoundingBoxMode;
+typedef enum InkExtractFlags {
+    IEF_CopyFromOriginal = 0,
+    IEF_RemoveFromOriginal = 1,
+    IEF_Default = IEF_RemoveFromOriginal
+} InkExtractFlags;
+typedef enum InkPersistenceFormat {
+    IPF_InkSerializedFormat = 0,
+    IPF_Base64InkSerializedFormat = 1,
+    IPF_GIF = 2,
+    IPF_Base64GIF = 3
+} InkPersistenceFormat;
+typedef enum InkPersistenceCompressionMode {
+    IPCM_Default = 0,
+    IPCM_MaximumCompression = 1,
+    IPCM_NoCompression = 2
+} InkPersistenceCompressionMode;
+typedef enum InkClipboardFormats {
+    ICF_None = 0x0,
+    ICF_InkSerializedFormat = 0x1,
+    ICF_SketchInk = 0x2,
+    ICF_TextInk = 0x6,
+    ICF_EnhancedMetafile = 0x8,
+    ICF_Metafile = 0x20,
+    ICF_Bitmap = 0x40,
+    ICF_PasteMask = 0x7,
+    ICF_CopyMask = 0x7f,
+    ICF_Default = ICF_CopyMask
+} InkClipboardFormats;
+typedef enum InkClipboardModes {
+    ICB_Copy = 0x0,
+    ICB_Cut = 0x1,
+    ICB_ExtractOnly = 0x30,
+    ICB_DelayedCopy = 0x20,
+    ICB_Default = ICB_Copy
+} InkClipboardModes;
+typedef enum InkCollectionMode {
+    ICM_InkOnly = 0,
+    ICM_GestureOnly = 1,
+    ICM_InkAndGesture = 2
+} InkCollectionMode;
+typedef enum InkMousePointer {
+    IMP_Default = 0,
+    IMP_Arrow = 1,
+    IMP_Crosshair = 2,
+    IMP_Ibeam = 3,
+    IMP_SizeNESW = 4,
+    IMP_SizeNS = 5,
+    IMP_SizeNWSE = 6,
+    IMP_SizeWE = 7,
+    IMP_UpArrow = 8,
+    IMP_Hourglass = 9,
+    IMP_NoDrop = 10,
+    IMP_ArrowHourglass = 11,
+    IMP_ArrowQuestion = 12,
+    IMP_SizeAll = 13,
+    IMP_Hand = 14,
+    IMP_Custom = 99
+} InkMousePointer;
+typedef enum InkApplicationGesture {
+    IAG_AllGestures = 0x0,
+    IAG_NoGesture = 0xf000,
+    IAG_Scratchout = 0xf001,
+    IAG_Triangle = 0xf002,
+    IAG_Square = 0xf003,
+    IAG_Star = 0xf004,
+    IAG_Check = 0xf005,
+    IAG_Curlicue = 0xf010,
+    IAG_DoubleCurlicue = 0xf011,
+    IAG_Circle = 0xf020,
+    IAG_DoubleCircle = 0xf021,
+    IAG_SemiCircleLeft = 0xf028,
+    IAG_SemiCircleRight = 0xf029,
+    IAG_ChevronUp = 0xf030,
+    IAG_ChevronDown = 0xf031,
+    IAG_ChevronLeft = 0xf032,
+    IAG_ChevronRight = 0xf033,
+    IAG_ArrowUp = 0xf038,
+    IAG_ArrowDown = 0xf039,
+    IAG_ArrowLeft = 0xf03a,
+    IAG_ArrowRight = 0xf03b,
+    IAG_Up = 0xf058,
+    IAG_Down = 0xf059,
+    IAG_Left = 0xf05a,
+    IAG_Right = 0xf05b,
+    IAG_UpDown = 0xf060,
+    IAG_DownUp = 0xf061,
+    IAG_LeftRight = 0xf062,
+    IAG_RightLeft = 0xf063,
+    IAG_UpLeftLong = 0xf064,
+    IAG_UpRightLong = 0xf065,
+    IAG_DownLeftLong = 0xf066,
+    IAG_DownRightLong = 0xf067,
+    IAG_UpLeft = 0xf068,
+    IAG_UpRight = 0xf069,
+    IAG_DownLeft = 0xf06a,
+    IAG_DownRight = 0xf06b,
+    IAG_LeftUp = 0xf06c,
+    IAG_LeftDown = 0xf06d,
+    IAG_RightUp = 0xf06e,
+    IAG_RightDown = 0xf06f,
+    IAG_Exclamation = 0xf0a4,
+    IAG_Tap = 0xf0f0,
+    IAG_DoubleTap = 0xf0f1
+} InkApplicationGesture;
+typedef enum InkCollectorEventInterest {
+    ICEI_DefaultEvents = -1,
+    ICEI_CursorDown = ICEI_DefaultEvents + 1,
+    ICEI_Stroke = ICEI_CursorDown + 1,
+    ICEI_NewPackets = ICEI_Stroke + 1,
+    ICEI_NewInAirPackets = ICEI_NewPackets + 1,
+    ICEI_CursorButtonDown = ICEI_NewInAirPackets + 1,
+    ICEI_CursorButtonUp = ICEI_CursorButtonDown + 1,
+    ICEI_CursorInRange = ICEI_CursorButtonUp + 1,
+    ICEI_CursorOutOfRange = ICEI_CursorInRange + 1,
+    ICEI_SystemGesture = ICEI_CursorOutOfRange + 1,
+    ICEI_TabletAdded = ICEI_SystemGesture + 1,
+    ICEI_TabletRemoved = ICEI_TabletAdded + 1,
+    ICEI_MouseDown = ICEI_TabletRemoved + 1,
+    ICEI_MouseMove = ICEI_MouseDown + 1,
+    ICEI_MouseUp = ICEI_MouseMove + 1,
+    ICEI_MouseWheel = ICEI_MouseUp + 1,
+    ICEI_DblClick = ICEI_MouseWheel + 1,
+    ICEI_AllEvents = ICEI_DblClick + 1
+} InkCollectorEventInterest;
+typedef enum DISPID_InkCollectorEvent {
+    DISPID_ICEStroke = 1,
+    DISPID_ICECursorDown = DISPID_ICEStroke + 1,
+    DISPID_ICENewPackets = DISPID_ICECursorDown + 1,
+    DISPID_ICENewInAirPackets = DISPID_ICENewPackets + 1,
+    DISPID_ICECursorButtonDown = DISPID_ICENewInAirPackets + 1,
+    DISPID_ICECursorButtonUp = DISPID_ICECursorButtonDown + 1,
+    DISPID_ICECursorInRange = DISPID_ICECursorButtonUp + 1,
+    DISPID_ICECursorOutOfRange = DISPID_ICECursorInRange + 1,
+    DISPID_ICESystemGesture = DISPID_ICECursorOutOfRange + 1,
+    DISPID_ICEGesture = DISPID_ICESystemGesture + 1,
+    DISPID_ICETabletAdded = DISPID_ICEGesture + 1,
+    DISPID_ICETabletRemoved = DISPID_ICETabletAdded + 1,
+    DISPID_IOEPainting = DISPID_ICETabletRemoved + 1,
+    DISPID_IOEPainted = DISPID_IOEPainting + 1,
+    DISPID_IOESelectionChanging = DISPID_IOEPainted + 1,
+    DISPID_IOESelectionChanged = DISPID_IOESelectionChanging + 1,
+    DISPID_IOESelectionMoving = DISPID_IOESelectionChanged + 1,
+    DISPID_IOESelectionMoved = DISPID_IOESelectionMoving + 1,
+    DISPID_IOESelectionResizing = DISPID_IOESelectionMoved + 1,
+    DISPID_IOESelectionResized = DISPID_IOESelectionResizing + 1,
+    DISPID_IOEStrokesDeleting = DISPID_IOESelectionResized + 1,
+    DISPID_IOEStrokesDeleted = DISPID_IOEStrokesDeleting + 1,
+    DISPID_IPEChangeUICues = DISPID_IOEStrokesDeleted + 1,
+    DISPID_IPEClick = DISPID_IPEChangeUICues + 1,
+    DISPID_IPEDblClick = DISPID_IPEClick + 1,
+    DISPID_IPEInvalidated = DISPID_IPEDblClick + 1,
+    DISPID_IPEMouseDown = DISPID_IPEInvalidated + 1,
+    DISPID_IPEMouseEnter = DISPID_IPEMouseDown + 1,
+    DISPID_IPEMouseHover = DISPID_IPEMouseEnter + 1,
+    DISPID_IPEMouseLeave = DISPID_IPEMouseHover + 1,
+    DISPID_IPEMouseMove = DISPID_IPEMouseLeave + 1,
+    DISPID_IPEMouseUp = DISPID_IPEMouseMove + 1,
+    DISPID_IPEMouseWheel = DISPID_IPEMouseUp + 1,
+    DISPID_IPESizeModeChanged = DISPID_IPEMouseWheel + 1,
+    DISPID_IPEStyleChanged = DISPID_IPESizeModeChanged + 1,
+    DISPID_IPESystemColorsChanged = DISPID_IPEStyleChanged + 1,
+    DISPID_IPEKeyDown = DISPID_IPESystemColorsChanged + 1,
+    DISPID_IPEKeyPress = DISPID_IPEKeyDown + 1,
+    DISPID_IPEKeyUp = DISPID_IPEKeyPress + 1,
+    DISPID_IPEResize = DISPID_IPEKeyUp + 1,
+    DISPID_IPESizeChanged = DISPID_IPEResize + 1
+} DISPID_InkCollectorEvent;
+#ifndef __IInkDisp_FWD_DEFINED__
+#define __IInkDisp_FWD_DEFINED__
+typedef interface IInkDisp IInkDisp;
+#endif
+
+#ifndef __IInkStrokes_FWD_DEFINED__
+#define __IInkStrokes_FWD_DEFINED__
+typedef interface IInkStrokes IInkStrokes;
+#endif
+
+#ifndef __IInkRecognitionAlternate_FWD_DEFINED__
+#define __IInkRecognitionAlternate_FWD_DEFINED__
+typedef interface IInkRecognitionAlternate IInkRecognitionAlternate;
+#endif
+
+/*****************************************************************************
+ * IInkExtendedProperty interface
+ */
+#ifndef __IInkExtendedProperty_INTERFACE_DEFINED__
+#define __IInkExtendedProperty_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkExtendedProperty, 0xdb489209, 0xb7c3, 0x411d, 0x90,0xf6, 0x15,0x48,0xcf,0xff,0x27,0x1e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("db489209-b7c3-411d-90f6-1548cfff271e")
+IInkExtendedProperty : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Guid(
+        BSTR *Guid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Data(
+        VARIANT *Data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Data(
+        VARIANT Data) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkExtendedProperty, 0xdb489209, 0xb7c3, 0x411d, 0x90,0xf6, 0x15,0x48,0xcf,0xff,0x27,0x1e)
+#endif
+#else
+typedef struct IInkExtendedPropertyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkExtendedProperty* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkExtendedProperty* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkExtendedProperty* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkExtendedProperty* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkExtendedProperty* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkExtendedProperty* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkExtendedProperty* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkExtendedProperty methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Guid)(
+        IInkExtendedProperty* This,
+        BSTR *Guid);
+
+    HRESULT (STDMETHODCALLTYPE *get_Data)(
+        IInkExtendedProperty* This,
+        VARIANT *Data);
+
+    HRESULT (STDMETHODCALLTYPE *put_Data)(
+        IInkExtendedProperty* This,
+        VARIANT Data);
+
+    END_INTERFACE
+} IInkExtendedPropertyVtbl;
+interface IInkExtendedProperty {
+    CONST_VTBL IInkExtendedPropertyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkExtendedProperty_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkExtendedProperty_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkExtendedProperty_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkExtendedProperty_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkExtendedProperty_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkExtendedProperty_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkExtendedProperty_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkExtendedProperty methods ***/
+#define IInkExtendedProperty_get_Guid(This,Guid) (This)->lpVtbl->get_Guid(This,Guid)
+#define IInkExtendedProperty_get_Data(This,Data) (This)->lpVtbl->get_Data(This,Data)
+#define IInkExtendedProperty_put_Data(This,Data) (This)->lpVtbl->put_Data(This,Data)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperty_QueryInterface(IInkExtendedProperty* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkExtendedProperty_AddRef(IInkExtendedProperty* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkExtendedProperty_Release(IInkExtendedProperty* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperty_GetTypeInfoCount(IInkExtendedProperty* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_GetTypeInfo(IInkExtendedProperty* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_GetIDsOfNames(IInkExtendedProperty* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_Invoke(IInkExtendedProperty* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkExtendedProperty methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperty_get_Guid(IInkExtendedProperty* This,BSTR *Guid) {
+    return This->lpVtbl->get_Guid(This,Guid);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_get_Data(IInkExtendedProperty* This,VARIANT *Data) {
+    return This->lpVtbl->get_Data(This,Data);
+}
+static FORCEINLINE HRESULT IInkExtendedProperty_put_Data(IInkExtendedProperty* This,VARIANT Data) {
+    return This->lpVtbl->put_Data(This,Data);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkExtendedProperty_get_Guid_Proxy(
+    IInkExtendedProperty* This,
+    BSTR *Guid);
+void __RPC_STUB IInkExtendedProperty_get_Guid_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperty_get_Data_Proxy(
+    IInkExtendedProperty* This,
+    VARIANT *Data);
+void __RPC_STUB IInkExtendedProperty_get_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperty_put_Data_Proxy(
+    IInkExtendedProperty* This,
+    VARIANT Data);
+void __RPC_STUB IInkExtendedProperty_put_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkExtendedProperty_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkExtendedProperties interface
+ */
+#ifndef __IInkExtendedProperties_INTERFACE_DEFINED__
+#define __IInkExtendedProperties_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkExtendedProperties, 0x89f2a8be, 0x95a9, 0x4530, 0x8b,0x8f, 0x88,0xe9,0x71,0xe3,0xe2,0x5f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("89f2a8be-95a9-4530-8b8f-88e971e3e25f")
+IInkExtendedProperties : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT Identifier,
+        IInkExtendedProperty **Item) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        BSTR Guid,
+        VARIANT Data,
+        IInkExtendedProperty **InkExtendedProperty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Identifier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clear(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DoesPropertyExist(
+        BSTR Guid,
+        VARIANT_BOOL *DoesPropertyExist) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkExtendedProperties, 0x89f2a8be, 0x95a9, 0x4530, 0x8b,0x8f, 0x88,0xe9,0x71,0xe3,0xe2,0x5f)
+#endif
+#else
+typedef struct IInkExtendedPropertiesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkExtendedProperties* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkExtendedProperties* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkExtendedProperties* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkExtendedProperties* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkExtendedProperties* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkExtendedProperties* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkExtendedProperties* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkExtendedProperties methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkExtendedProperties* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkExtendedProperties* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkExtendedProperties* This,
+        VARIANT Identifier,
+        IInkExtendedProperty **Item);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IInkExtendedProperties* This,
+        BSTR Guid,
+        VARIANT Data,
+        IInkExtendedProperty **InkExtendedProperty);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IInkExtendedProperties* This,
+        VARIANT Identifier);
+
+    HRESULT (STDMETHODCALLTYPE *Clear)(
+        IInkExtendedProperties* This);
+
+    HRESULT (STDMETHODCALLTYPE *DoesPropertyExist)(
+        IInkExtendedProperties* This,
+        BSTR Guid,
+        VARIANT_BOOL *DoesPropertyExist);
+
+    END_INTERFACE
+} IInkExtendedPropertiesVtbl;
+interface IInkExtendedProperties {
+    CONST_VTBL IInkExtendedPropertiesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkExtendedProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkExtendedProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkExtendedProperties_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkExtendedProperties_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkExtendedProperties_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkExtendedProperties_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkExtendedProperties_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkExtendedProperties methods ***/
+#define IInkExtendedProperties_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkExtendedProperties_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkExtendedProperties_Item(This,Identifier,Item) (This)->lpVtbl->Item(This,Identifier,Item)
+#define IInkExtendedProperties_Add(This,Guid,Data,InkExtendedProperty) (This)->lpVtbl->Add(This,Guid,Data,InkExtendedProperty)
+#define IInkExtendedProperties_Remove(This,Identifier) (This)->lpVtbl->Remove(This,Identifier)
+#define IInkExtendedProperties_Clear(This) (This)->lpVtbl->Clear(This)
+#define IInkExtendedProperties_DoesPropertyExist(This,Guid,DoesPropertyExist) (This)->lpVtbl->DoesPropertyExist(This,Guid,DoesPropertyExist)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperties_QueryInterface(IInkExtendedProperties* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkExtendedProperties_AddRef(IInkExtendedProperties* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkExtendedProperties_Release(IInkExtendedProperties* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperties_GetTypeInfoCount(IInkExtendedProperties* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_GetTypeInfo(IInkExtendedProperties* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_GetIDsOfNames(IInkExtendedProperties* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Invoke(IInkExtendedProperties* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkExtendedProperties methods ***/
+static FORCEINLINE HRESULT IInkExtendedProperties_get_Count(IInkExtendedProperties* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_get__NewEnum(IInkExtendedProperties* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Item(IInkExtendedProperties* This,VARIANT Identifier,IInkExtendedProperty **Item) {
+    return This->lpVtbl->Item(This,Identifier,Item);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Add(IInkExtendedProperties* This,BSTR Guid,VARIANT Data,IInkExtendedProperty **InkExtendedProperty) {
+    return This->lpVtbl->Add(This,Guid,Data,InkExtendedProperty);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Remove(IInkExtendedProperties* This,VARIANT Identifier) {
+    return This->lpVtbl->Remove(This,Identifier);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_Clear(IInkExtendedProperties* This) {
+    return This->lpVtbl->Clear(This);
+}
+static FORCEINLINE HRESULT IInkExtendedProperties_DoesPropertyExist(IInkExtendedProperties* This,BSTR Guid,VARIANT_BOOL *DoesPropertyExist) {
+    return This->lpVtbl->DoesPropertyExist(This,Guid,DoesPropertyExist);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_get_Count_Proxy(
+    IInkExtendedProperties* This,
+    LONG *Count);
+void __RPC_STUB IInkExtendedProperties_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_get__NewEnum_Proxy(
+    IInkExtendedProperties* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkExtendedProperties_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Item_Proxy(
+    IInkExtendedProperties* This,
+    VARIANT Identifier,
+    IInkExtendedProperty **Item);
+void __RPC_STUB IInkExtendedProperties_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Add_Proxy(
+    IInkExtendedProperties* This,
+    BSTR Guid,
+    VARIANT Data,
+    IInkExtendedProperty **InkExtendedProperty);
+void __RPC_STUB IInkExtendedProperties_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Remove_Proxy(
+    IInkExtendedProperties* This,
+    VARIANT Identifier);
+void __RPC_STUB IInkExtendedProperties_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_Clear_Proxy(
+    IInkExtendedProperties* This);
+void __RPC_STUB IInkExtendedProperties_Clear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkExtendedProperties_DoesPropertyExist_Proxy(
+    IInkExtendedProperties* This,
+    BSTR Guid,
+    VARIANT_BOOL *DoesPropertyExist);
+void __RPC_STUB IInkExtendedProperties_DoesPropertyExist_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkExtendedProperties_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkDrawingAttributes interface
+ */
+#ifndef __IInkDrawingAttributes_INTERFACE_DEFINED__
+#define __IInkDrawingAttributes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkDrawingAttributes, 0xbf519b75, 0x0a15, 0x4623, 0xad,0xc9, 0xc0,0x0d,0x43,0x6a,0x80,0x92);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bf519b75-0a15-4623-adc9-c00d436a8092")
+IInkDrawingAttributes : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Color(
+        LONG *CurrentColor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Color(
+        LONG NewColor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Width(
+        float *CurrentWidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Width(
+        float NewWidth) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Height(
+        float *CurrentHeight) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Height(
+        float NewHeight) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FitToCurve(
+        VARIANT_BOOL *Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_FitToCurve(
+        VARIANT_BOOL Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_IgnorePressure(
+        VARIANT_BOOL *Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_IgnorePressure(
+        VARIANT_BOOL Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AntiAliased(
+        VARIANT_BOOL *Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_AntiAliased(
+        VARIANT_BOOL Flag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Transparency(
+        LONG *CurrentTransparency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Transparency(
+        LONG NewTransparency) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RasterOperation(
+        InkRasterOperation *CurrentRasterOperation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_RasterOperation(
+        InkRasterOperation NewRasterOperation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PenTip(
+        InkPenTip *CurrentPenTip) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_PenTip(
+        InkPenTip NewPenTip) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
+        IInkExtendedProperties **Properties) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IInkDrawingAttributes **DrawingAttributes) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkDrawingAttributes, 0xbf519b75, 0x0a15, 0x4623, 0xad,0xc9, 0xc0,0x0d,0x43,0x6a,0x80,0x92)
+#endif
+#else
+typedef struct IInkDrawingAttributesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkDrawingAttributes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkDrawingAttributes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkDrawingAttributes* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkDrawingAttributes* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkDrawingAttributes* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkDrawingAttributes* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkDrawingAttributes* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkDrawingAttributes methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Color)(
+        IInkDrawingAttributes* This,
+        LONG *CurrentColor);
+
+    HRESULT (STDMETHODCALLTYPE *put_Color)(
+        IInkDrawingAttributes* This,
+        LONG NewColor);
+
+    HRESULT (STDMETHODCALLTYPE *get_Width)(
+        IInkDrawingAttributes* This,
+        float *CurrentWidth);
+
+    HRESULT (STDMETHODCALLTYPE *put_Width)(
+        IInkDrawingAttributes* This,
+        float NewWidth);
+
+    HRESULT (STDMETHODCALLTYPE *get_Height)(
+        IInkDrawingAttributes* This,
+        float *CurrentHeight);
+
+    HRESULT (STDMETHODCALLTYPE *put_Height)(
+        IInkDrawingAttributes* This,
+        float NewHeight);
+
+    HRESULT (STDMETHODCALLTYPE *get_FitToCurve)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL *Flag);
+
+    HRESULT (STDMETHODCALLTYPE *put_FitToCurve)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL Flag);
+
+    HRESULT (STDMETHODCALLTYPE *get_IgnorePressure)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL *Flag);
+
+    HRESULT (STDMETHODCALLTYPE *put_IgnorePressure)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL Flag);
+
+    HRESULT (STDMETHODCALLTYPE *get_AntiAliased)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL *Flag);
+
+    HRESULT (STDMETHODCALLTYPE *put_AntiAliased)(
+        IInkDrawingAttributes* This,
+        VARIANT_BOOL Flag);
+
+    HRESULT (STDMETHODCALLTYPE *get_Transparency)(
+        IInkDrawingAttributes* This,
+        LONG *CurrentTransparency);
+
+    HRESULT (STDMETHODCALLTYPE *put_Transparency)(
+        IInkDrawingAttributes* This,
+        LONG NewTransparency);
+
+    HRESULT (STDMETHODCALLTYPE *get_RasterOperation)(
+        IInkDrawingAttributes* This,
+        InkRasterOperation *CurrentRasterOperation);
+
+    HRESULT (STDMETHODCALLTYPE *put_RasterOperation)(
+        IInkDrawingAttributes* This,
+        InkRasterOperation NewRasterOperation);
+
+    HRESULT (STDMETHODCALLTYPE *get_PenTip)(
+        IInkDrawingAttributes* This,
+        InkPenTip *CurrentPenTip);
+
+    HRESULT (STDMETHODCALLTYPE *put_PenTip)(
+        IInkDrawingAttributes* This,
+        InkPenTip NewPenTip);
+
+    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
+        IInkDrawingAttributes* This,
+        IInkExtendedProperties **Properties);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IInkDrawingAttributes* This,
+        IInkDrawingAttributes **DrawingAttributes);
+
+    END_INTERFACE
+} IInkDrawingAttributesVtbl;
+interface IInkDrawingAttributes {
+    CONST_VTBL IInkDrawingAttributesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkDrawingAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkDrawingAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkDrawingAttributes_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkDrawingAttributes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkDrawingAttributes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkDrawingAttributes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkDrawingAttributes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkDrawingAttributes methods ***/
+#define IInkDrawingAttributes_get_Color(This,CurrentColor) (This)->lpVtbl->get_Color(This,CurrentColor)
+#define IInkDrawingAttributes_put_Color(This,NewColor) (This)->lpVtbl->put_Color(This,NewColor)
+#define IInkDrawingAttributes_get_Width(This,CurrentWidth) (This)->lpVtbl->get_Width(This,CurrentWidth)
+#define IInkDrawingAttributes_put_Width(This,NewWidth) (This)->lpVtbl->put_Width(This,NewWidth)
+#define IInkDrawingAttributes_get_Height(This,CurrentHeight) (This)->lpVtbl->get_Height(This,CurrentHeight)
+#define IInkDrawingAttributes_put_Height(This,NewHeight) (This)->lpVtbl->put_Height(This,NewHeight)
+#define IInkDrawingAttributes_get_FitToCurve(This,Flag) (This)->lpVtbl->get_FitToCurve(This,Flag)
+#define IInkDrawingAttributes_put_FitToCurve(This,Flag) (This)->lpVtbl->put_FitToCurve(This,Flag)
+#define IInkDrawingAttributes_get_IgnorePressure(This,Flag) (This)->lpVtbl->get_IgnorePressure(This,Flag)
+#define IInkDrawingAttributes_put_IgnorePressure(This,Flag) (This)->lpVtbl->put_IgnorePressure(This,Flag)
+#define IInkDrawingAttributes_get_AntiAliased(This,Flag) (This)->lpVtbl->get_AntiAliased(This,Flag)
+#define IInkDrawingAttributes_put_AntiAliased(This,Flag) (This)->lpVtbl->put_AntiAliased(This,Flag)
+#define IInkDrawingAttributes_get_Transparency(This,CurrentTransparency) (This)->lpVtbl->get_Transparency(This,CurrentTransparency)
+#define IInkDrawingAttributes_put_Transparency(This,NewTransparency) (This)->lpVtbl->put_Transparency(This,NewTransparency)
+#define IInkDrawingAttributes_get_RasterOperation(This,CurrentRasterOperation) (This)->lpVtbl->get_RasterOperation(This,CurrentRasterOperation)
+#define IInkDrawingAttributes_put_RasterOperation(This,NewRasterOperation) (This)->lpVtbl->put_RasterOperation(This,NewRasterOperation)
+#define IInkDrawingAttributes_get_PenTip(This,CurrentPenTip) (This)->lpVtbl->get_PenTip(This,CurrentPenTip)
+#define IInkDrawingAttributes_put_PenTip(This,NewPenTip) (This)->lpVtbl->put_PenTip(This,NewPenTip)
+#define IInkDrawingAttributes_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
+#define IInkDrawingAttributes_Clone(This,DrawingAttributes) (This)->lpVtbl->Clone(This,DrawingAttributes)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkDrawingAttributes_QueryInterface(IInkDrawingAttributes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkDrawingAttributes_AddRef(IInkDrawingAttributes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkDrawingAttributes_Release(IInkDrawingAttributes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkDrawingAttributes_GetTypeInfoCount(IInkDrawingAttributes* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_GetTypeInfo(IInkDrawingAttributes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_GetIDsOfNames(IInkDrawingAttributes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_Invoke(IInkDrawingAttributes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkDrawingAttributes methods ***/
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Color(IInkDrawingAttributes* This,LONG *CurrentColor) {
+    return This->lpVtbl->get_Color(This,CurrentColor);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Color(IInkDrawingAttributes* This,LONG NewColor) {
+    return This->lpVtbl->put_Color(This,NewColor);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Width(IInkDrawingAttributes* This,float *CurrentWidth) {
+    return This->lpVtbl->get_Width(This,CurrentWidth);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Width(IInkDrawingAttributes* This,float NewWidth) {
+    return This->lpVtbl->put_Width(This,NewWidth);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Height(IInkDrawingAttributes* This,float *CurrentHeight) {
+    return This->lpVtbl->get_Height(This,CurrentHeight);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Height(IInkDrawingAttributes* This,float NewHeight) {
+    return This->lpVtbl->put_Height(This,NewHeight);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_FitToCurve(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
+    return This->lpVtbl->get_FitToCurve(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_FitToCurve(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
+    return This->lpVtbl->put_FitToCurve(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_IgnorePressure(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
+    return This->lpVtbl->get_IgnorePressure(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_IgnorePressure(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
+    return This->lpVtbl->put_IgnorePressure(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_AntiAliased(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
+    return This->lpVtbl->get_AntiAliased(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_AntiAliased(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
+    return This->lpVtbl->put_AntiAliased(This,Flag);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_Transparency(IInkDrawingAttributes* This,LONG *CurrentTransparency) {
+    return This->lpVtbl->get_Transparency(This,CurrentTransparency);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_Transparency(IInkDrawingAttributes* This,LONG NewTransparency) {
+    return This->lpVtbl->put_Transparency(This,NewTransparency);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_RasterOperation(IInkDrawingAttributes* This,InkRasterOperation *CurrentRasterOperation) {
+    return This->lpVtbl->get_RasterOperation(This,CurrentRasterOperation);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_RasterOperation(IInkDrawingAttributes* This,InkRasterOperation NewRasterOperation) {
+    return This->lpVtbl->put_RasterOperation(This,NewRasterOperation);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_PenTip(IInkDrawingAttributes* This,InkPenTip *CurrentPenTip) {
+    return This->lpVtbl->get_PenTip(This,CurrentPenTip);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_put_PenTip(IInkDrawingAttributes* This,InkPenTip NewPenTip) {
+    return This->lpVtbl->put_PenTip(This,NewPenTip);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_get_ExtendedProperties(IInkDrawingAttributes* This,IInkExtendedProperties **Properties) {
+    return This->lpVtbl->get_ExtendedProperties(This,Properties);
+}
+static FORCEINLINE HRESULT IInkDrawingAttributes_Clone(IInkDrawingAttributes* This,IInkDrawingAttributes **DrawingAttributes) {
+    return This->lpVtbl->Clone(This,DrawingAttributes);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Color_Proxy(
+    IInkDrawingAttributes* This,
+    LONG *CurrentColor);
+void __RPC_STUB IInkDrawingAttributes_get_Color_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Color_Proxy(
+    IInkDrawingAttributes* This,
+    LONG NewColor);
+void __RPC_STUB IInkDrawingAttributes_put_Color_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Width_Proxy(
+    IInkDrawingAttributes* This,
+    float *CurrentWidth);
+void __RPC_STUB IInkDrawingAttributes_get_Width_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Width_Proxy(
+    IInkDrawingAttributes* This,
+    float NewWidth);
+void __RPC_STUB IInkDrawingAttributes_put_Width_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Height_Proxy(
+    IInkDrawingAttributes* This,
+    float *CurrentHeight);
+void __RPC_STUB IInkDrawingAttributes_get_Height_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Height_Proxy(
+    IInkDrawingAttributes* This,
+    float NewHeight);
+void __RPC_STUB IInkDrawingAttributes_put_Height_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_FitToCurve_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL *Flag);
+void __RPC_STUB IInkDrawingAttributes_get_FitToCurve_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_FitToCurve_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL Flag);
+void __RPC_STUB IInkDrawingAttributes_put_FitToCurve_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_IgnorePressure_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL *Flag);
+void __RPC_STUB IInkDrawingAttributes_get_IgnorePressure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_IgnorePressure_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL Flag);
+void __RPC_STUB IInkDrawingAttributes_put_IgnorePressure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_AntiAliased_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL *Flag);
+void __RPC_STUB IInkDrawingAttributes_get_AntiAliased_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_AntiAliased_Proxy(
+    IInkDrawingAttributes* This,
+    VARIANT_BOOL Flag);
+void __RPC_STUB IInkDrawingAttributes_put_AntiAliased_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_Transparency_Proxy(
+    IInkDrawingAttributes* This,
+    LONG *CurrentTransparency);
+void __RPC_STUB IInkDrawingAttributes_get_Transparency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_Transparency_Proxy(
+    IInkDrawingAttributes* This,
+    LONG NewTransparency);
+void __RPC_STUB IInkDrawingAttributes_put_Transparency_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_RasterOperation_Proxy(
+    IInkDrawingAttributes* This,
+    InkRasterOperation *CurrentRasterOperation);
+void __RPC_STUB IInkDrawingAttributes_get_RasterOperation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_RasterOperation_Proxy(
+    IInkDrawingAttributes* This,
+    InkRasterOperation NewRasterOperation);
+void __RPC_STUB IInkDrawingAttributes_put_RasterOperation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_PenTip_Proxy(
+    IInkDrawingAttributes* This,
+    InkPenTip *CurrentPenTip);
+void __RPC_STUB IInkDrawingAttributes_get_PenTip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_put_PenTip_Proxy(
+    IInkDrawingAttributes* This,
+    InkPenTip NewPenTip);
+void __RPC_STUB IInkDrawingAttributes_put_PenTip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_get_ExtendedProperties_Proxy(
+    IInkDrawingAttributes* This,
+    IInkExtendedProperties **Properties);
+void __RPC_STUB IInkDrawingAttributes_get_ExtendedProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDrawingAttributes_Clone_Proxy(
+    IInkDrawingAttributes* This,
+    IInkDrawingAttributes **DrawingAttributes);
+void __RPC_STUB IInkDrawingAttributes_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkDrawingAttributes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRectangle interface
+ */
+#ifndef __IInkRectangle_INTERFACE_DEFINED__
+#define __IInkRectangle_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRectangle, 0x9794ff82, 0x6071, 0x4717, 0x8a,0x8b, 0x6a,0xc7,0xc6,0x4a,0x68,0x6e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9794ff82-6071-4717-8a8b-6ac7c64a686e")
+IInkRectangle : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Top(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Top(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Left(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Left(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Bottom(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Bottom(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Right(
+        LONG *Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Right(
+        LONG Units) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Data(
+        RECT *Rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Data(
+        RECT Rect) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRectangle(
+        LONG *Top,
+        LONG *Left,
+        LONG *Bottom,
+        LONG *Right) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRectangle(
+        LONG Top,
+        LONG Left,
+        LONG Bottom,
+        LONG Right) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRectangle, 0x9794ff82, 0x6071, 0x4717, 0x8a,0x8b, 0x6a,0xc7,0xc6,0x4a,0x68,0x6e)
+#endif
+#else
+typedef struct IInkRectangleVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRectangle* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRectangle* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRectangle* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRectangle* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRectangle* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRectangle* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRectangle* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRectangle methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Top)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Top)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Left)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Left)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Bottom)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Bottom)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Right)(
+        IInkRectangle* This,
+        LONG *Units);
+
+    HRESULT (STDMETHODCALLTYPE *put_Right)(
+        IInkRectangle* This,
+        LONG Units);
+
+    HRESULT (STDMETHODCALLTYPE *get_Data)(
+        IInkRectangle* This,
+        RECT *Rect);
+
+    HRESULT (STDMETHODCALLTYPE *put_Data)(
+        IInkRectangle* This,
+        RECT Rect);
+
+    HRESULT (STDMETHODCALLTYPE *GetRectangle)(
+        IInkRectangle* This,
+        LONG *Top,
+        LONG *Left,
+        LONG *Bottom,
+        LONG *Right);
+
+    HRESULT (STDMETHODCALLTYPE *SetRectangle)(
+        IInkRectangle* This,
+        LONG Top,
+        LONG Left,
+        LONG Bottom,
+        LONG Right);
+
+    END_INTERFACE
+} IInkRectangleVtbl;
+interface IInkRectangle {
+    CONST_VTBL IInkRectangleVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRectangle_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRectangle_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRectangle_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRectangle_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRectangle_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRectangle_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRectangle_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRectangle methods ***/
+#define IInkRectangle_get_Top(This,Units) (This)->lpVtbl->get_Top(This,Units)
+#define IInkRectangle_put_Top(This,Units) (This)->lpVtbl->put_Top(This,Units)
+#define IInkRectangle_get_Left(This,Units) (This)->lpVtbl->get_Left(This,Units)
+#define IInkRectangle_put_Left(This,Units) (This)->lpVtbl->put_Left(This,Units)
+#define IInkRectangle_get_Bottom(This,Units) (This)->lpVtbl->get_Bottom(This,Units)
+#define IInkRectangle_put_Bottom(This,Units) (This)->lpVtbl->put_Bottom(This,Units)
+#define IInkRectangle_get_Right(This,Units) (This)->lpVtbl->get_Right(This,Units)
+#define IInkRectangle_put_Right(This,Units) (This)->lpVtbl->put_Right(This,Units)
+#define IInkRectangle_get_Data(This,Rect) (This)->lpVtbl->get_Data(This,Rect)
+#define IInkRectangle_put_Data(This,Rect) (This)->lpVtbl->put_Data(This,Rect)
+#define IInkRectangle_GetRectangle(This,Top,Left,Bottom,Right) (This)->lpVtbl->GetRectangle(This,Top,Left,Bottom,Right)
+#define IInkRectangle_SetRectangle(This,Top,Left,Bottom,Right) (This)->lpVtbl->SetRectangle(This,Top,Left,Bottom,Right)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRectangle_QueryInterface(IInkRectangle* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRectangle_AddRef(IInkRectangle* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRectangle_Release(IInkRectangle* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRectangle_GetTypeInfoCount(IInkRectangle* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRectangle_GetTypeInfo(IInkRectangle* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRectangle_GetIDsOfNames(IInkRectangle* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRectangle_Invoke(IInkRectangle* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRectangle methods ***/
+static FORCEINLINE HRESULT IInkRectangle_get_Top(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Top(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Top(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Top(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Left(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Left(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Left(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Left(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Bottom(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Bottom(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Bottom(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Bottom(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Right(IInkRectangle* This,LONG *Units) {
+    return This->lpVtbl->get_Right(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Right(IInkRectangle* This,LONG Units) {
+    return This->lpVtbl->put_Right(This,Units);
+}
+static FORCEINLINE HRESULT IInkRectangle_get_Data(IInkRectangle* This,RECT *Rect) {
+    return This->lpVtbl->get_Data(This,Rect);
+}
+static FORCEINLINE HRESULT IInkRectangle_put_Data(IInkRectangle* This,RECT Rect) {
+    return This->lpVtbl->put_Data(This,Rect);
+}
+static FORCEINLINE HRESULT IInkRectangle_GetRectangle(IInkRectangle* This,LONG *Top,LONG *Left,LONG *Bottom,LONG *Right) {
+    return This->lpVtbl->GetRectangle(This,Top,Left,Bottom,Right);
+}
+static FORCEINLINE HRESULT IInkRectangle_SetRectangle(IInkRectangle* This,LONG Top,LONG Left,LONG Bottom,LONG Right) {
+    return This->lpVtbl->SetRectangle(This,Top,Left,Bottom,Right);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Top_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Top_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Top_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Top_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Left_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Left_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Left_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Left_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Bottom_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Bottom_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Bottom_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Bottom_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Right_Proxy(
+    IInkRectangle* This,
+    LONG *Units);
+void __RPC_STUB IInkRectangle_get_Right_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Right_Proxy(
+    IInkRectangle* This,
+    LONG Units);
+void __RPC_STUB IInkRectangle_put_Right_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_get_Data_Proxy(
+    IInkRectangle* This,
+    RECT *Rect);
+void __RPC_STUB IInkRectangle_get_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_put_Data_Proxy(
+    IInkRectangle* This,
+    RECT Rect);
+void __RPC_STUB IInkRectangle_put_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_GetRectangle_Proxy(
+    IInkRectangle* This,
+    LONG *Top,
+    LONG *Left,
+    LONG *Bottom,
+    LONG *Right);
+void __RPC_STUB IInkRectangle_GetRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRectangle_SetRectangle_Proxy(
+    IInkRectangle* This,
+    LONG Top,
+    LONG Left,
+    LONG Bottom,
+    LONG Right);
+void __RPC_STUB IInkRectangle_SetRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRectangle_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkTablet interface
+ */
+#ifndef __IInkTablet_INTERFACE_DEFINED__
+#define __IInkTablet_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkTablet, 0x2de25eaa, 0x6ef8, 0x42d5, 0xae,0xe9, 0x18,0x5b,0xc8,0x1b,0x91,0x2d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2de25eaa-6ef8-42d5-aee9-185bc81b912d")
+IInkTablet : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PlugAndPlayId(
+        BSTR *Id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MaximumInputRectangle(
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_HardwareCapabilities(
+        TabletHardwareCapabilities *Capabilities) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsPacketPropertySupported(
+        BSTR packetPropertyName,
+        VARIANT_BOOL *Supported) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyMetrics(
+        BSTR propertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkTablet, 0x2de25eaa, 0x6ef8, 0x42d5, 0xae,0xe9, 0x18,0x5b,0xc8,0x1b,0x91,0x2d)
+#endif
+#else
+typedef struct IInkTabletVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkTablet* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkTablet* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkTablet* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkTablet* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkTablet* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkTablet* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkTablet* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkTablet methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IInkTablet* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_PlugAndPlayId)(
+        IInkTablet* This,
+        BSTR *Id);
+
+    HRESULT (STDMETHODCALLTYPE *get_MaximumInputRectangle)(
+        IInkTablet* This,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *get_HardwareCapabilities)(
+        IInkTablet* This,
+        TabletHardwareCapabilities *Capabilities);
+
+    HRESULT (STDMETHODCALLTYPE *IsPacketPropertySupported)(
+        IInkTablet* This,
+        BSTR packetPropertyName,
+        VARIANT_BOOL *Supported);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyMetrics)(
+        IInkTablet* This,
+        BSTR propertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution);
+
+    END_INTERFACE
+} IInkTabletVtbl;
+interface IInkTablet {
+    CONST_VTBL IInkTabletVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkTablet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkTablet_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkTablet_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkTablet_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkTablet_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkTablet_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkTablet_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkTablet methods ***/
+#define IInkTablet_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
+#define IInkTablet_get_PlugAndPlayId(This,Id) (This)->lpVtbl->get_PlugAndPlayId(This,Id)
+#define IInkTablet_get_MaximumInputRectangle(This,Rectangle) (This)->lpVtbl->get_MaximumInputRectangle(This,Rectangle)
+#define IInkTablet_get_HardwareCapabilities(This,Capabilities) (This)->lpVtbl->get_HardwareCapabilities(This,Capabilities)
+#define IInkTablet_IsPacketPropertySupported(This,packetPropertyName,Supported) (This)->lpVtbl->IsPacketPropertySupported(This,packetPropertyName,Supported)
+#define IInkTablet_GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution) (This)->lpVtbl->GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkTablet_QueryInterface(IInkTablet* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkTablet_AddRef(IInkTablet* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkTablet_Release(IInkTablet* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkTablet_GetTypeInfoCount(IInkTablet* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkTablet_GetTypeInfo(IInkTablet* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkTablet_GetIDsOfNames(IInkTablet* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkTablet_Invoke(IInkTablet* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkTablet methods ***/
+static FORCEINLINE HRESULT IInkTablet_get_Name(IInkTablet* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IInkTablet_get_PlugAndPlayId(IInkTablet* This,BSTR *Id) {
+    return This->lpVtbl->get_PlugAndPlayId(This,Id);
+}
+static FORCEINLINE HRESULT IInkTablet_get_MaximumInputRectangle(IInkTablet* This,IInkRectangle **Rectangle) {
+    return This->lpVtbl->get_MaximumInputRectangle(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkTablet_get_HardwareCapabilities(IInkTablet* This,TabletHardwareCapabilities *Capabilities) {
+    return This->lpVtbl->get_HardwareCapabilities(This,Capabilities);
+}
+static FORCEINLINE HRESULT IInkTablet_IsPacketPropertySupported(IInkTablet* This,BSTR packetPropertyName,VARIANT_BOOL *Supported) {
+    return This->lpVtbl->IsPacketPropertySupported(This,packetPropertyName,Supported);
+}
+static FORCEINLINE HRESULT IInkTablet_GetPropertyMetrics(IInkTablet* This,BSTR propertyName,LONG *Minimum,LONG *Maximum,TabletPropertyMetricUnit *Units,float *Resolution) {
+    return This->lpVtbl->GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkTablet_get_Name_Proxy(
+    IInkTablet* This,
+    BSTR *Name);
+void __RPC_STUB IInkTablet_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_get_PlugAndPlayId_Proxy(
+    IInkTablet* This,
+    BSTR *Id);
+void __RPC_STUB IInkTablet_get_PlugAndPlayId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_get_MaximumInputRectangle_Proxy(
+    IInkTablet* This,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkTablet_get_MaximumInputRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_get_HardwareCapabilities_Proxy(
+    IInkTablet* This,
+    TabletHardwareCapabilities *Capabilities);
+void __RPC_STUB IInkTablet_get_HardwareCapabilities_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_IsPacketPropertySupported_Proxy(
+    IInkTablet* This,
+    BSTR packetPropertyName,
+    VARIANT_BOOL *Supported);
+void __RPC_STUB IInkTablet_IsPacketPropertySupported_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTablet_GetPropertyMetrics_Proxy(
+    IInkTablet* This,
+    BSTR propertyName,
+    LONG *Minimum,
+    LONG *Maximum,
+    TabletPropertyMetricUnit *Units,
+    float *Resolution);
+void __RPC_STUB IInkTablet_GetPropertyMetrics_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkTablet_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursorButton interface
+ */
+#ifndef __IInkCursorButton_INTERFACE_DEFINED__
+#define __IInkCursorButton_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursorButton, 0x85ef9417, 0x1d59, 0x49b2, 0xa1,0x3c, 0x70,0x2c,0x85,0x43,0x08,0x94);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("85ef9417-1d59-49b2-a13c-702c85430894")
+IInkCursorButton : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Id(
+        BSTR *Id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_State(
+        InkCursorButtonState *CurrentState) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursorButton, 0x85ef9417, 0x1d59, 0x49b2, 0xa1,0x3c, 0x70,0x2c,0x85,0x43,0x08,0x94)
+#endif
+#else
+typedef struct IInkCursorButtonVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursorButton* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursorButton* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursorButton* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursorButton* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursorButton* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursorButton* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursorButton* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursorButton methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IInkCursorButton* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IInkCursorButton* This,
+        BSTR *Id);
+
+    HRESULT (STDMETHODCALLTYPE *get_State)(
+        IInkCursorButton* This,
+        InkCursorButtonState *CurrentState);
+
+    END_INTERFACE
+} IInkCursorButtonVtbl;
+interface IInkCursorButton {
+    CONST_VTBL IInkCursorButtonVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursorButton_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursorButton_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursorButton_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursorButton_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursorButton_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursorButton_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursorButton_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursorButton methods ***/
+#define IInkCursorButton_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
+#define IInkCursorButton_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
+#define IInkCursorButton_get_State(This,CurrentState) (This)->lpVtbl->get_State(This,CurrentState)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursorButton_QueryInterface(IInkCursorButton* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursorButton_AddRef(IInkCursorButton* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursorButton_Release(IInkCursorButton* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursorButton_GetTypeInfoCount(IInkCursorButton* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursorButton_GetTypeInfo(IInkCursorButton* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursorButton_GetIDsOfNames(IInkCursorButton* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursorButton_Invoke(IInkCursorButton* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursorButton methods ***/
+static FORCEINLINE HRESULT IInkCursorButton_get_Name(IInkCursorButton* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IInkCursorButton_get_Id(IInkCursorButton* This,BSTR *Id) {
+    return This->lpVtbl->get_Id(This,Id);
+}
+static FORCEINLINE HRESULT IInkCursorButton_get_State(IInkCursorButton* This,InkCursorButtonState *CurrentState) {
+    return This->lpVtbl->get_State(This,CurrentState);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursorButton_get_Name_Proxy(
+    IInkCursorButton* This,
+    BSTR *Name);
+void __RPC_STUB IInkCursorButton_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButton_get_Id_Proxy(
+    IInkCursorButton* This,
+    BSTR *Id);
+void __RPC_STUB IInkCursorButton_get_Id_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButton_get_State_Proxy(
+    IInkCursorButton* This,
+    InkCursorButtonState *CurrentState);
+void __RPC_STUB IInkCursorButton_get_State_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursorButton_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursorButtons interface
+ */
+#ifndef __IInkCursorButtons_INTERFACE_DEFINED__
+#define __IInkCursorButtons_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursorButtons, 0x3671cc40, 0xb624, 0x4671, 0x9f,0xa0, 0xdb,0x11,0x9d,0x95,0x2d,0x54);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3671cc40-b624-4671-9fa0-db119d952d54")
+IInkCursorButtons : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT Identifier,
+        IInkCursorButton **Button) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursorButtons, 0x3671cc40, 0xb624, 0x4671, 0x9f,0xa0, 0xdb,0x11,0x9d,0x95,0x2d,0x54)
+#endif
+#else
+typedef struct IInkCursorButtonsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursorButtons* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursorButtons* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursorButtons* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursorButtons* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursorButtons* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursorButtons* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursorButtons* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursorButtons methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkCursorButtons* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkCursorButtons* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkCursorButtons* This,
+        VARIANT Identifier,
+        IInkCursorButton **Button);
+
+    END_INTERFACE
+} IInkCursorButtonsVtbl;
+interface IInkCursorButtons {
+    CONST_VTBL IInkCursorButtonsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursorButtons_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursorButtons_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursorButtons_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursorButtons_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursorButtons_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursorButtons_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursorButtons_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursorButtons methods ***/
+#define IInkCursorButtons_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkCursorButtons_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkCursorButtons_Item(This,Identifier,Button) (This)->lpVtbl->Item(This,Identifier,Button)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursorButtons_QueryInterface(IInkCursorButtons* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursorButtons_AddRef(IInkCursorButtons* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursorButtons_Release(IInkCursorButtons* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursorButtons_GetTypeInfoCount(IInkCursorButtons* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_GetTypeInfo(IInkCursorButtons* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_GetIDsOfNames(IInkCursorButtons* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_Invoke(IInkCursorButtons* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursorButtons methods ***/
+static FORCEINLINE HRESULT IInkCursorButtons_get_Count(IInkCursorButtons* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_get__NewEnum(IInkCursorButtons* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkCursorButtons_Item(IInkCursorButtons* This,VARIANT Identifier,IInkCursorButton **Button) {
+    return This->lpVtbl->Item(This,Identifier,Button);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursorButtons_get_Count_Proxy(
+    IInkCursorButtons* This,
+    LONG *Count);
+void __RPC_STUB IInkCursorButtons_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButtons_get__NewEnum_Proxy(
+    IInkCursorButtons* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkCursorButtons_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursorButtons_Item_Proxy(
+    IInkCursorButtons* This,
+    VARIANT Identifier,
+    IInkCursorButton **Button);
+void __RPC_STUB IInkCursorButtons_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursorButtons_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursor interface
+ */
+#ifndef __IInkCursor_INTERFACE_DEFINED__
+#define __IInkCursor_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursor, 0xad30c630, 0x40c5, 0x4350, 0x84,0x05, 0x9c,0x71,0x01,0x2f,0xc5,0x58);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ad30c630-40c5-4350-8405-9c71012fc558")
+IInkCursor : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Name(
+        BSTR *Name) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Id(
+        LONG *Id) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Inverted(
+        VARIANT_BOOL *Status) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DrawingAttributes(
+        IInkDrawingAttributes **Attributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_DrawingAttributes(
+        IInkDrawingAttributes *Attributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Tablet(
+        IInkTablet **Tablet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Buttons(
+        IInkCursorButtons **Buttons) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursor, 0xad30c630, 0x40c5, 0x4350, 0x84,0x05, 0x9c,0x71,0x01,0x2f,0xc5,0x58)
+#endif
+#else
+typedef struct IInkCursorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursor* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursor* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursor* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursor* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursor* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursor* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursor* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursor methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Name)(
+        IInkCursor* This,
+        BSTR *Name);
+
+    HRESULT (STDMETHODCALLTYPE *get_Id)(
+        IInkCursor* This,
+        LONG *Id);
+
+    HRESULT (STDMETHODCALLTYPE *get_Inverted)(
+        IInkCursor* This,
+        VARIANT_BOOL *Status);
+
+    HRESULT (STDMETHODCALLTYPE *get_DrawingAttributes)(
+        IInkCursor* This,
+        IInkDrawingAttributes **Attributes);
+
+    HRESULT (STDMETHODCALLTYPE *putref_DrawingAttributes)(
+        IInkCursor* This,
+        IInkDrawingAttributes *Attributes);
+
+    HRESULT (STDMETHODCALLTYPE *get_Tablet)(
+        IInkCursor* This,
+        IInkTablet **Tablet);
+
+    HRESULT (STDMETHODCALLTYPE *get_Buttons)(
+        IInkCursor* This,
+        IInkCursorButtons **Buttons);
+
+    END_INTERFACE
+} IInkCursorVtbl;
+interface IInkCursor {
+    CONST_VTBL IInkCursorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursor_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursor_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursor_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursor_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursor_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursor_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursor methods ***/
+#define IInkCursor_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
+#define IInkCursor_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
+#define IInkCursor_get_Inverted(This,Status) (This)->lpVtbl->get_Inverted(This,Status)
+#define IInkCursor_get_DrawingAttributes(This,Attributes) (This)->lpVtbl->get_DrawingAttributes(This,Attributes)
+#define IInkCursor_putref_DrawingAttributes(This,Attributes) (This)->lpVtbl->putref_DrawingAttributes(This,Attributes)
+#define IInkCursor_get_Tablet(This,Tablet) (This)->lpVtbl->get_Tablet(This,Tablet)
+#define IInkCursor_get_Buttons(This,Buttons) (This)->lpVtbl->get_Buttons(This,Buttons)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursor_QueryInterface(IInkCursor* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursor_AddRef(IInkCursor* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursor_Release(IInkCursor* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursor_GetTypeInfoCount(IInkCursor* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursor_GetTypeInfo(IInkCursor* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursor_GetIDsOfNames(IInkCursor* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursor_Invoke(IInkCursor* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursor methods ***/
+static FORCEINLINE HRESULT IInkCursor_get_Name(IInkCursor* This,BSTR *Name) {
+    return This->lpVtbl->get_Name(This,Name);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Id(IInkCursor* This,LONG *Id) {
+    return This->lpVtbl->get_Id(This,Id);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Inverted(IInkCursor* This,VARIANT_BOOL *Status) {
+    return This->lpVtbl->get_Inverted(This,Status);
+}
+static FORCEINLINE HRESULT IInkCursor_get_DrawingAttributes(IInkCursor* This,IInkDrawingAttributes **Attributes) {
+    return This->lpVtbl->get_DrawingAttributes(This,Attributes);
+}
+static FORCEINLINE HRESULT IInkCursor_putref_DrawingAttributes(IInkCursor* This,IInkDrawingAttributes *Attributes) {
+    return This->lpVtbl->putref_DrawingAttributes(This,Attributes);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Tablet(IInkCursor* This,IInkTablet **Tablet) {
+    return This->lpVtbl->get_Tablet(This,Tablet);
+}
+static FORCEINLINE HRESULT IInkCursor_get_Buttons(IInkCursor* This,IInkCursorButtons **Buttons) {
+    return This->lpVtbl->get_Buttons(This,Buttons);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Name_Proxy(
+    IInkCursor* This,
+    BSTR *Name);
+void __RPC_STUB IInkCursor_get_Name_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Id_Proxy(
+    IInkCursor* This,
+    LONG *Id);
+void __RPC_STUB IInkCursor_get_Id_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Inverted_Proxy(
+    IInkCursor* This,
+    VARIANT_BOOL *Status);
+void __RPC_STUB IInkCursor_get_Inverted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_DrawingAttributes_Proxy(
+    IInkCursor* This,
+    IInkDrawingAttributes **Attributes);
+void __RPC_STUB IInkCursor_get_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_putref_DrawingAttributes_Proxy(
+    IInkCursor* This,
+    IInkDrawingAttributes *Attributes);
+void __RPC_STUB IInkCursor_putref_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Tablet_Proxy(
+    IInkCursor* This,
+    IInkTablet **Tablet);
+void __RPC_STUB IInkCursor_get_Tablet_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursor_get_Buttons_Proxy(
+    IInkCursor* This,
+    IInkCursorButtons **Buttons);
+void __RPC_STUB IInkCursor_get_Buttons_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursor_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkTransform interface
+ */
+#ifndef __IInkTransform_INTERFACE_DEFINED__
+#define __IInkTransform_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkTransform, 0x615f1d43, 0x8703, 0x4565, 0x88,0xe2, 0x82,0x01,0xd2,0xec,0xd7,0xb7);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("615f1d43-8703-4565-88e2-8201d2ecd7b7")
+IInkTransform : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE Reset(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Translate(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Reflect(
+        VARIANT_BOOL Horizontally,
+        VARIANT_BOOL Vertically) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Shear(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTransform(
+        float *eM11,
+        float *eM12,
+        float *eM21,
+        float *eM22,
+        float *eDx,
+        float *eDy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTransform(
+        float eM11,
+        float eM12,
+        float eM21,
+        float eM22,
+        float eDx,
+        float eDy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM11(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM11(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM12(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM12(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM21(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM21(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eM22(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eM22(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eDx(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eDx(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_eDy(
+        float *Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_eDy(
+        float Value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Data(
+        XFORM *XForm) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Data(
+        XFORM XForm) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkTransform, 0x615f1d43, 0x8703, 0x4565, 0x88,0xe2, 0x82,0x01,0xd2,0xec,0xd7,0xb7)
+#endif
+#else
+typedef struct IInkTransformVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkTransform* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkTransform* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkTransform* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkTransform* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkTransform* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkTransform* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkTransform* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkTransform methods ***/
+    HRESULT (STDMETHODCALLTYPE *Reset)(
+        IInkTransform* This);
+
+    HRESULT (STDMETHODCALLTYPE *Translate)(
+        IInkTransform* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkTransform* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *Reflect)(
+        IInkTransform* This,
+        VARIANT_BOOL Horizontally,
+        VARIANT_BOOL Vertically);
+
+    HRESULT (STDMETHODCALLTYPE *Shear)(
+        IInkTransform* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkTransform* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransform)(
+        IInkTransform* This,
+        float *eM11,
+        float *eM12,
+        float *eM21,
+        float *eM22,
+        float *eDx,
+        float *eDy);
+
+    HRESULT (STDMETHODCALLTYPE *SetTransform)(
+        IInkTransform* This,
+        float eM11,
+        float eM12,
+        float eM21,
+        float eM22,
+        float eDx,
+        float eDy);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM11)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM11)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM12)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM12)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM21)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM21)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eM22)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eM22)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eDx)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eDx)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_eDy)(
+        IInkTransform* This,
+        float *Value);
+
+    HRESULT (STDMETHODCALLTYPE *put_eDy)(
+        IInkTransform* This,
+        float Value);
+
+    HRESULT (STDMETHODCALLTYPE *get_Data)(
+        IInkTransform* This,
+        XFORM *XForm);
+
+    HRESULT (STDMETHODCALLTYPE *put_Data)(
+        IInkTransform* This,
+        XFORM XForm);
+
+    END_INTERFACE
+} IInkTransformVtbl;
+interface IInkTransform {
+    CONST_VTBL IInkTransformVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkTransform_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkTransform_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkTransform_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkTransform_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkTransform_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkTransform methods ***/
+#define IInkTransform_Reset(This) (This)->lpVtbl->Reset(This)
+#define IInkTransform_Translate(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Translate(This,HorizontalComponent,VerticalComponent)
+#define IInkTransform_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkTransform_Reflect(This,Horizontally,Vertically) (This)->lpVtbl->Reflect(This,Horizontally,Vertically)
+#define IInkTransform_Shear(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Shear(This,HorizontalComponent,VerticalComponent)
+#define IInkTransform_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkTransform_GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy) (This)->lpVtbl->GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy)
+#define IInkTransform_SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy) (This)->lpVtbl->SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy)
+#define IInkTransform_get_eM11(This,Value) (This)->lpVtbl->get_eM11(This,Value)
+#define IInkTransform_put_eM11(This,Value) (This)->lpVtbl->put_eM11(This,Value)
+#define IInkTransform_get_eM12(This,Value) (This)->lpVtbl->get_eM12(This,Value)
+#define IInkTransform_put_eM12(This,Value) (This)->lpVtbl->put_eM12(This,Value)
+#define IInkTransform_get_eM21(This,Value) (This)->lpVtbl->get_eM21(This,Value)
+#define IInkTransform_put_eM21(This,Value) (This)->lpVtbl->put_eM21(This,Value)
+#define IInkTransform_get_eM22(This,Value) (This)->lpVtbl->get_eM22(This,Value)
+#define IInkTransform_put_eM22(This,Value) (This)->lpVtbl->put_eM22(This,Value)
+#define IInkTransform_get_eDx(This,Value) (This)->lpVtbl->get_eDx(This,Value)
+#define IInkTransform_put_eDx(This,Value) (This)->lpVtbl->put_eDx(This,Value)
+#define IInkTransform_get_eDy(This,Value) (This)->lpVtbl->get_eDy(This,Value)
+#define IInkTransform_put_eDy(This,Value) (This)->lpVtbl->put_eDy(This,Value)
+#define IInkTransform_get_Data(This,XForm) (This)->lpVtbl->get_Data(This,XForm)
+#define IInkTransform_put_Data(This,XForm) (This)->lpVtbl->put_Data(This,XForm)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkTransform_QueryInterface(IInkTransform* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkTransform_AddRef(IInkTransform* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkTransform_Release(IInkTransform* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkTransform_GetTypeInfoCount(IInkTransform* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkTransform_GetTypeInfo(IInkTransform* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkTransform_GetIDsOfNames(IInkTransform* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkTransform_Invoke(IInkTransform* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkTransform methods ***/
+static FORCEINLINE HRESULT IInkTransform_Reset(IInkTransform* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IInkTransform_Translate(IInkTransform* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Translate(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkTransform_Rotate(IInkTransform* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkTransform_Reflect(IInkTransform* This,VARIANT_BOOL Horizontally,VARIANT_BOOL Vertically) {
+    return This->lpVtbl->Reflect(This,Horizontally,Vertically);
+}
+static FORCEINLINE HRESULT IInkTransform_Shear(IInkTransform* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Shear(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkTransform_ScaleTransform(IInkTransform* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkTransform_GetTransform(IInkTransform* This,float *eM11,float *eM12,float *eM21,float *eM22,float *eDx,float *eDy) {
+    return This->lpVtbl->GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy);
+}
+static FORCEINLINE HRESULT IInkTransform_SetTransform(IInkTransform* This,float eM11,float eM12,float eM21,float eM22,float eDx,float eDy) {
+    return This->lpVtbl->SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM11(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM11(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM11(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM11(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM12(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM12(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM12(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM12(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM21(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM21(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM21(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM21(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eM22(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eM22(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eM22(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eM22(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eDx(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eDx(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eDx(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eDx(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_eDy(IInkTransform* This,float *Value) {
+    return This->lpVtbl->get_eDy(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_put_eDy(IInkTransform* This,float Value) {
+    return This->lpVtbl->put_eDy(This,Value);
+}
+static FORCEINLINE HRESULT IInkTransform_get_Data(IInkTransform* This,XFORM *XForm) {
+    return This->lpVtbl->get_Data(This,XForm);
+}
+static FORCEINLINE HRESULT IInkTransform_put_Data(IInkTransform* This,XFORM XForm) {
+    return This->lpVtbl->put_Data(This,XForm);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkTransform_Reset_Proxy(
+    IInkTransform* This);
+void __RPC_STUB IInkTransform_Reset_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Translate_Proxy(
+    IInkTransform* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkTransform_Translate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Rotate_Proxy(
+    IInkTransform* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkTransform_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Reflect_Proxy(
+    IInkTransform* This,
+    VARIANT_BOOL Horizontally,
+    VARIANT_BOOL Vertically);
+void __RPC_STUB IInkTransform_Reflect_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_Shear_Proxy(
+    IInkTransform* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkTransform_Shear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_ScaleTransform_Proxy(
+    IInkTransform* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkTransform_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_GetTransform_Proxy(
+    IInkTransform* This,
+    float *eM11,
+    float *eM12,
+    float *eM21,
+    float *eM22,
+    float *eDx,
+    float *eDy);
+void __RPC_STUB IInkTransform_GetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_SetTransform_Proxy(
+    IInkTransform* This,
+    float eM11,
+    float eM12,
+    float eM21,
+    float eM22,
+    float eDx,
+    float eDy);
+void __RPC_STUB IInkTransform_SetTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM11_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM11_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM11_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM11_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM12_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM12_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM12_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM12_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM21_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM21_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM21_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM21_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eM22_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eM22_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eM22_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eM22_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eDx_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eDx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eDx_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eDx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_eDy_Proxy(
+    IInkTransform* This,
+    float *Value);
+void __RPC_STUB IInkTransform_get_eDy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_eDy_Proxy(
+    IInkTransform* This,
+    float Value);
+void __RPC_STUB IInkTransform_put_eDy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_get_Data_Proxy(
+    IInkTransform* This,
+    XFORM *XForm);
+void __RPC_STUB IInkTransform_get_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkTransform_put_Data_Proxy(
+    IInkTransform* This,
+    XFORM XForm);
+void __RPC_STUB IInkTransform_put_Data_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkTransform_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRecognitionAlternates interface
+ */
+#ifndef __IInkRecognitionAlternates_INTERFACE_DEFINED__
+#define __IInkRecognitionAlternates_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRecognitionAlternates, 0x286a167f, 0x9f19, 0x4c61, 0x9d,0x53, 0x4f,0x07,0xbe,0x62,0x2b,0x84);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("286a167f-9f19-4c61-9d53-4f07be622b84")
+IInkRecognitionAlternates : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG Index,
+        IInkRecognitionAlternate **InkRecoAlternate) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRecognitionAlternates, 0x286a167f, 0x9f19, 0x4c61, 0x9d,0x53, 0x4f,0x07,0xbe,0x62,0x2b,0x84)
+#endif
+#else
+typedef struct IInkRecognitionAlternatesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRecognitionAlternates* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRecognitionAlternates* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRecognitionAlternates* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRecognitionAlternates* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRecognitionAlternates* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRecognitionAlternates* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRecognitionAlternates* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRecognitionAlternates methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkRecognitionAlternates* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkRecognitionAlternates* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkRecognitionAlternates* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkRecognitionAlternates* This,
+        LONG Index,
+        IInkRecognitionAlternate **InkRecoAlternate);
+
+    END_INTERFACE
+} IInkRecognitionAlternatesVtbl;
+interface IInkRecognitionAlternates {
+    CONST_VTBL IInkRecognitionAlternatesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRecognitionAlternates_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRecognitionAlternates_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRecognitionAlternates_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRecognitionAlternates_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRecognitionAlternates_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRecognitionAlternates_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRecognitionAlternates_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRecognitionAlternates methods ***/
+#define IInkRecognitionAlternates_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkRecognitionAlternates_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkRecognitionAlternates_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkRecognitionAlternates_Item(This,Index,InkRecoAlternate) (This)->lpVtbl->Item(This,Index,InkRecoAlternate)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternates_QueryInterface(IInkRecognitionAlternates* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternates_AddRef(IInkRecognitionAlternates* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternates_Release(IInkRecognitionAlternates* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternates_GetTypeInfoCount(IInkRecognitionAlternates* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_GetTypeInfo(IInkRecognitionAlternates* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_GetIDsOfNames(IInkRecognitionAlternates* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_Invoke(IInkRecognitionAlternates* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRecognitionAlternates methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternates_get_Count(IInkRecognitionAlternates* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_get__NewEnum(IInkRecognitionAlternates* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_get_Strokes(IInkRecognitionAlternates* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternates_Item(IInkRecognitionAlternates* This,LONG Index,IInkRecognitionAlternate **InkRecoAlternate) {
+    return This->lpVtbl->Item(This,Index,InkRecoAlternate);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_get_Count_Proxy(
+    IInkRecognitionAlternates* This,
+    LONG *Count);
+void __RPC_STUB IInkRecognitionAlternates_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_get__NewEnum_Proxy(
+    IInkRecognitionAlternates* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkRecognitionAlternates_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_get_Strokes_Proxy(
+    IInkRecognitionAlternates* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkRecognitionAlternates_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternates_Item_Proxy(
+    IInkRecognitionAlternates* This,
+    LONG Index,
+    IInkRecognitionAlternate **InkRecoAlternate);
+void __RPC_STUB IInkRecognitionAlternates_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRecognitionAlternates_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRecognitionAlternate interface
+ */
+#ifndef __IInkRecognitionAlternate_INTERFACE_DEFINED__
+#define __IInkRecognitionAlternate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRecognitionAlternate, 0xb7e660ad, 0x77e4, 0x429b, 0xad,0xda, 0x87,0x37,0x80,0xd1,0xfc,0x4a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b7e660ad-77e4-429b-adda-873780d1fc4a")
+IInkRecognitionAlternate : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_String(
+        BSTR *RecoString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Confidence(
+        InkRecognitionConfidence *Confidence) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Baseline(
+        VARIANT *Baseline) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Midline(
+        VARIANT *Midline) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ascender(
+        VARIANT *Ascender) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Descender(
+        VARIANT *Descender) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LineNumber(
+        LONG *LineNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_LineAlternates(
+        IInkRecognitionAlternates **LineAlternates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ConfidenceAlternates(
+        IInkRecognitionAlternates **ConfidenceAlternates) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStrokesFromStrokeRanges(
+        IInkStrokes *Strokes,
+        IInkStrokes **GetStrokesFromStrokeRanges) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStrokesFromTextRange(
+        LONG *selectionStart,
+        LONG *selectionLength,
+        IInkStrokes **GetStrokesFromTextRange) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTextRangeFromStrokes(
+        IInkStrokes *Strokes,
+        LONG *selectionStart,
+        LONG *selectionLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AlternatesWithConstantPropertyValues(
+        BSTR PropertyType,
+        IInkRecognitionAlternates **AlternatesWithConstantPropertyValues) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
+        BSTR PropertyType,
+        VARIANT *PropertyValue) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRecognitionAlternate, 0xb7e660ad, 0x77e4, 0x429b, 0xad,0xda, 0x87,0x37,0x80,0xd1,0xfc,0x4a)
+#endif
+#else
+typedef struct IInkRecognitionAlternateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRecognitionAlternate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRecognitionAlternate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRecognitionAlternate* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRecognitionAlternate* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRecognitionAlternate* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRecognitionAlternate* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRecognitionAlternate* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRecognitionAlternate methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_String)(
+        IInkRecognitionAlternate* This,
+        BSTR *RecoString);
+
+    HRESULT (STDMETHODCALLTYPE *get_Confidence)(
+        IInkRecognitionAlternate* This,
+        InkRecognitionConfidence *Confidence);
+
+    HRESULT (STDMETHODCALLTYPE *get_Baseline)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Baseline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Midline)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Midline);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ascender)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Ascender);
+
+    HRESULT (STDMETHODCALLTYPE *get_Descender)(
+        IInkRecognitionAlternate* This,
+        VARIANT *Descender);
+
+    HRESULT (STDMETHODCALLTYPE *get_LineNumber)(
+        IInkRecognitionAlternate* This,
+        LONG *LineNumber);
+
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkRecognitionAlternate* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *get_LineAlternates)(
+        IInkRecognitionAlternate* This,
+        IInkRecognitionAlternates **LineAlternates);
+
+    HRESULT (STDMETHODCALLTYPE *get_ConfidenceAlternates)(
+        IInkRecognitionAlternate* This,
+        IInkRecognitionAlternates **ConfidenceAlternates);
+
+    HRESULT (STDMETHODCALLTYPE *GetStrokesFromStrokeRanges)(
+        IInkRecognitionAlternate* This,
+        IInkStrokes *Strokes,
+        IInkStrokes **GetStrokesFromStrokeRanges);
+
+    HRESULT (STDMETHODCALLTYPE *GetStrokesFromTextRange)(
+        IInkRecognitionAlternate* This,
+        LONG *selectionStart,
+        LONG *selectionLength,
+        IInkStrokes **GetStrokesFromTextRange);
+
+    HRESULT (STDMETHODCALLTYPE *GetTextRangeFromStrokes)(
+        IInkRecognitionAlternate* This,
+        IInkStrokes *Strokes,
+        LONG *selectionStart,
+        LONG *selectionLength);
+
+    HRESULT (STDMETHODCALLTYPE *AlternatesWithConstantPropertyValues)(
+        IInkRecognitionAlternate* This,
+        BSTR PropertyType,
+        IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyValue)(
+        IInkRecognitionAlternate* This,
+        BSTR PropertyType,
+        VARIANT *PropertyValue);
+
+    END_INTERFACE
+} IInkRecognitionAlternateVtbl;
+interface IInkRecognitionAlternate {
+    CONST_VTBL IInkRecognitionAlternateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRecognitionAlternate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRecognitionAlternate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRecognitionAlternate_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRecognitionAlternate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRecognitionAlternate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRecognitionAlternate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRecognitionAlternate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRecognitionAlternate methods ***/
+#define IInkRecognitionAlternate_get_String(This,RecoString) (This)->lpVtbl->get_String(This,RecoString)
+#define IInkRecognitionAlternate_get_Confidence(This,Confidence) (This)->lpVtbl->get_Confidence(This,Confidence)
+#define IInkRecognitionAlternate_get_Baseline(This,Baseline) (This)->lpVtbl->get_Baseline(This,Baseline)
+#define IInkRecognitionAlternate_get_Midline(This,Midline) (This)->lpVtbl->get_Midline(This,Midline)
+#define IInkRecognitionAlternate_get_Ascender(This,Ascender) (This)->lpVtbl->get_Ascender(This,Ascender)
+#define IInkRecognitionAlternate_get_Descender(This,Descender) (This)->lpVtbl->get_Descender(This,Descender)
+#define IInkRecognitionAlternate_get_LineNumber(This,LineNumber) (This)->lpVtbl->get_LineNumber(This,LineNumber)
+#define IInkRecognitionAlternate_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkRecognitionAlternate_get_LineAlternates(This,LineAlternates) (This)->lpVtbl->get_LineAlternates(This,LineAlternates)
+#define IInkRecognitionAlternate_get_ConfidenceAlternates(This,ConfidenceAlternates) (This)->lpVtbl->get_ConfidenceAlternates(This,ConfidenceAlternates)
+#define IInkRecognitionAlternate_GetStrokesFromStrokeRanges(This,Strokes,GetStrokesFromStrokeRanges) (This)->lpVtbl->GetStrokesFromStrokeRanges(This,Strokes,GetStrokesFromStrokeRanges)
+#define IInkRecognitionAlternate_GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange) (This)->lpVtbl->GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange)
+#define IInkRecognitionAlternate_GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength) (This)->lpVtbl->GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength)
+#define IInkRecognitionAlternate_AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues) (This)->lpVtbl->AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues)
+#define IInkRecognitionAlternate_GetPropertyValue(This,PropertyType,PropertyValue) (This)->lpVtbl->GetPropertyValue(This,PropertyType,PropertyValue)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternate_QueryInterface(IInkRecognitionAlternate* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternate_AddRef(IInkRecognitionAlternate* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRecognitionAlternate_Release(IInkRecognitionAlternate* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTypeInfoCount(IInkRecognitionAlternate* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTypeInfo(IInkRecognitionAlternate* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetIDsOfNames(IInkRecognitionAlternate* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_Invoke(IInkRecognitionAlternate* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRecognitionAlternate methods ***/
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_String(IInkRecognitionAlternate* This,BSTR *RecoString) {
+    return This->lpVtbl->get_String(This,RecoString);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Confidence(IInkRecognitionAlternate* This,InkRecognitionConfidence *Confidence) {
+    return This->lpVtbl->get_Confidence(This,Confidence);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Baseline(IInkRecognitionAlternate* This,VARIANT *Baseline) {
+    return This->lpVtbl->get_Baseline(This,Baseline);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Midline(IInkRecognitionAlternate* This,VARIANT *Midline) {
+    return This->lpVtbl->get_Midline(This,Midline);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Ascender(IInkRecognitionAlternate* This,VARIANT *Ascender) {
+    return This->lpVtbl->get_Ascender(This,Ascender);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Descender(IInkRecognitionAlternate* This,VARIANT *Descender) {
+    return This->lpVtbl->get_Descender(This,Descender);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_LineNumber(IInkRecognitionAlternate* This,LONG *LineNumber) {
+    return This->lpVtbl->get_LineNumber(This,LineNumber);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Strokes(IInkRecognitionAlternate* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_LineAlternates(IInkRecognitionAlternate* This,IInkRecognitionAlternates **LineAlternates) {
+    return This->lpVtbl->get_LineAlternates(This,LineAlternates);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_get_ConfidenceAlternates(IInkRecognitionAlternate* This,IInkRecognitionAlternates **ConfidenceAlternates) {
+    return This->lpVtbl->get_ConfidenceAlternates(This,ConfidenceAlternates);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetStrokesFromStrokeRanges(IInkRecognitionAlternate* This,IInkStrokes *Strokes,IInkStrokes **GetStrokesFromStrokeRanges) {
+    return This->lpVtbl->GetStrokesFromStrokeRanges(This,Strokes,GetStrokesFromStrokeRanges);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetStrokesFromTextRange(IInkRecognitionAlternate* This,LONG *selectionStart,LONG *selectionLength,IInkStrokes **GetStrokesFromTextRange) {
+    return This->lpVtbl->GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTextRangeFromStrokes(IInkRecognitionAlternate* This,IInkStrokes *Strokes,LONG *selectionStart,LONG *selectionLength) {
+    return This->lpVtbl->GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_AlternatesWithConstantPropertyValues(IInkRecognitionAlternate* This,BSTR PropertyType,IInkRecognitionAlternates **AlternatesWithConstantPropertyValues) {
+    return This->lpVtbl->AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues);
+}
+static FORCEINLINE HRESULT IInkRecognitionAlternate_GetPropertyValue(IInkRecognitionAlternate* This,BSTR PropertyType,VARIANT *PropertyValue) {
+    return This->lpVtbl->GetPropertyValue(This,PropertyType,PropertyValue);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_String_Proxy(
+    IInkRecognitionAlternate* This,
+    BSTR *RecoString);
+void __RPC_STUB IInkRecognitionAlternate_get_String_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Confidence_Proxy(
+    IInkRecognitionAlternate* This,
+    InkRecognitionConfidence *Confidence);
+void __RPC_STUB IInkRecognitionAlternate_get_Confidence_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Baseline_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Baseline);
+void __RPC_STUB IInkRecognitionAlternate_get_Baseline_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Midline_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Midline);
+void __RPC_STUB IInkRecognitionAlternate_get_Midline_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Ascender_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Ascender);
+void __RPC_STUB IInkRecognitionAlternate_get_Ascender_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Descender_Proxy(
+    IInkRecognitionAlternate* This,
+    VARIANT *Descender);
+void __RPC_STUB IInkRecognitionAlternate_get_Descender_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_LineNumber_Proxy(
+    IInkRecognitionAlternate* This,
+    LONG *LineNumber);
+void __RPC_STUB IInkRecognitionAlternate_get_LineNumber_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_Strokes_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkRecognitionAlternate_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_LineAlternates_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkRecognitionAlternates **LineAlternates);
+void __RPC_STUB IInkRecognitionAlternate_get_LineAlternates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_get_ConfidenceAlternates_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkRecognitionAlternates **ConfidenceAlternates);
+void __RPC_STUB IInkRecognitionAlternate_get_ConfidenceAlternates_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetStrokesFromStrokeRanges_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkStrokes *Strokes,
+    IInkStrokes **GetStrokesFromStrokeRanges);
+void __RPC_STUB IInkRecognitionAlternate_GetStrokesFromStrokeRanges_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetStrokesFromTextRange_Proxy(
+    IInkRecognitionAlternate* This,
+    LONG *selectionStart,
+    LONG *selectionLength,
+    IInkStrokes **GetStrokesFromTextRange);
+void __RPC_STUB IInkRecognitionAlternate_GetStrokesFromTextRange_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetTextRangeFromStrokes_Proxy(
+    IInkRecognitionAlternate* This,
+    IInkStrokes *Strokes,
+    LONG *selectionStart,
+    LONG *selectionLength);
+void __RPC_STUB IInkRecognitionAlternate_GetTextRangeFromStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_AlternatesWithConstantPropertyValues_Proxy(
+    IInkRecognitionAlternate* This,
+    BSTR PropertyType,
+    IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);
+void __RPC_STUB IInkRecognitionAlternate_AlternatesWithConstantPropertyValues_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionAlternate_GetPropertyValue_Proxy(
+    IInkRecognitionAlternate* This,
+    BSTR PropertyType,
+    VARIANT *PropertyValue);
+void __RPC_STUB IInkRecognitionAlternate_GetPropertyValue_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRecognitionAlternate_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRecognitionResult interface
+ */
+#ifndef __IInkRecognitionResult_INTERFACE_DEFINED__
+#define __IInkRecognitionResult_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRecognitionResult, 0x3bc129a8, 0x86cd, 0x45ad, 0xbd,0xe8, 0xe0,0xd3,0x2d,0x61,0xc1,0x6d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3bc129a8-86cd-45ad-bde8-e0d32d61c16d")
+IInkRecognitionResult : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_TopString(
+        BSTR *TopString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TopAlternate(
+        IInkRecognitionAlternate **TopAlternate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_TopConfidence(
+        InkRecognitionConfidence *TopConfidence) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AlternatesFromSelection(
+        LONG selectionStart,
+        LONG selectionLength,
+        LONG maximumAlternates,
+        IInkRecognitionAlternates **AlternatesFromSelection) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ModifyTopAlternate(
+        IInkRecognitionAlternate *Alternate) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetResultOnStrokes(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRecognitionResult, 0x3bc129a8, 0x86cd, 0x45ad, 0xbd,0xe8, 0xe0,0xd3,0x2d,0x61,0xc1,0x6d)
+#endif
+#else
+typedef struct IInkRecognitionResultVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRecognitionResult* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRecognitionResult* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRecognitionResult* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRecognitionResult* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRecognitionResult* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRecognitionResult* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRecognitionResult* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRecognitionResult methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_TopString)(
+        IInkRecognitionResult* This,
+        BSTR *TopString);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopAlternate)(
+        IInkRecognitionResult* This,
+        IInkRecognitionAlternate **TopAlternate);
+
+    HRESULT (STDMETHODCALLTYPE *get_TopConfidence)(
+        IInkRecognitionResult* This,
+        InkRecognitionConfidence *TopConfidence);
+
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkRecognitionResult* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *AlternatesFromSelection)(
+        IInkRecognitionResult* This,
+        LONG selectionStart,
+        LONG selectionLength,
+        LONG maximumAlternates,
+        IInkRecognitionAlternates **AlternatesFromSelection);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyTopAlternate)(
+        IInkRecognitionResult* This,
+        IInkRecognitionAlternate *Alternate);
+
+    HRESULT (STDMETHODCALLTYPE *SetResultOnStrokes)(
+        IInkRecognitionResult* This);
+
+    END_INTERFACE
+} IInkRecognitionResultVtbl;
+interface IInkRecognitionResult {
+    CONST_VTBL IInkRecognitionResultVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRecognitionResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRecognitionResult_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRecognitionResult_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRecognitionResult_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRecognitionResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRecognitionResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRecognitionResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRecognitionResult methods ***/
+#define IInkRecognitionResult_get_TopString(This,TopString) (This)->lpVtbl->get_TopString(This,TopString)
+#define IInkRecognitionResult_get_TopAlternate(This,TopAlternate) (This)->lpVtbl->get_TopAlternate(This,TopAlternate)
+#define IInkRecognitionResult_get_TopConfidence(This,TopConfidence) (This)->lpVtbl->get_TopConfidence(This,TopConfidence)
+#define IInkRecognitionResult_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkRecognitionResult_AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection) (This)->lpVtbl->AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection)
+#define IInkRecognitionResult_ModifyTopAlternate(This,Alternate) (This)->lpVtbl->ModifyTopAlternate(This,Alternate)
+#define IInkRecognitionResult_SetResultOnStrokes(This) (This)->lpVtbl->SetResultOnStrokes(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRecognitionResult_QueryInterface(IInkRecognitionResult* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRecognitionResult_AddRef(IInkRecognitionResult* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRecognitionResult_Release(IInkRecognitionResult* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRecognitionResult_GetTypeInfoCount(IInkRecognitionResult* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_GetTypeInfo(IInkRecognitionResult* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_GetIDsOfNames(IInkRecognitionResult* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_Invoke(IInkRecognitionResult* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRecognitionResult methods ***/
+static FORCEINLINE HRESULT IInkRecognitionResult_get_TopString(IInkRecognitionResult* This,BSTR *TopString) {
+    return This->lpVtbl->get_TopString(This,TopString);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_get_TopAlternate(IInkRecognitionResult* This,IInkRecognitionAlternate **TopAlternate) {
+    return This->lpVtbl->get_TopAlternate(This,TopAlternate);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_get_TopConfidence(IInkRecognitionResult* This,InkRecognitionConfidence *TopConfidence) {
+    return This->lpVtbl->get_TopConfidence(This,TopConfidence);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_get_Strokes(IInkRecognitionResult* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_AlternatesFromSelection(IInkRecognitionResult* This,LONG selectionStart,LONG selectionLength,LONG maximumAlternates,IInkRecognitionAlternates **AlternatesFromSelection) {
+    return This->lpVtbl->AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_ModifyTopAlternate(IInkRecognitionResult* This,IInkRecognitionAlternate *Alternate) {
+    return This->lpVtbl->ModifyTopAlternate(This,Alternate);
+}
+static FORCEINLINE HRESULT IInkRecognitionResult_SetResultOnStrokes(IInkRecognitionResult* This) {
+    return This->lpVtbl->SetResultOnStrokes(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_TopString_Proxy(
+    IInkRecognitionResult* This,
+    BSTR *TopString);
+void __RPC_STUB IInkRecognitionResult_get_TopString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_TopAlternate_Proxy(
+    IInkRecognitionResult* This,
+    IInkRecognitionAlternate **TopAlternate);
+void __RPC_STUB IInkRecognitionResult_get_TopAlternate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_TopConfidence_Proxy(
+    IInkRecognitionResult* This,
+    InkRecognitionConfidence *TopConfidence);
+void __RPC_STUB IInkRecognitionResult_get_TopConfidence_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_get_Strokes_Proxy(
+    IInkRecognitionResult* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkRecognitionResult_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_AlternatesFromSelection_Proxy(
+    IInkRecognitionResult* This,
+    LONG selectionStart,
+    LONG selectionLength,
+    LONG maximumAlternates,
+    IInkRecognitionAlternates **AlternatesFromSelection);
+void __RPC_STUB IInkRecognitionResult_AlternatesFromSelection_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_ModifyTopAlternate_Proxy(
+    IInkRecognitionResult* This,
+    IInkRecognitionAlternate *Alternate);
+void __RPC_STUB IInkRecognitionResult_ModifyTopAlternate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRecognitionResult_SetResultOnStrokes_Proxy(
+    IInkRecognitionResult* This);
+void __RPC_STUB IInkRecognitionResult_SetResultOnStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRecognitionResult_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkStrokeDisp interface
+ */
+#ifndef __IInkStrokeDisp_INTERFACE_DEFINED__
+#define __IInkStrokeDisp_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkStrokeDisp, 0x43242fea, 0x91d1, 0x4a72, 0x96,0x3e, 0xfb,0xb9,0x18,0x29,0xcf,0xa2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("43242fea-91d1-4a72-963e-fbb91829cfa2")
+IInkStrokeDisp : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_ID(
+        LONG *ID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_BezierPoints(
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DrawingAttributes(
+        IInkDrawingAttributes **DrawAttrs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_DrawingAttributes(
+        IInkDrawingAttributes *DrawAttrs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ink(
+        IInkDisp **Ink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
+        IInkExtendedProperties **Properties) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PolylineCusps(
+        VARIANT *Cusps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_BezierCusps(
+        VARIANT *Cusps) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SelfIntersections(
+        VARIANT *Intersections) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PacketCount(
+        LONG *plCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PacketSize(
+        LONG *plSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_PacketDescription(
+        VARIANT *PacketDescription) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Deleted(
+        VARIANT_BOOL *Deleted) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FindIntersections(
+        IInkStrokes *Strokes,
+        VARIANT *Intersections) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRectangleIntersections(
+        IInkRectangle *Rectangle,
+        VARIANT *Intersections) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clip(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestCircle(
+        LONG X,
+        LONG Y,
+        float Radius,
+        VARIANT_BOOL *Intersects) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NearestPoint(
+        LONG X,
+        LONG Y,
+        float *Distance,
+        float *Point) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Split(
+        float SplitAt,
+        IInkStrokeDisp **NewStroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPacketDescriptionPropertyMetrics(
+        BSTR PropertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPoints(
+        LONG Index,
+        LONG Count,
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPoints(
+        VARIANT Points,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPointsSet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPacketData(
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketData) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPacketValuesByProperty(
+        BSTR PropertyName,
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketValues) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPacketValuesByProperty(
+        BSTR bstrPropertyName,
+        VARIANT PacketValues,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPacketsSet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFlattenedBezierPoints(
+        LONG FittingError,
+        VARIANT *FlattenedBezierPoints) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Transform(
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleToRectangle(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Move(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Shear(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkStrokeDisp, 0x43242fea, 0x91d1, 0x4a72, 0x96,0x3e, 0xfb,0xb9,0x18,0x29,0xcf,0xa2)
+#endif
+#else
+typedef struct IInkStrokeDispVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkStrokeDisp* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkStrokeDisp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkStrokeDisp* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkStrokeDisp* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkStrokeDisp* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkStrokeDisp* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkStrokeDisp* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkStrokeDisp methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_ID)(
+        IInkStrokeDisp* This,
+        LONG *ID);
+
+    HRESULT (STDMETHODCALLTYPE *get_BezierPoints)(
+        IInkStrokeDisp* This,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *get_DrawingAttributes)(
+        IInkStrokeDisp* This,
+        IInkDrawingAttributes **DrawAttrs);
+
+    HRESULT (STDMETHODCALLTYPE *putref_DrawingAttributes)(
+        IInkStrokeDisp* This,
+        IInkDrawingAttributes *DrawAttrs);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ink)(
+        IInkStrokeDisp* This,
+        IInkDisp **Ink);
+
+    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
+        IInkStrokeDisp* This,
+        IInkExtendedProperties **Properties);
+
+    HRESULT (STDMETHODCALLTYPE *get_PolylineCusps)(
+        IInkStrokeDisp* This,
+        VARIANT *Cusps);
+
+    HRESULT (STDMETHODCALLTYPE *get_BezierCusps)(
+        IInkStrokeDisp* This,
+        VARIANT *Cusps);
+
+    HRESULT (STDMETHODCALLTYPE *get_SelfIntersections)(
+        IInkStrokeDisp* This,
+        VARIANT *Intersections);
+
+    HRESULT (STDMETHODCALLTYPE *get_PacketCount)(
+        IInkStrokeDisp* This,
+        LONG *plCount);
+
+    HRESULT (STDMETHODCALLTYPE *get_PacketSize)(
+        IInkStrokeDisp* This,
+        LONG *plSize);
+
+    HRESULT (STDMETHODCALLTYPE *get_PacketDescription)(
+        IInkStrokeDisp* This,
+        VARIANT *PacketDescription);
+
+    HRESULT (STDMETHODCALLTYPE *get_Deleted)(
+        IInkStrokeDisp* This,
+        VARIANT_BOOL *Deleted);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
+        IInkStrokeDisp* This,
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *FindIntersections)(
+        IInkStrokeDisp* This,
+        IInkStrokes *Strokes,
+        VARIANT *Intersections);
+
+    HRESULT (STDMETHODCALLTYPE *GetRectangleIntersections)(
+        IInkStrokeDisp* This,
+        IInkRectangle *Rectangle,
+        VARIANT *Intersections);
+
+    HRESULT (STDMETHODCALLTYPE *Clip)(
+        IInkStrokeDisp* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestCircle)(
+        IInkStrokeDisp* This,
+        LONG X,
+        LONG Y,
+        float Radius,
+        VARIANT_BOOL *Intersects);
+
+    HRESULT (STDMETHODCALLTYPE *NearestPoint)(
+        IInkStrokeDisp* This,
+        LONG X,
+        LONG Y,
+        float *Distance,
+        float *Point);
+
+    HRESULT (STDMETHODCALLTYPE *Split)(
+        IInkStrokeDisp* This,
+        float SplitAt,
+        IInkStrokeDisp **NewStroke);
+
+    HRESULT (STDMETHODCALLTYPE *GetPacketDescriptionPropertyMetrics)(
+        IInkStrokeDisp* This,
+        BSTR PropertyName,
+        LONG *Minimum,
+        LONG *Maximum,
+        TabletPropertyMetricUnit *Units,
+        float *Resolution);
+
+    HRESULT (STDMETHODCALLTYPE *GetPoints)(
+        IInkStrokeDisp* This,
+        LONG Index,
+        LONG Count,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *SetPoints)(
+        IInkStrokeDisp* This,
+        VARIANT Points,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPointsSet);
+
+    HRESULT (STDMETHODCALLTYPE *GetPacketData)(
+        IInkStrokeDisp* This,
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketData);
+
+    HRESULT (STDMETHODCALLTYPE *GetPacketValuesByProperty)(
+        IInkStrokeDisp* This,
+        BSTR PropertyName,
+        LONG Index,
+        LONG Count,
+        VARIANT *PacketValues);
+
+    HRESULT (STDMETHODCALLTYPE *SetPacketValuesByProperty)(
+        IInkStrokeDisp* This,
+        BSTR bstrPropertyName,
+        VARIANT PacketValues,
+        LONG Index,
+        LONG Count,
+        LONG *NumberOfPacketsSet);
+
+    HRESULT (STDMETHODCALLTYPE *GetFlattenedBezierPoints)(
+        IInkStrokeDisp* This,
+        LONG FittingError,
+        VARIANT *FlattenedBezierPoints);
+
+    HRESULT (STDMETHODCALLTYPE *Transform)(
+        IInkStrokeDisp* This,
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleToRectangle)(
+        IInkStrokeDisp* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Move)(
+        IInkStrokeDisp* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkStrokeDisp* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *Shear)(
+        IInkStrokeDisp* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkStrokeDisp* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    END_INTERFACE
+} IInkStrokeDispVtbl;
+interface IInkStrokeDisp {
+    CONST_VTBL IInkStrokeDispVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkStrokeDisp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkStrokeDisp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkStrokeDisp_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkStrokeDisp_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkStrokeDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkStrokeDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkStrokeDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkStrokeDisp methods ***/
+#define IInkStrokeDisp_get_ID(This,ID) (This)->lpVtbl->get_ID(This,ID)
+#define IInkStrokeDisp_get_BezierPoints(This,Points) (This)->lpVtbl->get_BezierPoints(This,Points)
+#define IInkStrokeDisp_get_DrawingAttributes(This,DrawAttrs) (This)->lpVtbl->get_DrawingAttributes(This,DrawAttrs)
+#define IInkStrokeDisp_putref_DrawingAttributes(This,DrawAttrs) (This)->lpVtbl->putref_DrawingAttributes(This,DrawAttrs)
+#define IInkStrokeDisp_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
+#define IInkStrokeDisp_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
+#define IInkStrokeDisp_get_PolylineCusps(This,Cusps) (This)->lpVtbl->get_PolylineCusps(This,Cusps)
+#define IInkStrokeDisp_get_BezierCusps(This,Cusps) (This)->lpVtbl->get_BezierCusps(This,Cusps)
+#define IInkStrokeDisp_get_SelfIntersections(This,Intersections) (This)->lpVtbl->get_SelfIntersections(This,Intersections)
+#define IInkStrokeDisp_get_PacketCount(This,plCount) (This)->lpVtbl->get_PacketCount(This,plCount)
+#define IInkStrokeDisp_get_PacketSize(This,plSize) (This)->lpVtbl->get_PacketSize(This,plSize)
+#define IInkStrokeDisp_get_PacketDescription(This,PacketDescription) (This)->lpVtbl->get_PacketDescription(This,PacketDescription)
+#define IInkStrokeDisp_get_Deleted(This,Deleted) (This)->lpVtbl->get_Deleted(This,Deleted)
+#define IInkStrokeDisp_GetBoundingBox(This,BoundingBoxMode,Rectangle) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle)
+#define IInkStrokeDisp_FindIntersections(This,Strokes,Intersections) (This)->lpVtbl->FindIntersections(This,Strokes,Intersections)
+#define IInkStrokeDisp_GetRectangleIntersections(This,Rectangle,Intersections) (This)->lpVtbl->GetRectangleIntersections(This,Rectangle,Intersections)
+#define IInkStrokeDisp_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
+#define IInkStrokeDisp_HitTestCircle(This,X,Y,Radius,Intersects) (This)->lpVtbl->HitTestCircle(This,X,Y,Radius,Intersects)
+#define IInkStrokeDisp_NearestPoint(This,X,Y,Distance,Point) (This)->lpVtbl->NearestPoint(This,X,Y,Distance,Point)
+#define IInkStrokeDisp_Split(This,SplitAt,NewStroke) (This)->lpVtbl->Split(This,SplitAt,NewStroke)
+#define IInkStrokeDisp_GetPacketDescriptionPropertyMetrics(This,PropertyName,Minimum,Maximum,Units,Resolution) (This)->lpVtbl->GetPacketDescriptionPropertyMetrics(This,PropertyName,Minimum,Maximum,Units,Resolution)
+#define IInkStrokeDisp_GetPoints(This,Index,Count,Points) (This)->lpVtbl->GetPoints(This,Index,Count,Points)
+#define IInkStrokeDisp_SetPoints(This,Points,Index,Count,NumberOfPointsSet) (This)->lpVtbl->SetPoints(This,Points,Index,Count,NumberOfPointsSet)
+#define IInkStrokeDisp_GetPacketData(This,Index,Count,PacketData) (This)->lpVtbl->GetPacketData(This,Index,Count,PacketData)
+#define IInkStrokeDisp_GetPacketValuesByProperty(This,PropertyName,Index,Count,PacketValues) (This)->lpVtbl->GetPacketValuesByProperty(This,PropertyName,Index,Count,PacketValues)
+#define IInkStrokeDisp_SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet) (This)->lpVtbl->SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet)
+#define IInkStrokeDisp_GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints) (This)->lpVtbl->GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints)
+#define IInkStrokeDisp_Transform(This,Transform,ApplyOnPenWidth) (This)->lpVtbl->Transform(This,Transform,ApplyOnPenWidth)
+#define IInkStrokeDisp_ScaleToRectangle(This,Rectangle) (This)->lpVtbl->ScaleToRectangle(This,Rectangle)
+#define IInkStrokeDisp_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
+#define IInkStrokeDisp_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkStrokeDisp_Shear(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkStrokeDisp_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkStrokeDisp_QueryInterface(IInkStrokeDisp* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkStrokeDisp_AddRef(IInkStrokeDisp* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkStrokeDisp_Release(IInkStrokeDisp* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkStrokeDisp_GetTypeInfoCount(IInkStrokeDisp* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetTypeInfo(IInkStrokeDisp* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetIDsOfNames(IInkStrokeDisp* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Invoke(IInkStrokeDisp* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkStrokeDisp methods ***/
+static FORCEINLINE HRESULT IInkStrokeDisp_get_ID(IInkStrokeDisp* This,LONG *ID) {
+    return This->lpVtbl->get_ID(This,ID);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_BezierPoints(IInkStrokeDisp* This,VARIANT *Points) {
+    return This->lpVtbl->get_BezierPoints(This,Points);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_DrawingAttributes(IInkStrokeDisp* This,IInkDrawingAttributes **DrawAttrs) {
+    return This->lpVtbl->get_DrawingAttributes(This,DrawAttrs);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_putref_DrawingAttributes(IInkStrokeDisp* This,IInkDrawingAttributes *DrawAttrs) {
+    return This->lpVtbl->putref_DrawingAttributes(This,DrawAttrs);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_Ink(IInkStrokeDisp* This,IInkDisp **Ink) {
+    return This->lpVtbl->get_Ink(This,Ink);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_ExtendedProperties(IInkStrokeDisp* This,IInkExtendedProperties **Properties) {
+    return This->lpVtbl->get_ExtendedProperties(This,Properties);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PolylineCusps(IInkStrokeDisp* This,VARIANT *Cusps) {
+    return This->lpVtbl->get_PolylineCusps(This,Cusps);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_BezierCusps(IInkStrokeDisp* This,VARIANT *Cusps) {
+    return This->lpVtbl->get_BezierCusps(This,Cusps);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_SelfIntersections(IInkStrokeDisp* This,VARIANT *Intersections) {
+    return This->lpVtbl->get_SelfIntersections(This,Intersections);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketCount(IInkStrokeDisp* This,LONG *plCount) {
+    return This->lpVtbl->get_PacketCount(This,plCount);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketSize(IInkStrokeDisp* This,LONG *plSize) {
+    return This->lpVtbl->get_PacketSize(This,plSize);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketDescription(IInkStrokeDisp* This,VARIANT *PacketDescription) {
+    return This->lpVtbl->get_PacketDescription(This,PacketDescription);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_get_Deleted(IInkStrokeDisp* This,VARIANT_BOOL *Deleted) {
+    return This->lpVtbl->get_Deleted(This,Deleted);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetBoundingBox(IInkStrokeDisp* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **Rectangle) {
+    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_FindIntersections(IInkStrokeDisp* This,IInkStrokes *Strokes,VARIANT *Intersections) {
+    return This->lpVtbl->FindIntersections(This,Strokes,Intersections);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetRectangleIntersections(IInkStrokeDisp* This,IInkRectangle *Rectangle,VARIANT *Intersections) {
+    return This->lpVtbl->GetRectangleIntersections(This,Rectangle,Intersections);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Clip(IInkStrokeDisp* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->Clip(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_HitTestCircle(IInkStrokeDisp* This,LONG X,LONG Y,float Radius,VARIANT_BOOL *Intersects) {
+    return This->lpVtbl->HitTestCircle(This,X,Y,Radius,Intersects);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_NearestPoint(IInkStrokeDisp* This,LONG X,LONG Y,float *Distance,float *Point) {
+    return This->lpVtbl->NearestPoint(This,X,Y,Distance,Point);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Split(IInkStrokeDisp* This,float SplitAt,IInkStrokeDisp **NewStroke) {
+    return This->lpVtbl->Split(This,SplitAt,NewStroke);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketDescriptionPropertyMetrics(IInkStrokeDisp* This,BSTR PropertyName,LONG *Minimum,LONG *Maximum,TabletPropertyMetricUnit *Units,float *Resolution) {
+    return This->lpVtbl->GetPacketDescriptionPropertyMetrics(This,PropertyName,Minimum,Maximum,Units,Resolution);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPoints(IInkStrokeDisp* This,LONG Index,LONG Count,VARIANT *Points) {
+    return This->lpVtbl->GetPoints(This,Index,Count,Points);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_SetPoints(IInkStrokeDisp* This,VARIANT Points,LONG Index,LONG Count,LONG *NumberOfPointsSet) {
+    return This->lpVtbl->SetPoints(This,Points,Index,Count,NumberOfPointsSet);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketData(IInkStrokeDisp* This,LONG Index,LONG Count,VARIANT *PacketData) {
+    return This->lpVtbl->GetPacketData(This,Index,Count,PacketData);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketValuesByProperty(IInkStrokeDisp* This,BSTR PropertyName,LONG Index,LONG Count,VARIANT *PacketValues) {
+    return This->lpVtbl->GetPacketValuesByProperty(This,PropertyName,Index,Count,PacketValues);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_SetPacketValuesByProperty(IInkStrokeDisp* This,BSTR bstrPropertyName,VARIANT PacketValues,LONG Index,LONG Count,LONG *NumberOfPacketsSet) {
+    return This->lpVtbl->SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_GetFlattenedBezierPoints(IInkStrokeDisp* This,LONG FittingError,VARIANT *FlattenedBezierPoints) {
+    return This->lpVtbl->GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Transform(IInkStrokeDisp* This,IInkTransform *Transform,VARIANT_BOOL ApplyOnPenWidth) {
+    return This->lpVtbl->Transform(This,Transform,ApplyOnPenWidth);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_ScaleToRectangle(IInkStrokeDisp* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->ScaleToRectangle(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Move(IInkStrokeDisp* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Rotate(IInkStrokeDisp* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_Shear(IInkStrokeDisp* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkStrokeDisp_ScaleTransform(IInkStrokeDisp* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_ID_Proxy(
+    IInkStrokeDisp* This,
+    LONG *ID);
+void __RPC_STUB IInkStrokeDisp_get_ID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_BezierPoints_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Points);
+void __RPC_STUB IInkStrokeDisp_get_BezierPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_DrawingAttributes_Proxy(
+    IInkStrokeDisp* This,
+    IInkDrawingAttributes **DrawAttrs);
+void __RPC_STUB IInkStrokeDisp_get_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_putref_DrawingAttributes_Proxy(
+    IInkStrokeDisp* This,
+    IInkDrawingAttributes *DrawAttrs);
+void __RPC_STUB IInkStrokeDisp_putref_DrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_Ink_Proxy(
+    IInkStrokeDisp* This,
+    IInkDisp **Ink);
+void __RPC_STUB IInkStrokeDisp_get_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_ExtendedProperties_Proxy(
+    IInkStrokeDisp* This,
+    IInkExtendedProperties **Properties);
+void __RPC_STUB IInkStrokeDisp_get_ExtendedProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PolylineCusps_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Cusps);
+void __RPC_STUB IInkStrokeDisp_get_PolylineCusps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_BezierCusps_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Cusps);
+void __RPC_STUB IInkStrokeDisp_get_BezierCusps_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_SelfIntersections_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *Intersections);
+void __RPC_STUB IInkStrokeDisp_get_SelfIntersections_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PacketCount_Proxy(
+    IInkStrokeDisp* This,
+    LONG *plCount);
+void __RPC_STUB IInkStrokeDisp_get_PacketCount_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PacketSize_Proxy(
+    IInkStrokeDisp* This,
+    LONG *plSize);
+void __RPC_STUB IInkStrokeDisp_get_PacketSize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_PacketDescription_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT *PacketDescription);
+void __RPC_STUB IInkStrokeDisp_get_PacketDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_get_Deleted_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT_BOOL *Deleted);
+void __RPC_STUB IInkStrokeDisp_get_Deleted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetBoundingBox_Proxy(
+    IInkStrokeDisp* This,
+    InkBoundingBoxMode BoundingBoxMode,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkStrokeDisp_GetBoundingBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_FindIntersections_Proxy(
+    IInkStrokeDisp* This,
+    IInkStrokes *Strokes,
+    VARIANT *Intersections);
+void __RPC_STUB IInkStrokeDisp_FindIntersections_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetRectangleIntersections_Proxy(
+    IInkStrokeDisp* This,
+    IInkRectangle *Rectangle,
+    VARIANT *Intersections);
+void __RPC_STUB IInkStrokeDisp_GetRectangleIntersections_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Clip_Proxy(
+    IInkStrokeDisp* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokeDisp_Clip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_HitTestCircle_Proxy(
+    IInkStrokeDisp* This,
+    LONG X,
+    LONG Y,
+    float Radius,
+    VARIANT_BOOL *Intersects);
+void __RPC_STUB IInkStrokeDisp_HitTestCircle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_NearestPoint_Proxy(
+    IInkStrokeDisp* This,
+    LONG X,
+    LONG Y,
+    float *Distance,
+    float *Point);
+void __RPC_STUB IInkStrokeDisp_NearestPoint_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Split_Proxy(
+    IInkStrokeDisp* This,
+    float SplitAt,
+    IInkStrokeDisp **NewStroke);
+void __RPC_STUB IInkStrokeDisp_Split_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPacketDescriptionPropertyMetrics_Proxy(
+    IInkStrokeDisp* This,
+    BSTR PropertyName,
+    LONG *Minimum,
+    LONG *Maximum,
+    TabletPropertyMetricUnit *Units,
+    float *Resolution);
+void __RPC_STUB IInkStrokeDisp_GetPacketDescriptionPropertyMetrics_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPoints_Proxy(
+    IInkStrokeDisp* This,
+    LONG Index,
+    LONG Count,
+    VARIANT *Points);
+void __RPC_STUB IInkStrokeDisp_GetPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_SetPoints_Proxy(
+    IInkStrokeDisp* This,
+    VARIANT Points,
+    LONG Index,
+    LONG Count,
+    LONG *NumberOfPointsSet);
+void __RPC_STUB IInkStrokeDisp_SetPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPacketData_Proxy(
+    IInkStrokeDisp* This,
+    LONG Index,
+    LONG Count,
+    VARIANT *PacketData);
+void __RPC_STUB IInkStrokeDisp_GetPacketData_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetPacketValuesByProperty_Proxy(
+    IInkStrokeDisp* This,
+    BSTR PropertyName,
+    LONG Index,
+    LONG Count,
+    VARIANT *PacketValues);
+void __RPC_STUB IInkStrokeDisp_GetPacketValuesByProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_SetPacketValuesByProperty_Proxy(
+    IInkStrokeDisp* This,
+    BSTR bstrPropertyName,
+    VARIANT PacketValues,
+    LONG Index,
+    LONG Count,
+    LONG *NumberOfPacketsSet);
+void __RPC_STUB IInkStrokeDisp_SetPacketValuesByProperty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_GetFlattenedBezierPoints_Proxy(
+    IInkStrokeDisp* This,
+    LONG FittingError,
+    VARIANT *FlattenedBezierPoints);
+void __RPC_STUB IInkStrokeDisp_GetFlattenedBezierPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Transform_Proxy(
+    IInkStrokeDisp* This,
+    IInkTransform *Transform,
+    VARIANT_BOOL ApplyOnPenWidth);
+void __RPC_STUB IInkStrokeDisp_Transform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_ScaleToRectangle_Proxy(
+    IInkStrokeDisp* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokeDisp_ScaleToRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Move_Proxy(
+    IInkStrokeDisp* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkStrokeDisp_Move_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Rotate_Proxy(
+    IInkStrokeDisp* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkStrokeDisp_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_Shear_Proxy(
+    IInkStrokeDisp* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokeDisp_Shear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokeDisp_ScaleTransform_Proxy(
+    IInkStrokeDisp* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokeDisp_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkStrokeDisp_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCustomStrokes interface
+ */
+#ifndef __IInkCustomStrokes_INTERFACE_DEFINED__
+#define __IInkCustomStrokes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCustomStrokes, 0x7e23a88f, 0xc30e, 0x420f, 0x9b,0xdb, 0x28,0x90,0x25,0x43,0xf0,0xc1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("7e23a88f-c30e-420f-9bdb-28902543f0c1")
+IInkCustomStrokes : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        VARIANT Identifier,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        BSTR Name,
+        IInkStrokes *Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        VARIANT Identifier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clear(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCustomStrokes, 0x7e23a88f, 0xc30e, 0x420f, 0x9b,0xdb, 0x28,0x90,0x25,0x43,0xf0,0xc1)
+#endif
+#else
+typedef struct IInkCustomStrokesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCustomStrokes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCustomStrokes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCustomStrokes* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCustomStrokes* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCustomStrokes* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCustomStrokes* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCustomStrokes* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCustomStrokes methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkCustomStrokes* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkCustomStrokes* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkCustomStrokes* This,
+        VARIANT Identifier,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IInkCustomStrokes* This,
+        BSTR Name,
+        IInkStrokes *Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IInkCustomStrokes* This,
+        VARIANT Identifier);
+
+    HRESULT (STDMETHODCALLTYPE *Clear)(
+        IInkCustomStrokes* This);
+
+    END_INTERFACE
+} IInkCustomStrokesVtbl;
+interface IInkCustomStrokes {
+    CONST_VTBL IInkCustomStrokesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCustomStrokes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCustomStrokes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCustomStrokes_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCustomStrokes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCustomStrokes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCustomStrokes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCustomStrokes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCustomStrokes methods ***/
+#define IInkCustomStrokes_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkCustomStrokes_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkCustomStrokes_Item(This,Identifier,Strokes) (This)->lpVtbl->Item(This,Identifier,Strokes)
+#define IInkCustomStrokes_Add(This,Name,Strokes) (This)->lpVtbl->Add(This,Name,Strokes)
+#define IInkCustomStrokes_Remove(This,Identifier) (This)->lpVtbl->Remove(This,Identifier)
+#define IInkCustomStrokes_Clear(This) (This)->lpVtbl->Clear(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCustomStrokes_QueryInterface(IInkCustomStrokes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCustomStrokes_AddRef(IInkCustomStrokes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCustomStrokes_Release(IInkCustomStrokes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCustomStrokes_GetTypeInfoCount(IInkCustomStrokes* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_GetTypeInfo(IInkCustomStrokes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_GetIDsOfNames(IInkCustomStrokes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Invoke(IInkCustomStrokes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCustomStrokes methods ***/
+static FORCEINLINE HRESULT IInkCustomStrokes_get_Count(IInkCustomStrokes* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_get__NewEnum(IInkCustomStrokes* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Item(IInkCustomStrokes* This,VARIANT Identifier,IInkStrokes **Strokes) {
+    return This->lpVtbl->Item(This,Identifier,Strokes);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Add(IInkCustomStrokes* This,BSTR Name,IInkStrokes *Strokes) {
+    return This->lpVtbl->Add(This,Name,Strokes);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Remove(IInkCustomStrokes* This,VARIANT Identifier) {
+    return This->lpVtbl->Remove(This,Identifier);
+}
+static FORCEINLINE HRESULT IInkCustomStrokes_Clear(IInkCustomStrokes* This) {
+    return This->lpVtbl->Clear(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_get_Count_Proxy(
+    IInkCustomStrokes* This,
+    LONG *Count);
+void __RPC_STUB IInkCustomStrokes_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_get__NewEnum_Proxy(
+    IInkCustomStrokes* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkCustomStrokes_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Item_Proxy(
+    IInkCustomStrokes* This,
+    VARIANT Identifier,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkCustomStrokes_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Add_Proxy(
+    IInkCustomStrokes* This,
+    BSTR Name,
+    IInkStrokes *Strokes);
+void __RPC_STUB IInkCustomStrokes_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Remove_Proxy(
+    IInkCustomStrokes* This,
+    VARIANT Identifier);
+void __RPC_STUB IInkCustomStrokes_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCustomStrokes_Clear_Proxy(
+    IInkCustomStrokes* This);
+void __RPC_STUB IInkCustomStrokes_Clear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCustomStrokes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkDisp interface
+ */
+#ifndef __IInkDisp_INTERFACE_DEFINED__
+#define __IInkDisp_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkDisp, 0x9d398fa0, 0xc4e2, 0x4fcd, 0x99,0x73, 0x97,0x5c,0xaa,0xf4,0x7e,0xa6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9d398fa0-c4e2-4fcd-9973-975caaf47ea6")
+IInkDisp : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
+        IInkExtendedProperties **Properties) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Dirty(
+        VARIANT_BOOL *Dirty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Dirty(
+        VARIANT_BOOL Dirty) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CustomStrokes(
+        IInkCustomStrokes **ppunkInkCustomStrokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteStrokes(
+        IInkStrokes *Strokes = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteStroke(
+        IInkStrokeDisp *Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExtractStrokes(
+        IInkStrokes *Strokes,
+        InkExtractFlags ExtractFlags,
+        IInkDisp **ExtractedInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ExtractWithRectangle(
+        IInkRectangle *Rectangle,
+        InkExtractFlags extractFlags,
+        IInkDisp **ExtractedInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clip(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clone(
+        IInkDisp **NewInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestCircle(
+        LONG X,
+        LONG Y,
+        float radius,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestWithRectangle(
+        IInkRectangle *SelectionRectangle,
+        float IntersectPercent,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HitTestWithLasso(
+        VARIANT Points,
+        float IntersectPercent,
+        VARIANT *LassoPoints,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE NearestPoint(
+        LONG X,
+        LONG Y,
+        float *PointOnStroke,
+        float *DistanceFromPacket,
+        IInkStrokeDisp **Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStrokes(
+        VARIANT StrokeIds,
+        IInkStrokes **Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddStrokesAtRectangle(
+        IInkStrokes *SourceStrokes,
+        IInkRectangle *TargetRectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        InkPersistenceFormat PersistenceFormat,
+        InkPersistenceCompressionMode CompressionMode,
+        VARIANT *Data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Load(
+        VARIANT Data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CreateStroke(
+        VARIANT PacketData,
+        VARIANT PacketDescription,
+        IInkStrokeDisp **Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClipboardCopyWithRectangle(
+        IInkRectangle *Rectangle,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClipboardCopy(
+        IInkStrokes *strokes,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CanPaste(
+        IDataObject *DataObject,
+        VARIANT_BOOL *CanPaste) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClipboardPaste(
+        LONG x,
+        LONG y,
+        IDataObject *DataObject,
+        IInkStrokes **Strokes) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkDisp, 0x9d398fa0, 0xc4e2, 0x4fcd, 0x99,0x73, 0x97,0x5c,0xaa,0xf4,0x7e,0xa6)
+#endif
+#else
+typedef struct IInkDispVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkDisp* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkDisp* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkDisp* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkDisp* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkDisp* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkDisp* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkDisp* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkDisp methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
+        IInkDisp* This,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
+        IInkDisp* This,
+        IInkExtendedProperties **Properties);
+
+    HRESULT (STDMETHODCALLTYPE *get_Dirty)(
+        IInkDisp* This,
+        VARIANT_BOOL *Dirty);
+
+    HRESULT (STDMETHODCALLTYPE *put_Dirty)(
+        IInkDisp* This,
+        VARIANT_BOOL Dirty);
+
+    HRESULT (STDMETHODCALLTYPE *get_CustomStrokes)(
+        IInkDisp* This,
+        IInkCustomStrokes **ppunkInkCustomStrokes);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
+        IInkDisp* This,
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteStrokes)(
+        IInkDisp* This,
+        IInkStrokes *Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteStroke)(
+        IInkDisp* This,
+        IInkStrokeDisp *Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *ExtractStrokes)(
+        IInkDisp* This,
+        IInkStrokes *Strokes,
+        InkExtractFlags ExtractFlags,
+        IInkDisp **ExtractedInk);
+
+    HRESULT (STDMETHODCALLTYPE *ExtractWithRectangle)(
+        IInkDisp* This,
+        IInkRectangle *Rectangle,
+        InkExtractFlags extractFlags,
+        IInkDisp **ExtractedInk);
+
+    HRESULT (STDMETHODCALLTYPE *Clip)(
+        IInkDisp* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Clone)(
+        IInkDisp* This,
+        IInkDisp **NewInk);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestCircle)(
+        IInkDisp* This,
+        LONG X,
+        LONG Y,
+        float radius,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestWithRectangle)(
+        IInkDisp* This,
+        IInkRectangle *SelectionRectangle,
+        float IntersectPercent,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *HitTestWithLasso)(
+        IInkDisp* This,
+        VARIANT Points,
+        float IntersectPercent,
+        VARIANT *LassoPoints,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *NearestPoint)(
+        IInkDisp* This,
+        LONG X,
+        LONG Y,
+        float *PointOnStroke,
+        float *DistanceFromPacket,
+        IInkStrokeDisp **Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStrokes)(
+        IInkDisp* This,
+        VARIANT StrokeIds,
+        IInkStrokes **Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *AddStrokesAtRectangle)(
+        IInkDisp* This,
+        IInkStrokes *SourceStrokes,
+        IInkRectangle *TargetRectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IInkDisp* This,
+        InkPersistenceFormat PersistenceFormat,
+        InkPersistenceCompressionMode CompressionMode,
+        VARIANT *Data);
+
+    HRESULT (STDMETHODCALLTYPE *Load)(
+        IInkDisp* This,
+        VARIANT Data);
+
+    HRESULT (STDMETHODCALLTYPE *CreateStroke)(
+        IInkDisp* This,
+        VARIANT PacketData,
+        VARIANT PacketDescription,
+        IInkStrokeDisp **Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *ClipboardCopyWithRectangle)(
+        IInkDisp* This,
+        IInkRectangle *Rectangle,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject);
+
+    HRESULT (STDMETHODCALLTYPE *ClipboardCopy)(
+        IInkDisp* This,
+        IInkStrokes *strokes,
+        InkClipboardFormats ClipboardFormats,
+        InkClipboardModes ClipboardModes,
+        IDataObject **DataObject);
+
+    HRESULT (STDMETHODCALLTYPE *CanPaste)(
+        IInkDisp* This,
+        IDataObject *DataObject,
+        VARIANT_BOOL *CanPaste);
+
+    HRESULT (STDMETHODCALLTYPE *ClipboardPaste)(
+        IInkDisp* This,
+        LONG x,
+        LONG y,
+        IDataObject *DataObject,
+        IInkStrokes **Strokes);
+
+    END_INTERFACE
+} IInkDispVtbl;
+interface IInkDisp {
+    CONST_VTBL IInkDispVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkDisp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkDisp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkDisp_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkDisp_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkDisp methods ***/
+#define IInkDisp_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
+#define IInkDisp_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
+#define IInkDisp_get_Dirty(This,Dirty) (This)->lpVtbl->get_Dirty(This,Dirty)
+#define IInkDisp_put_Dirty(This,Dirty) (This)->lpVtbl->put_Dirty(This,Dirty)
+#define IInkDisp_get_CustomStrokes(This,ppunkInkCustomStrokes) (This)->lpVtbl->get_CustomStrokes(This,ppunkInkCustomStrokes)
+#define IInkDisp_GetBoundingBox(This,BoundingBoxMode,Rectangle) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle)
+#define IInkDisp_DeleteStrokes(This,Strokes) (This)->lpVtbl->DeleteStrokes(This,Strokes)
+#define IInkDisp_DeleteStroke(This,Stroke) (This)->lpVtbl->DeleteStroke(This,Stroke)
+#define IInkDisp_ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk) (This)->lpVtbl->ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk)
+#define IInkDisp_ExtractWithRectangle(This,Rectangle,extractFlags,ExtractedInk) (This)->lpVtbl->ExtractWithRectangle(This,Rectangle,extractFlags,ExtractedInk)
+#define IInkDisp_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
+#define IInkDisp_Clone(This,NewInk) (This)->lpVtbl->Clone(This,NewInk)
+#define IInkDisp_HitTestCircle(This,X,Y,radius,Strokes) (This)->lpVtbl->HitTestCircle(This,X,Y,radius,Strokes)
+#define IInkDisp_HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes) (This)->lpVtbl->HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes)
+#define IInkDisp_HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes) (This)->lpVtbl->HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes)
+#define IInkDisp_NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke) (This)->lpVtbl->NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke)
+#define IInkDisp_CreateStrokes(This,StrokeIds,Strokes) (This)->lpVtbl->CreateStrokes(This,StrokeIds,Strokes)
+#define IInkDisp_AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle) (This)->lpVtbl->AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle)
+#define IInkDisp_Save(This,PersistenceFormat,CompressionMode,Data) (This)->lpVtbl->Save(This,PersistenceFormat,CompressionMode,Data)
+#define IInkDisp_Load(This,Data) (This)->lpVtbl->Load(This,Data)
+#define IInkDisp_CreateStroke(This,PacketData,PacketDescription,Stroke) (This)->lpVtbl->CreateStroke(This,PacketData,PacketDescription,Stroke)
+#define IInkDisp_ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject) (This)->lpVtbl->ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject)
+#define IInkDisp_ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject) (This)->lpVtbl->ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject)
+#define IInkDisp_CanPaste(This,DataObject,CanPaste) (This)->lpVtbl->CanPaste(This,DataObject,CanPaste)
+#define IInkDisp_ClipboardPaste(This,x,y,DataObject,Strokes) (This)->lpVtbl->ClipboardPaste(This,x,y,DataObject,Strokes)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkDisp_QueryInterface(IInkDisp* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkDisp_AddRef(IInkDisp* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkDisp_Release(IInkDisp* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkDisp_GetTypeInfoCount(IInkDisp* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkDisp_GetTypeInfo(IInkDisp* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkDisp_GetIDsOfNames(IInkDisp* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkDisp_Invoke(IInkDisp* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkDisp methods ***/
+static FORCEINLINE HRESULT IInkDisp_get_Strokes(IInkDisp* This,IInkStrokes **Strokes) {
+    return This->lpVtbl->get_Strokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_get_ExtendedProperties(IInkDisp* This,IInkExtendedProperties **Properties) {
+    return This->lpVtbl->get_ExtendedProperties(This,Properties);
+}
+static FORCEINLINE HRESULT IInkDisp_get_Dirty(IInkDisp* This,VARIANT_BOOL *Dirty) {
+    return This->lpVtbl->get_Dirty(This,Dirty);
+}
+static FORCEINLINE HRESULT IInkDisp_put_Dirty(IInkDisp* This,VARIANT_BOOL Dirty) {
+    return This->lpVtbl->put_Dirty(This,Dirty);
+}
+static FORCEINLINE HRESULT IInkDisp_get_CustomStrokes(IInkDisp* This,IInkCustomStrokes **ppunkInkCustomStrokes) {
+    return This->lpVtbl->get_CustomStrokes(This,ppunkInkCustomStrokes);
+}
+static FORCEINLINE HRESULT IInkDisp_GetBoundingBox(IInkDisp* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **Rectangle) {
+    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle);
+}
+static FORCEINLINE HRESULT IInkDisp_DeleteStrokes(IInkDisp* This,IInkStrokes *Strokes) {
+    return This->lpVtbl->DeleteStrokes(This,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_DeleteStroke(IInkDisp* This,IInkStrokeDisp *Stroke) {
+    return This->lpVtbl->DeleteStroke(This,Stroke);
+}
+static FORCEINLINE HRESULT IInkDisp_ExtractStrokes(IInkDisp* This,IInkStrokes *Strokes,InkExtractFlags ExtractFlags,IInkDisp **ExtractedInk) {
+    return This->lpVtbl->ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk);
+}
+static FORCEINLINE HRESULT IInkDisp_ExtractWithRectangle(IInkDisp* This,IInkRectangle *Rectangle,InkExtractFlags extractFlags,IInkDisp **ExtractedInk) {
+    return This->lpVtbl->ExtractWithRectangle(This,Rectangle,extractFlags,ExtractedInk);
+}
+static FORCEINLINE HRESULT IInkDisp_Clip(IInkDisp* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->Clip(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkDisp_Clone(IInkDisp* This,IInkDisp **NewInk) {
+    return This->lpVtbl->Clone(This,NewInk);
+}
+static FORCEINLINE HRESULT IInkDisp_HitTestCircle(IInkDisp* This,LONG X,LONG Y,float radius,IInkStrokes **Strokes) {
+    return This->lpVtbl->HitTestCircle(This,X,Y,radius,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_HitTestWithRectangle(IInkDisp* This,IInkRectangle *SelectionRectangle,float IntersectPercent,IInkStrokes **Strokes) {
+    return This->lpVtbl->HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_HitTestWithLasso(IInkDisp* This,VARIANT Points,float IntersectPercent,VARIANT *LassoPoints,IInkStrokes **Strokes) {
+    return This->lpVtbl->HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_NearestPoint(IInkDisp* This,LONG X,LONG Y,float *PointOnStroke,float *DistanceFromPacket,IInkStrokeDisp **Stroke) {
+    return This->lpVtbl->NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke);
+}
+static FORCEINLINE HRESULT IInkDisp_CreateStrokes(IInkDisp* This,VARIANT StrokeIds,IInkStrokes **Strokes) {
+    return This->lpVtbl->CreateStrokes(This,StrokeIds,Strokes);
+}
+static FORCEINLINE HRESULT IInkDisp_AddStrokesAtRectangle(IInkDisp* This,IInkStrokes *SourceStrokes,IInkRectangle *TargetRectangle) {
+    return This->lpVtbl->AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle);
+}
+static FORCEINLINE HRESULT IInkDisp_Save(IInkDisp* This,InkPersistenceFormat PersistenceFormat,InkPersistenceCompressionMode CompressionMode,VARIANT *Data) {
+    return This->lpVtbl->Save(This,PersistenceFormat,CompressionMode,Data);
+}
+static FORCEINLINE HRESULT IInkDisp_Load(IInkDisp* This,VARIANT Data) {
+    return This->lpVtbl->Load(This,Data);
+}
+static FORCEINLINE HRESULT IInkDisp_CreateStroke(IInkDisp* This,VARIANT PacketData,VARIANT PacketDescription,IInkStrokeDisp **Stroke) {
+    return This->lpVtbl->CreateStroke(This,PacketData,PacketDescription,Stroke);
+}
+static FORCEINLINE HRESULT IInkDisp_ClipboardCopyWithRectangle(IInkDisp* This,IInkRectangle *Rectangle,InkClipboardFormats ClipboardFormats,InkClipboardModes ClipboardModes,IDataObject **DataObject) {
+    return This->lpVtbl->ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject);
+}
+static FORCEINLINE HRESULT IInkDisp_ClipboardCopy(IInkDisp* This,IInkStrokes *strokes,InkClipboardFormats ClipboardFormats,InkClipboardModes ClipboardModes,IDataObject **DataObject) {
+    return This->lpVtbl->ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject);
+}
+static FORCEINLINE HRESULT IInkDisp_CanPaste(IInkDisp* This,IDataObject *DataObject,VARIANT_BOOL *CanPaste) {
+    return This->lpVtbl->CanPaste(This,DataObject,CanPaste);
+}
+static FORCEINLINE HRESULT IInkDisp_ClipboardPaste(IInkDisp* This,LONG x,LONG y,IDataObject *DataObject,IInkStrokes **Strokes) {
+    return This->lpVtbl->ClipboardPaste(This,x,y,DataObject,Strokes);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkDisp_get_Strokes_Proxy(
+    IInkDisp* This,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_get_Strokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_get_ExtendedProperties_Proxy(
+    IInkDisp* This,
+    IInkExtendedProperties **Properties);
+void __RPC_STUB IInkDisp_get_ExtendedProperties_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_get_Dirty_Proxy(
+    IInkDisp* This,
+    VARIANT_BOOL *Dirty);
+void __RPC_STUB IInkDisp_get_Dirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_put_Dirty_Proxy(
+    IInkDisp* This,
+    VARIANT_BOOL Dirty);
+void __RPC_STUB IInkDisp_put_Dirty_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_get_CustomStrokes_Proxy(
+    IInkDisp* This,
+    IInkCustomStrokes **ppunkInkCustomStrokes);
+void __RPC_STUB IInkDisp_get_CustomStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_GetBoundingBox_Proxy(
+    IInkDisp* This,
+    InkBoundingBoxMode BoundingBoxMode,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkDisp_GetBoundingBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_DeleteStrokes_Proxy(
+    IInkDisp* This,
+    IInkStrokes *Strokes);
+void __RPC_STUB IInkDisp_DeleteStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_DeleteStroke_Proxy(
+    IInkDisp* This,
+    IInkStrokeDisp *Stroke);
+void __RPC_STUB IInkDisp_DeleteStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ExtractStrokes_Proxy(
+    IInkDisp* This,
+    IInkStrokes *Strokes,
+    InkExtractFlags ExtractFlags,
+    IInkDisp **ExtractedInk);
+void __RPC_STUB IInkDisp_ExtractStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ExtractWithRectangle_Proxy(
+    IInkDisp* This,
+    IInkRectangle *Rectangle,
+    InkExtractFlags extractFlags,
+    IInkDisp **ExtractedInk);
+void __RPC_STUB IInkDisp_ExtractWithRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Clip_Proxy(
+    IInkDisp* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkDisp_Clip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Clone_Proxy(
+    IInkDisp* This,
+    IInkDisp **NewInk);
+void __RPC_STUB IInkDisp_Clone_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_HitTestCircle_Proxy(
+    IInkDisp* This,
+    LONG X,
+    LONG Y,
+    float radius,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_HitTestCircle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_HitTestWithRectangle_Proxy(
+    IInkDisp* This,
+    IInkRectangle *SelectionRectangle,
+    float IntersectPercent,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_HitTestWithRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_HitTestWithLasso_Proxy(
+    IInkDisp* This,
+    VARIANT Points,
+    float IntersectPercent,
+    VARIANT *LassoPoints,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_HitTestWithLasso_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_NearestPoint_Proxy(
+    IInkDisp* This,
+    LONG X,
+    LONG Y,
+    float *PointOnStroke,
+    float *DistanceFromPacket,
+    IInkStrokeDisp **Stroke);
+void __RPC_STUB IInkDisp_NearestPoint_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_CreateStrokes_Proxy(
+    IInkDisp* This,
+    VARIANT StrokeIds,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_CreateStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_AddStrokesAtRectangle_Proxy(
+    IInkDisp* This,
+    IInkStrokes *SourceStrokes,
+    IInkRectangle *TargetRectangle);
+void __RPC_STUB IInkDisp_AddStrokesAtRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Save_Proxy(
+    IInkDisp* This,
+    InkPersistenceFormat PersistenceFormat,
+    InkPersistenceCompressionMode CompressionMode,
+    VARIANT *Data);
+void __RPC_STUB IInkDisp_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_Load_Proxy(
+    IInkDisp* This,
+    VARIANT Data);
+void __RPC_STUB IInkDisp_Load_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_CreateStroke_Proxy(
+    IInkDisp* This,
+    VARIANT PacketData,
+    VARIANT PacketDescription,
+    IInkStrokeDisp **Stroke);
+void __RPC_STUB IInkDisp_CreateStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ClipboardCopyWithRectangle_Proxy(
+    IInkDisp* This,
+    IInkRectangle *Rectangle,
+    InkClipboardFormats ClipboardFormats,
+    InkClipboardModes ClipboardModes,
+    IDataObject **DataObject);
+void __RPC_STUB IInkDisp_ClipboardCopyWithRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ClipboardCopy_Proxy(
+    IInkDisp* This,
+    IInkStrokes *strokes,
+    InkClipboardFormats ClipboardFormats,
+    InkClipboardModes ClipboardModes,
+    IDataObject **DataObject);
+void __RPC_STUB IInkDisp_ClipboardCopy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_CanPaste_Proxy(
+    IInkDisp* This,
+    IDataObject *DataObject,
+    VARIANT_BOOL *CanPaste);
+void __RPC_STUB IInkDisp_CanPaste_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkDisp_ClipboardPaste_Proxy(
+    IInkDisp* This,
+    LONG x,
+    LONG y,
+    IDataObject *DataObject,
+    IInkStrokes **Strokes);
+void __RPC_STUB IInkDisp_ClipboardPaste_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkDisp_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkStrokes interface
+ */
+#ifndef __IInkStrokes_INTERFACE_DEFINED__
+#define __IInkStrokes_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkStrokes, 0xf1f4c9d8, 0x590a, 0x4963, 0xb3,0xae, 0x19,0x35,0x67,0x1b,0xb6,0xf3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f1f4c9d8-590a-4963-b3ae-1935671bb6f3")
+IInkStrokes : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ink(
+        IInkDisp **Ink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_RecognitionResult(
+        IInkRecognitionResult **RecognitionResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ToString(
+        BSTR *ToString) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG Index,
+        IInkStrokeDisp **Stroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        IInkStrokeDisp *InkStroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddStrokes(
+        IInkStrokes *InkStrokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        IInkStrokeDisp *InkStroke) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveStrokes(
+        IInkStrokes *InkStrokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ModifyDrawingAttributes(
+        IInkDrawingAttributes *DrawAttrs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **BoundingBox) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Transform(
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleToRectangle(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Move(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Shear(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clip(
+        IInkRectangle *Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveRecognitionResult(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkStrokes, 0xf1f4c9d8, 0x590a, 0x4963, 0xb3,0xae, 0x19,0x35,0x67,0x1b,0xb6,0xf3)
+#endif
+#else
+typedef struct IInkStrokesVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkStrokes* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkStrokes* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkStrokes* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkStrokes* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkStrokes* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkStrokes* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkStrokes* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkStrokes methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkStrokes* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkStrokes* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ink)(
+        IInkStrokes* This,
+        IInkDisp **Ink);
+
+    HRESULT (STDMETHODCALLTYPE *get_RecognitionResult)(
+        IInkStrokes* This,
+        IInkRecognitionResult **RecognitionResult);
+
+    HRESULT (STDMETHODCALLTYPE *ToString)(
+        IInkStrokes* This,
+        BSTR *ToString);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkStrokes* This,
+        LONG Index,
+        IInkStrokeDisp **Stroke);
+
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IInkStrokes* This,
+        IInkStrokeDisp *InkStroke);
+
+    HRESULT (STDMETHODCALLTYPE *AddStrokes)(
+        IInkStrokes* This,
+        IInkStrokes *InkStrokes);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IInkStrokes* This,
+        IInkStrokeDisp *InkStroke);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveStrokes)(
+        IInkStrokes* This,
+        IInkStrokes *InkStrokes);
+
+    HRESULT (STDMETHODCALLTYPE *ModifyDrawingAttributes)(
+        IInkStrokes* This,
+        IInkDrawingAttributes *DrawAttrs);
+
+    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
+        IInkStrokes* This,
+        InkBoundingBoxMode BoundingBoxMode,
+        IInkRectangle **BoundingBox);
+
+    HRESULT (STDMETHODCALLTYPE *Transform)(
+        IInkStrokes* This,
+        IInkTransform *Transform,
+        VARIANT_BOOL ApplyOnPenWidth);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleToRectangle)(
+        IInkStrokes* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Move)(
+        IInkStrokes* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkStrokes* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *Shear)(
+        IInkStrokes* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkStrokes* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier);
+
+    HRESULT (STDMETHODCALLTYPE *Clip)(
+        IInkStrokes* This,
+        IInkRectangle *Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveRecognitionResult)(
+        IInkStrokes* This);
+
+    END_INTERFACE
+} IInkStrokesVtbl;
+interface IInkStrokes {
+    CONST_VTBL IInkStrokesVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkStrokes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkStrokes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkStrokes_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkStrokes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkStrokes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkStrokes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkStrokes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkStrokes methods ***/
+#define IInkStrokes_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkStrokes_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkStrokes_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
+#define IInkStrokes_get_RecognitionResult(This,RecognitionResult) (This)->lpVtbl->get_RecognitionResult(This,RecognitionResult)
+#define IInkStrokes_ToString(This,ToString) (This)->lpVtbl->ToString(This,ToString)
+#define IInkStrokes_Item(This,Index,Stroke) (This)->lpVtbl->Item(This,Index,Stroke)
+#define IInkStrokes_Add(This,InkStroke) (This)->lpVtbl->Add(This,InkStroke)
+#define IInkStrokes_AddStrokes(This,InkStrokes) (This)->lpVtbl->AddStrokes(This,InkStrokes)
+#define IInkStrokes_Remove(This,InkStroke) (This)->lpVtbl->Remove(This,InkStroke)
+#define IInkStrokes_RemoveStrokes(This,InkStrokes) (This)->lpVtbl->RemoveStrokes(This,InkStrokes)
+#define IInkStrokes_ModifyDrawingAttributes(This,DrawAttrs) (This)->lpVtbl->ModifyDrawingAttributes(This,DrawAttrs)
+#define IInkStrokes_GetBoundingBox(This,BoundingBoxMode,BoundingBox) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,BoundingBox)
+#define IInkStrokes_Transform(This,Transform,ApplyOnPenWidth) (This)->lpVtbl->Transform(This,Transform,ApplyOnPenWidth)
+#define IInkStrokes_ScaleToRectangle(This,Rectangle) (This)->lpVtbl->ScaleToRectangle(This,Rectangle)
+#define IInkStrokes_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
+#define IInkStrokes_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkStrokes_Shear(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkStrokes_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
+#define IInkStrokes_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
+#define IInkStrokes_RemoveRecognitionResult(This) (This)->lpVtbl->RemoveRecognitionResult(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkStrokes_QueryInterface(IInkStrokes* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkStrokes_AddRef(IInkStrokes* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkStrokes_Release(IInkStrokes* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkStrokes_GetTypeInfoCount(IInkStrokes* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkStrokes_GetTypeInfo(IInkStrokes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkStrokes_GetIDsOfNames(IInkStrokes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkStrokes_Invoke(IInkStrokes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkStrokes methods ***/
+static FORCEINLINE HRESULT IInkStrokes_get_Count(IInkStrokes* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkStrokes_get__NewEnum(IInkStrokes* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkStrokes_get_Ink(IInkStrokes* This,IInkDisp **Ink) {
+    return This->lpVtbl->get_Ink(This,Ink);
+}
+static FORCEINLINE HRESULT IInkStrokes_get_RecognitionResult(IInkStrokes* This,IInkRecognitionResult **RecognitionResult) {
+    return This->lpVtbl->get_RecognitionResult(This,RecognitionResult);
+}
+static FORCEINLINE HRESULT IInkStrokes_ToString(IInkStrokes* This,BSTR *ToString) {
+    return This->lpVtbl->ToString(This,ToString);
+}
+static FORCEINLINE HRESULT IInkStrokes_Item(IInkStrokes* This,LONG Index,IInkStrokeDisp **Stroke) {
+    return This->lpVtbl->Item(This,Index,Stroke);
+}
+static FORCEINLINE HRESULT IInkStrokes_Add(IInkStrokes* This,IInkStrokeDisp *InkStroke) {
+    return This->lpVtbl->Add(This,InkStroke);
+}
+static FORCEINLINE HRESULT IInkStrokes_AddStrokes(IInkStrokes* This,IInkStrokes *InkStrokes) {
+    return This->lpVtbl->AddStrokes(This,InkStrokes);
+}
+static FORCEINLINE HRESULT IInkStrokes_Remove(IInkStrokes* This,IInkStrokeDisp *InkStroke) {
+    return This->lpVtbl->Remove(This,InkStroke);
+}
+static FORCEINLINE HRESULT IInkStrokes_RemoveStrokes(IInkStrokes* This,IInkStrokes *InkStrokes) {
+    return This->lpVtbl->RemoveStrokes(This,InkStrokes);
+}
+static FORCEINLINE HRESULT IInkStrokes_ModifyDrawingAttributes(IInkStrokes* This,IInkDrawingAttributes *DrawAttrs) {
+    return This->lpVtbl->ModifyDrawingAttributes(This,DrawAttrs);
+}
+static FORCEINLINE HRESULT IInkStrokes_GetBoundingBox(IInkStrokes* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **BoundingBox) {
+    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,BoundingBox);
+}
+static FORCEINLINE HRESULT IInkStrokes_Transform(IInkStrokes* This,IInkTransform *Transform,VARIANT_BOOL ApplyOnPenWidth) {
+    return This->lpVtbl->Transform(This,Transform,ApplyOnPenWidth);
+}
+static FORCEINLINE HRESULT IInkStrokes_ScaleToRectangle(IInkStrokes* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->ScaleToRectangle(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokes_Move(IInkStrokes* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkStrokes_Rotate(IInkStrokes* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkStrokes_Shear(IInkStrokes* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkStrokes_ScaleTransform(IInkStrokes* This,float HorizontalMultiplier,float VerticalMultiplier) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
+}
+static FORCEINLINE HRESULT IInkStrokes_Clip(IInkStrokes* This,IInkRectangle *Rectangle) {
+    return This->lpVtbl->Clip(This,Rectangle);
+}
+static FORCEINLINE HRESULT IInkStrokes_RemoveRecognitionResult(IInkStrokes* This) {
+    return This->lpVtbl->RemoveRecognitionResult(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkStrokes_get_Count_Proxy(
+    IInkStrokes* This,
+    LONG *Count);
+void __RPC_STUB IInkStrokes_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_get__NewEnum_Proxy(
+    IInkStrokes* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkStrokes_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_get_Ink_Proxy(
+    IInkStrokes* This,
+    IInkDisp **Ink);
+void __RPC_STUB IInkStrokes_get_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_get_RecognitionResult_Proxy(
+    IInkStrokes* This,
+    IInkRecognitionResult **RecognitionResult);
+void __RPC_STUB IInkStrokes_get_RecognitionResult_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ToString_Proxy(
+    IInkStrokes* This,
+    BSTR *ToString);
+void __RPC_STUB IInkStrokes_ToString_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Item_Proxy(
+    IInkStrokes* This,
+    LONG Index,
+    IInkStrokeDisp **Stroke);
+void __RPC_STUB IInkStrokes_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Add_Proxy(
+    IInkStrokes* This,
+    IInkStrokeDisp *InkStroke);
+void __RPC_STUB IInkStrokes_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_AddStrokes_Proxy(
+    IInkStrokes* This,
+    IInkStrokes *InkStrokes);
+void __RPC_STUB IInkStrokes_AddStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Remove_Proxy(
+    IInkStrokes* This,
+    IInkStrokeDisp *InkStroke);
+void __RPC_STUB IInkStrokes_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_RemoveStrokes_Proxy(
+    IInkStrokes* This,
+    IInkStrokes *InkStrokes);
+void __RPC_STUB IInkStrokes_RemoveStrokes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ModifyDrawingAttributes_Proxy(
+    IInkStrokes* This,
+    IInkDrawingAttributes *DrawAttrs);
+void __RPC_STUB IInkStrokes_ModifyDrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_GetBoundingBox_Proxy(
+    IInkStrokes* This,
+    InkBoundingBoxMode BoundingBoxMode,
+    IInkRectangle **BoundingBox);
+void __RPC_STUB IInkStrokes_GetBoundingBox_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Transform_Proxy(
+    IInkStrokes* This,
+    IInkTransform *Transform,
+    VARIANT_BOOL ApplyOnPenWidth);
+void __RPC_STUB IInkStrokes_Transform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ScaleToRectangle_Proxy(
+    IInkStrokes* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokes_ScaleToRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Move_Proxy(
+    IInkStrokes* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkStrokes_Move_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Rotate_Proxy(
+    IInkStrokes* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkStrokes_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Shear_Proxy(
+    IInkStrokes* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokes_Shear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_ScaleTransform_Proxy(
+    IInkStrokes* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier);
+void __RPC_STUB IInkStrokes_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_Clip_Proxy(
+    IInkStrokes* This,
+    IInkRectangle *Rectangle);
+void __RPC_STUB IInkStrokes_Clip_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkStrokes_RemoveRecognitionResult_Proxy(
+    IInkStrokes* This);
+void __RPC_STUB IInkStrokes_RemoveRecognitionResult_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkStrokes_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkRenderer interface
+ */
+#ifndef __IInkRenderer_INTERFACE_DEFINED__
+#define __IInkRenderer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkRenderer, 0xe6257a9c, 0xb511, 0x4f4c, 0xa8,0xb0, 0xa7,0xdb,0xc9,0x50,0x6b,0x83);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e6257a9c-b511-4f4c-a8b0-a7dbc9506b83")
+IInkRenderer : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE GetViewTransform(
+        IInkTransform *ViewTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetViewTransform(
+        IInkTransform *ViewTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetObjectTransform(
+        IInkTransform *ObjectTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetObjectTransform(
+        IInkTransform *ObjectTransform) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Draw(
+        LONG_PTR hDC,
+        IInkStrokes *Strokes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DrawStroke(
+        LONG_PTR hDC,
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PixelToInkSpace(
+        LONG_PTR hDC,
+        LONG *x,
+        LONG *y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InkSpaceToPixel(
+        LONG_PTR hdcDisplay,
+        LONG *x,
+        LONG *y) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PixelToInkSpaceFromPoints(
+        LONG_PTR hDC,
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE InkSpaceToPixelFromPoints(
+        LONG_PTR hDC,
+        VARIANT *Points) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Measure(
+        IInkStrokes *Strokes,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MeasureStroke(
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes,
+        IInkRectangle **Rectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Move(
+        float HorizontalComponent,
+        float VerticalComponent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Rotate(
+        float Degrees,
+        float x = 0,
+        float y = 0) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
+        float HorizontalMultiplier,
+        float VerticalMultiplier,
+        VARIANT_BOOL ApplyOnPenWidth = -1) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkRenderer, 0xe6257a9c, 0xb511, 0x4f4c, 0xa8,0xb0, 0xa7,0xdb,0xc9,0x50,0x6b,0x83)
+#endif
+#else
+typedef struct IInkRendererVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkRenderer* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkRenderer* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkRenderer* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkRenderer* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkRenderer* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkRenderer* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkRenderer* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkRenderer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetViewTransform)(
+        IInkRenderer* This,
+        IInkTransform *ViewTransform);
+
+    HRESULT (STDMETHODCALLTYPE *SetViewTransform)(
+        IInkRenderer* This,
+        IInkTransform *ViewTransform);
+
+    HRESULT (STDMETHODCALLTYPE *GetObjectTransform)(
+        IInkRenderer* This,
+        IInkTransform *ObjectTransform);
+
+    HRESULT (STDMETHODCALLTYPE *SetObjectTransform)(
+        IInkRenderer* This,
+        IInkTransform *ObjectTransform);
+
+    HRESULT (STDMETHODCALLTYPE *Draw)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        IInkStrokes *Strokes);
+
+    HRESULT (STDMETHODCALLTYPE *DrawStroke)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *PixelToInkSpace)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        LONG *x,
+        LONG *y);
+
+    HRESULT (STDMETHODCALLTYPE *InkSpaceToPixel)(
+        IInkRenderer* This,
+        LONG_PTR hdcDisplay,
+        LONG *x,
+        LONG *y);
+
+    HRESULT (STDMETHODCALLTYPE *PixelToInkSpaceFromPoints)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *InkSpaceToPixelFromPoints)(
+        IInkRenderer* This,
+        LONG_PTR hDC,
+        VARIANT *Points);
+
+    HRESULT (STDMETHODCALLTYPE *Measure)(
+        IInkRenderer* This,
+        IInkStrokes *Strokes,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *MeasureStroke)(
+        IInkRenderer* This,
+        IInkStrokeDisp *Stroke,
+        IInkDrawingAttributes *DrawingAttributes,
+        IInkRectangle **Rectangle);
+
+    HRESULT (STDMETHODCALLTYPE *Move)(
+        IInkRenderer* This,
+        float HorizontalComponent,
+        float VerticalComponent);
+
+    HRESULT (STDMETHODCALLTYPE *Rotate)(
+        IInkRenderer* This,
+        float Degrees,
+        float x,
+        float y);
+
+    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
+        IInkRenderer* This,
+        float HorizontalMultiplier,
+        float VerticalMultiplier,
+        VARIANT_BOOL ApplyOnPenWidth);
+
+    END_INTERFACE
+} IInkRendererVtbl;
+interface IInkRenderer {
+    CONST_VTBL IInkRendererVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkRenderer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkRenderer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkRenderer_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkRenderer_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkRenderer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkRenderer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkRenderer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkRenderer methods ***/
+#define IInkRenderer_GetViewTransform(This,ViewTransform) (This)->lpVtbl->GetViewTransform(This,ViewTransform)
+#define IInkRenderer_SetViewTransform(This,ViewTransform) (This)->lpVtbl->SetViewTransform(This,ViewTransform)
+#define IInkRenderer_GetObjectTransform(This,ObjectTransform) (This)->lpVtbl->GetObjectTransform(This,ObjectTransform)
+#define IInkRenderer_SetObjectTransform(This,ObjectTransform) (This)->lpVtbl->SetObjectTransform(This,ObjectTransform)
+#define IInkRenderer_Draw(This,hDC,Strokes) (This)->lpVtbl->Draw(This,hDC,Strokes)
+#define IInkRenderer_DrawStroke(This,hDC,Stroke,DrawingAttributes) (This)->lpVtbl->DrawStroke(This,hDC,Stroke,DrawingAttributes)
+#define IInkRenderer_PixelToInkSpace(This,hDC,x,y) (This)->lpVtbl->PixelToInkSpace(This,hDC,x,y)
+#define IInkRenderer_InkSpaceToPixel(This,hdcDisplay,x,y) (This)->lpVtbl->InkSpaceToPixel(This,hdcDisplay,x,y)
+#define IInkRenderer_PixelToInkSpaceFromPoints(This,hDC,Points) (This)->lpVtbl->PixelToInkSpaceFromPoints(This,hDC,Points)
+#define IInkRenderer_InkSpaceToPixelFromPoints(This,hDC,Points) (This)->lpVtbl->InkSpaceToPixelFromPoints(This,hDC,Points)
+#define IInkRenderer_Measure(This,Strokes,Rectangle) (This)->lpVtbl->Measure(This,Strokes,Rectangle)
+#define IInkRenderer_MeasureStroke(This,Stroke,DrawingAttributes,Rectangle) (This)->lpVtbl->MeasureStroke(This,Stroke,DrawingAttributes,Rectangle)
+#define IInkRenderer_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
+#define IInkRenderer_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
+#define IInkRenderer_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkRenderer_QueryInterface(IInkRenderer* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkRenderer_AddRef(IInkRenderer* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkRenderer_Release(IInkRenderer* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkRenderer_GetTypeInfoCount(IInkRenderer* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkRenderer_GetTypeInfo(IInkRenderer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkRenderer_GetIDsOfNames(IInkRenderer* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkRenderer_Invoke(IInkRenderer* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkRenderer methods ***/
+static FORCEINLINE HRESULT IInkRenderer_GetViewTransform(IInkRenderer* This,IInkTransform *ViewTransform) {
+    return This->lpVtbl->GetViewTransform(This,ViewTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_SetViewTransform(IInkRenderer* This,IInkTransform *ViewTransform) {
+    return This->lpVtbl->SetViewTransform(This,ViewTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_GetObjectTransform(IInkRenderer* This,IInkTransform *ObjectTransform) {
+    return This->lpVtbl->GetObjectTransform(This,ObjectTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_SetObjectTransform(IInkRenderer* This,IInkTransform *ObjectTransform) {
+    return This->lpVtbl->SetObjectTransform(This,ObjectTransform);
+}
+static FORCEINLINE HRESULT IInkRenderer_Draw(IInkRenderer* This,LONG_PTR hDC,IInkStrokes *Strokes) {
+    return This->lpVtbl->Draw(This,hDC,Strokes);
+}
+static FORCEINLINE HRESULT IInkRenderer_DrawStroke(IInkRenderer* This,LONG_PTR hDC,IInkStrokeDisp *Stroke,IInkDrawingAttributes *DrawingAttributes) {
+    return This->lpVtbl->DrawStroke(This,hDC,Stroke,DrawingAttributes);
+}
+static FORCEINLINE HRESULT IInkRenderer_PixelToInkSpace(IInkRenderer* This,LONG_PTR hDC,LONG *x,LONG *y) {
+    return This->lpVtbl->PixelToInkSpace(This,hDC,x,y);
+}
+static FORCEINLINE HRESULT IInkRenderer_InkSpaceToPixel(IInkRenderer* This,LONG_PTR hdcDisplay,LONG *x,LONG *y) {
+    return This->lpVtbl->InkSpaceToPixel(This,hdcDisplay,x,y);
+}
+static FORCEINLINE HRESULT IInkRenderer_PixelToInkSpaceFromPoints(IInkRenderer* This,LONG_PTR hDC,VARIANT *Points) {
+    return This->lpVtbl->PixelToInkSpaceFromPoints(This,hDC,Points);
+}
+static FORCEINLINE HRESULT IInkRenderer_InkSpaceToPixelFromPoints(IInkRenderer* This,LONG_PTR hDC,VARIANT *Points) {
+    return This->lpVtbl->InkSpaceToPixelFromPoints(This,hDC,Points);
+}
+static FORCEINLINE HRESULT IInkRenderer_Measure(IInkRenderer* This,IInkStrokes *Strokes,IInkRectangle **Rectangle) {
+    return This->lpVtbl->Measure(This,Strokes,Rectangle);
+}
+static FORCEINLINE HRESULT IInkRenderer_MeasureStroke(IInkRenderer* This,IInkStrokeDisp *Stroke,IInkDrawingAttributes *DrawingAttributes,IInkRectangle **Rectangle) {
+    return This->lpVtbl->MeasureStroke(This,Stroke,DrawingAttributes,Rectangle);
+}
+static FORCEINLINE HRESULT IInkRenderer_Move(IInkRenderer* This,float HorizontalComponent,float VerticalComponent) {
+    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
+}
+static FORCEINLINE HRESULT IInkRenderer_Rotate(IInkRenderer* This,float Degrees,float x,float y) {
+    return This->lpVtbl->Rotate(This,Degrees,x,y);
+}
+static FORCEINLINE HRESULT IInkRenderer_ScaleTransform(IInkRenderer* This,float HorizontalMultiplier,float VerticalMultiplier,VARIANT_BOOL ApplyOnPenWidth) {
+    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkRenderer_GetViewTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ViewTransform);
+void __RPC_STUB IInkRenderer_GetViewTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_SetViewTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ViewTransform);
+void __RPC_STUB IInkRenderer_SetViewTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_GetObjectTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ObjectTransform);
+void __RPC_STUB IInkRenderer_GetObjectTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_SetObjectTransform_Proxy(
+    IInkRenderer* This,
+    IInkTransform *ObjectTransform);
+void __RPC_STUB IInkRenderer_SetObjectTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Draw_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    IInkStrokes *Strokes);
+void __RPC_STUB IInkRenderer_Draw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_DrawStroke_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    IInkStrokeDisp *Stroke,
+    IInkDrawingAttributes *DrawingAttributes);
+void __RPC_STUB IInkRenderer_DrawStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_PixelToInkSpace_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    LONG *x,
+    LONG *y);
+void __RPC_STUB IInkRenderer_PixelToInkSpace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_InkSpaceToPixel_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hdcDisplay,
+    LONG *x,
+    LONG *y);
+void __RPC_STUB IInkRenderer_InkSpaceToPixel_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_PixelToInkSpaceFromPoints_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    VARIANT *Points);
+void __RPC_STUB IInkRenderer_PixelToInkSpaceFromPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_InkSpaceToPixelFromPoints_Proxy(
+    IInkRenderer* This,
+    LONG_PTR hDC,
+    VARIANT *Points);
+void __RPC_STUB IInkRenderer_InkSpaceToPixelFromPoints_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Measure_Proxy(
+    IInkRenderer* This,
+    IInkStrokes *Strokes,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkRenderer_Measure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_MeasureStroke_Proxy(
+    IInkRenderer* This,
+    IInkStrokeDisp *Stroke,
+    IInkDrawingAttributes *DrawingAttributes,
+    IInkRectangle **Rectangle);
+void __RPC_STUB IInkRenderer_MeasureStroke_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Move_Proxy(
+    IInkRenderer* This,
+    float HorizontalComponent,
+    float VerticalComponent);
+void __RPC_STUB IInkRenderer_Move_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_Rotate_Proxy(
+    IInkRenderer* This,
+    float Degrees,
+    float x,
+    float y);
+void __RPC_STUB IInkRenderer_Rotate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkRenderer_ScaleTransform_Proxy(
+    IInkRenderer* This,
+    float HorizontalMultiplier,
+    float VerticalMultiplier,
+    VARIANT_BOOL ApplyOnPenWidth);
+void __RPC_STUB IInkRenderer_ScaleTransform_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkRenderer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCursors interface
+ */
+#ifndef __IInkCursors_INTERFACE_DEFINED__
+#define __IInkCursors_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCursors, 0xa248c1ac, 0xc698, 0x4e06, 0x9e,0x5c, 0xd5,0x7f,0x77,0xc7,0xe6,0x47);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a248c1ac-c698-4e06-9e5c-d57f77c7e647")
+IInkCursors : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_Count(
+        LONG *Count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
+        IUnknown **_NewEnum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Item(
+        LONG Index,
+        IInkCursor **Cursor) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCursors, 0xa248c1ac, 0xc698, 0x4e06, 0x9e,0x5c, 0xd5,0x7f,0x77,0xc7,0xe6,0x47)
+#endif
+#else
+typedef struct IInkCursorsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCursors* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCursors* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCursors* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCursors* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCursors* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCursors* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCursors* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCursors methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_Count)(
+        IInkCursors* This,
+        LONG *Count);
+
+    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
+        IInkCursors* This,
+        IUnknown **_NewEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Item)(
+        IInkCursors* This,
+        LONG Index,
+        IInkCursor **Cursor);
+
+    END_INTERFACE
+} IInkCursorsVtbl;
+interface IInkCursors {
+    CONST_VTBL IInkCursorsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCursors_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCursors_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCursors_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCursors_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCursors_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCursors_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCursors_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCursors methods ***/
+#define IInkCursors_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
+#define IInkCursors_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
+#define IInkCursors_Item(This,Index,Cursor) (This)->lpVtbl->Item(This,Index,Cursor)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCursors_QueryInterface(IInkCursors* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCursors_AddRef(IInkCursors* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCursors_Release(IInkCursors* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCursors_GetTypeInfoCount(IInkCursors* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCursors_GetTypeInfo(IInkCursors* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCursors_GetIDsOfNames(IInkCursors* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCursors_Invoke(IInkCursors* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCursors methods ***/
+static FORCEINLINE HRESULT IInkCursors_get_Count(IInkCursors* This,LONG *Count) {
+    return This->lpVtbl->get_Count(This,Count);
+}
+static FORCEINLINE HRESULT IInkCursors_get__NewEnum(IInkCursors* This,IUnknown **_NewEnum) {
+    return This->lpVtbl->get__NewEnum(This,_NewEnum);
+}
+static FORCEINLINE HRESULT IInkCursors_Item(IInkCursors* This,LONG Index,IInkCursor **Cursor) {
+    return This->lpVtbl->Item(This,Index,Cursor);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCursors_get_Count_Proxy(
+    IInkCursors* This,
+    LONG *Count);
+void __RPC_STUB IInkCursors_get_Count_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursors_get__NewEnum_Proxy(
+    IInkCursors* This,
+    IUnknown **_NewEnum);
+void __RPC_STUB IInkCursors_get__NewEnum_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCursors_Item_Proxy(
+    IInkCursors* This,
+    LONG Index,
+    IInkCursor **Cursor);
+void __RPC_STUB IInkCursors_Item_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCursors_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IInkCollector interface
+ */
+#ifndef __IInkCollector_INTERFACE_DEFINED__
+#define __IInkCollector_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IInkCollector, 0xf0f060b5, 0x8b1f, 0x4a7c, 0x89,0xec, 0x88,0x06,0x92,0x58,0x8a,0x4f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f0f060b5-8b1f-4a7c-89ec-880692588a4f")
+IInkCollector : public IDispatch
+{
+    virtual HRESULT STDMETHODCALLTYPE get_hWnd(
+        LONG_PTR *CurrentWindow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_hWnd(
+        LONG_PTR NewWindow) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Enabled(
+        VARIANT_BOOL *Collecting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_Enabled(
+        VARIANT_BOOL Collecting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DefaultDrawingAttributes(
+        IInkDrawingAttributes **CurrentAttributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_DefaultDrawingAttributes(
+        IInkDrawingAttributes *NewAttributes) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Renderer(
+        IInkRenderer **CurrentInkRenderer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_Renderer(
+        IInkRenderer *NewInkRenderer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Ink(
+        IInkDisp **Ink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_Ink(
+        IInkDisp *NewInk) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_AutoRedraw(
+        VARIANT_BOOL *AutoRedraw) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_AutoRedraw(
+        VARIANT_BOOL AutoRedraw) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CollectingInk(
+        VARIANT_BOOL *Collecting) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_CollectionMode(
+        InkCollectionMode *Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_CollectionMode(
+        InkCollectionMode Mode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DynamicRendering(
+        VARIANT_BOOL *Enabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DynamicRendering(
+        VARIANT_BOOL Enabled) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_DesiredPacketDescription(
+        VARIANT *PacketGuids) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_DesiredPacketDescription(
+        VARIANT PacketGuids) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MouseIcon(
+        IPictureDisp **MouseIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MouseIcon(
+        IPictureDisp *MouseIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE putref_MouseIcon(
+        IPictureDisp *MouseIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MousePointer(
+        InkMousePointer *MousePointer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MousePointer(
+        InkMousePointer MousePointer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Cursors(
+        IInkCursors **Cursors) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MarginX(
+        LONG *MarginX) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MarginX(
+        LONG MarginX) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_MarginY(
+        LONG *MarginY) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_MarginY(
+        LONG MarginY) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_Tablet(
+        IInkTablet **SingleTablet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_SupportHighContrastInk(
+        VARIANT_BOOL *Support) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE put_SupportHighContrastInk(
+        VARIANT_BOOL Support) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetGestureStatus(
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL Listen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetGestureStatus(
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL *Listening) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetWindowInputRectangle(
+        IInkRectangle **WindowInputRectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetWindowInputRectangle(
+        IInkRectangle *WindowInputRectangle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAllTabletsMode(
+        VARIANT_BOOL UseMouseForInput = -1) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSingleTabletIntegratedMode(
+        IInkTablet *Tablet) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEventInterest(
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL *Listen) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetEventInterest(
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL Listen) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IInkCollector, 0xf0f060b5, 0x8b1f, 0x4a7c, 0x89,0xec, 0x88,0x06,0x92,0x58,0x8a,0x4f)
+#endif
+#else
+typedef struct IInkCollectorVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IInkCollector* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IInkCollector* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IInkCollector* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        IInkCollector* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        IInkCollector* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        IInkCollector* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        IInkCollector* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    /*** IInkCollector methods ***/
+    HRESULT (STDMETHODCALLTYPE *get_hWnd)(
+        IInkCollector* This,
+        LONG_PTR *CurrentWindow);
+
+    HRESULT (STDMETHODCALLTYPE *put_hWnd)(
+        IInkCollector* This,
+        LONG_PTR NewWindow);
+
+    HRESULT (STDMETHODCALLTYPE *get_Enabled)(
+        IInkCollector* This,
+        VARIANT_BOOL *Collecting);
+
+    HRESULT (STDMETHODCALLTYPE *put_Enabled)(
+        IInkCollector* This,
+        VARIANT_BOOL Collecting);
+
+    HRESULT (STDMETHODCALLTYPE *get_DefaultDrawingAttributes)(
+        IInkCollector* This,
+        IInkDrawingAttributes **CurrentAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *putref_DefaultDrawingAttributes)(
+        IInkCollector* This,
+        IInkDrawingAttributes *NewAttributes);
+
+    HRESULT (STDMETHODCALLTYPE *get_Renderer)(
+        IInkCollector* This,
+        IInkRenderer **CurrentInkRenderer);
+
+    HRESULT (STDMETHODCALLTYPE *putref_Renderer)(
+        IInkCollector* This,
+        IInkRenderer *NewInkRenderer);
+
+    HRESULT (STDMETHODCALLTYPE *get_Ink)(
+        IInkCollector* This,
+        IInkDisp **Ink);
+
+    HRESULT (STDMETHODCALLTYPE *putref_Ink)(
+        IInkCollector* This,
+        IInkDisp *NewInk);
+
+    HRESULT (STDMETHODCALLTYPE *get_AutoRedraw)(
+        IInkCollector* This,
+        VARIANT_BOOL *AutoRedraw);
+
+    HRESULT (STDMETHODCALLTYPE *put_AutoRedraw)(
+        IInkCollector* This,
+        VARIANT_BOOL AutoRedraw);
+
+    HRESULT (STDMETHODCALLTYPE *get_CollectingInk)(
+        IInkCollector* This,
+        VARIANT_BOOL *Collecting);
+
+    HRESULT (STDMETHODCALLTYPE *get_CollectionMode)(
+        IInkCollector* This,
+        InkCollectionMode *Mode);
+
+    HRESULT (STDMETHODCALLTYPE *put_CollectionMode)(
+        IInkCollector* This,
+        InkCollectionMode Mode);
+
+    HRESULT (STDMETHODCALLTYPE *get_DynamicRendering)(
+        IInkCollector* This,
+        VARIANT_BOOL *Enabled);
+
+    HRESULT (STDMETHODCALLTYPE *put_DynamicRendering)(
+        IInkCollector* This,
+        VARIANT_BOOL Enabled);
+
+    HRESULT (STDMETHODCALLTYPE *get_DesiredPacketDescription)(
+        IInkCollector* This,
+        VARIANT *PacketGuids);
+
+    HRESULT (STDMETHODCALLTYPE *put_DesiredPacketDescription)(
+        IInkCollector* This,
+        VARIANT PacketGuids);
+
+    HRESULT (STDMETHODCALLTYPE *get_MouseIcon)(
+        IInkCollector* This,
+        IPictureDisp **MouseIcon);
+
+    HRESULT (STDMETHODCALLTYPE *put_MouseIcon)(
+        IInkCollector* This,
+        IPictureDisp *MouseIcon);
+
+    HRESULT (STDMETHODCALLTYPE *putref_MouseIcon)(
+        IInkCollector* This,
+        IPictureDisp *MouseIcon);
+
+    HRESULT (STDMETHODCALLTYPE *get_MousePointer)(
+        IInkCollector* This,
+        InkMousePointer *MousePointer);
+
+    HRESULT (STDMETHODCALLTYPE *put_MousePointer)(
+        IInkCollector* This,
+        InkMousePointer MousePointer);
+
+    HRESULT (STDMETHODCALLTYPE *get_Cursors)(
+        IInkCollector* This,
+        IInkCursors **Cursors);
+
+    HRESULT (STDMETHODCALLTYPE *get_MarginX)(
+        IInkCollector* This,
+        LONG *MarginX);
+
+    HRESULT (STDMETHODCALLTYPE *put_MarginX)(
+        IInkCollector* This,
+        LONG MarginX);
+
+    HRESULT (STDMETHODCALLTYPE *get_MarginY)(
+        IInkCollector* This,
+        LONG *MarginY);
+
+    HRESULT (STDMETHODCALLTYPE *put_MarginY)(
+        IInkCollector* This,
+        LONG MarginY);
+
+    HRESULT (STDMETHODCALLTYPE *get_Tablet)(
+        IInkCollector* This,
+        IInkTablet **SingleTablet);
+
+    HRESULT (STDMETHODCALLTYPE *get_SupportHighContrastInk)(
+        IInkCollector* This,
+        VARIANT_BOOL *Support);
+
+    HRESULT (STDMETHODCALLTYPE *put_SupportHighContrastInk)(
+        IInkCollector* This,
+        VARIANT_BOOL Support);
+
+    HRESULT (STDMETHODCALLTYPE *SetGestureStatus)(
+        IInkCollector* This,
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL Listen);
+
+    HRESULT (STDMETHODCALLTYPE *GetGestureStatus)(
+        IInkCollector* This,
+        InkApplicationGesture Gesture,
+        VARIANT_BOOL *Listening);
+
+    HRESULT (STDMETHODCALLTYPE *GetWindowInputRectangle)(
+        IInkCollector* This,
+        IInkRectangle **WindowInputRectangle);
+
+    HRESULT (STDMETHODCALLTYPE *SetWindowInputRectangle)(
+        IInkCollector* This,
+        IInkRectangle *WindowInputRectangle);
+
+    HRESULT (STDMETHODCALLTYPE *SetAllTabletsMode)(
+        IInkCollector* This,
+        VARIANT_BOOL UseMouseForInput);
+
+    HRESULT (STDMETHODCALLTYPE *SetSingleTabletIntegratedMode)(
+        IInkCollector* This,
+        IInkTablet *Tablet);
+
+    HRESULT (STDMETHODCALLTYPE *GetEventInterest)(
+        IInkCollector* This,
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL *Listen);
+
+    HRESULT (STDMETHODCALLTYPE *SetEventInterest)(
+        IInkCollector* This,
+        InkCollectorEventInterest EventId,
+        VARIANT_BOOL Listen);
+
+    END_INTERFACE
+} IInkCollectorVtbl;
+interface IInkCollector {
+    CONST_VTBL IInkCollectorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IInkCollector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInkCollector_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInkCollector_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IInkCollector_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IInkCollector_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IInkCollector_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IInkCollector_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IInkCollector methods ***/
+#define IInkCollector_get_hWnd(This,CurrentWindow) (This)->lpVtbl->get_hWnd(This,CurrentWindow)
+#define IInkCollector_put_hWnd(This,NewWindow) (This)->lpVtbl->put_hWnd(This,NewWindow)
+#define IInkCollector_get_Enabled(This,Collecting) (This)->lpVtbl->get_Enabled(This,Collecting)
+#define IInkCollector_put_Enabled(This,Collecting) (This)->lpVtbl->put_Enabled(This,Collecting)
+#define IInkCollector_get_DefaultDrawingAttributes(This,CurrentAttributes) (This)->lpVtbl->get_DefaultDrawingAttributes(This,CurrentAttributes)
+#define IInkCollector_putref_DefaultDrawingAttributes(This,NewAttributes) (This)->lpVtbl->putref_DefaultDrawingAttributes(This,NewAttributes)
+#define IInkCollector_get_Renderer(This,CurrentInkRenderer) (This)->lpVtbl->get_Renderer(This,CurrentInkRenderer)
+#define IInkCollector_putref_Renderer(This,NewInkRenderer) (This)->lpVtbl->putref_Renderer(This,NewInkRenderer)
+#define IInkCollector_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
+#define IInkCollector_putref_Ink(This,NewInk) (This)->lpVtbl->putref_Ink(This,NewInk)
+#define IInkCollector_get_AutoRedraw(This,AutoRedraw) (This)->lpVtbl->get_AutoRedraw(This,AutoRedraw)
+#define IInkCollector_put_AutoRedraw(This,AutoRedraw) (This)->lpVtbl->put_AutoRedraw(This,AutoRedraw)
+#define IInkCollector_get_CollectingInk(This,Collecting) (This)->lpVtbl->get_CollectingInk(This,Collecting)
+#define IInkCollector_get_CollectionMode(This,Mode) (This)->lpVtbl->get_CollectionMode(This,Mode)
+#define IInkCollector_put_CollectionMode(This,Mode) (This)->lpVtbl->put_CollectionMode(This,Mode)
+#define IInkCollector_get_DynamicRendering(This,Enabled) (This)->lpVtbl->get_DynamicRendering(This,Enabled)
+#define IInkCollector_put_DynamicRendering(This,Enabled) (This)->lpVtbl->put_DynamicRendering(This,Enabled)
+#define IInkCollector_get_DesiredPacketDescription(This,PacketGuids) (This)->lpVtbl->get_DesiredPacketDescription(This,PacketGuids)
+#define IInkCollector_put_DesiredPacketDescription(This,PacketGuids) (This)->lpVtbl->put_DesiredPacketDescription(This,PacketGuids)
+#define IInkCollector_get_MouseIcon(This,MouseIcon) (This)->lpVtbl->get_MouseIcon(This,MouseIcon)
+#define IInkCollector_put_MouseIcon(This,MouseIcon) (This)->lpVtbl->put_MouseIcon(This,MouseIcon)
+#define IInkCollector_putref_MouseIcon(This,MouseIcon) (This)->lpVtbl->putref_MouseIcon(This,MouseIcon)
+#define IInkCollector_get_MousePointer(This,MousePointer) (This)->lpVtbl->get_MousePointer(This,MousePointer)
+#define IInkCollector_put_MousePointer(This,MousePointer) (This)->lpVtbl->put_MousePointer(This,MousePointer)
+#define IInkCollector_get_Cursors(This,Cursors) (This)->lpVtbl->get_Cursors(This,Cursors)
+#define IInkCollector_get_MarginX(This,MarginX) (This)->lpVtbl->get_MarginX(This,MarginX)
+#define IInkCollector_put_MarginX(This,MarginX) (This)->lpVtbl->put_MarginX(This,MarginX)
+#define IInkCollector_get_MarginY(This,MarginY) (This)->lpVtbl->get_MarginY(This,MarginY)
+#define IInkCollector_put_MarginY(This,MarginY) (This)->lpVtbl->put_MarginY(This,MarginY)
+#define IInkCollector_get_Tablet(This,SingleTablet) (This)->lpVtbl->get_Tablet(This,SingleTablet)
+#define IInkCollector_get_SupportHighContrastInk(This,Support) (This)->lpVtbl->get_SupportHighContrastInk(This,Support)
+#define IInkCollector_put_SupportHighContrastInk(This,Support) (This)->lpVtbl->put_SupportHighContrastInk(This,Support)
+#define IInkCollector_SetGestureStatus(This,Gesture,Listen) (This)->lpVtbl->SetGestureStatus(This,Gesture,Listen)
+#define IInkCollector_GetGestureStatus(This,Gesture,Listening) (This)->lpVtbl->GetGestureStatus(This,Gesture,Listening)
+#define IInkCollector_GetWindowInputRectangle(This,WindowInputRectangle) (This)->lpVtbl->GetWindowInputRectangle(This,WindowInputRectangle)
+#define IInkCollector_SetWindowInputRectangle(This,WindowInputRectangle) (This)->lpVtbl->SetWindowInputRectangle(This,WindowInputRectangle)
+#define IInkCollector_SetAllTabletsMode(This,UseMouseForInput) (This)->lpVtbl->SetAllTabletsMode(This,UseMouseForInput)
+#define IInkCollector_SetSingleTabletIntegratedMode(This,Tablet) (This)->lpVtbl->SetSingleTabletIntegratedMode(This,Tablet)
+#define IInkCollector_GetEventInterest(This,EventId,Listen) (This)->lpVtbl->GetEventInterest(This,EventId,Listen)
+#define IInkCollector_SetEventInterest(This,EventId,Listen) (This)->lpVtbl->SetEventInterest(This,EventId,Listen)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IInkCollector_QueryInterface(IInkCollector* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IInkCollector_AddRef(IInkCollector* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IInkCollector_Release(IInkCollector* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IInkCollector_GetTypeInfoCount(IInkCollector* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IInkCollector_GetTypeInfo(IInkCollector* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IInkCollector_GetIDsOfNames(IInkCollector* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IInkCollector_Invoke(IInkCollector* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IInkCollector methods ***/
+static FORCEINLINE HRESULT IInkCollector_get_hWnd(IInkCollector* This,LONG_PTR *CurrentWindow) {
+    return This->lpVtbl->get_hWnd(This,CurrentWindow);
+}
+static FORCEINLINE HRESULT IInkCollector_put_hWnd(IInkCollector* This,LONG_PTR NewWindow) {
+    return This->lpVtbl->put_hWnd(This,NewWindow);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Enabled(IInkCollector* This,VARIANT_BOOL *Collecting) {
+    return This->lpVtbl->get_Enabled(This,Collecting);
+}
+static FORCEINLINE HRESULT IInkCollector_put_Enabled(IInkCollector* This,VARIANT_BOOL Collecting) {
+    return This->lpVtbl->put_Enabled(This,Collecting);
+}
+static FORCEINLINE HRESULT IInkCollector_get_DefaultDrawingAttributes(IInkCollector* This,IInkDrawingAttributes **CurrentAttributes) {
+    return This->lpVtbl->get_DefaultDrawingAttributes(This,CurrentAttributes);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_DefaultDrawingAttributes(IInkCollector* This,IInkDrawingAttributes *NewAttributes) {
+    return This->lpVtbl->putref_DefaultDrawingAttributes(This,NewAttributes);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Renderer(IInkCollector* This,IInkRenderer **CurrentInkRenderer) {
+    return This->lpVtbl->get_Renderer(This,CurrentInkRenderer);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_Renderer(IInkCollector* This,IInkRenderer *NewInkRenderer) {
+    return This->lpVtbl->putref_Renderer(This,NewInkRenderer);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Ink(IInkCollector* This,IInkDisp **Ink) {
+    return This->lpVtbl->get_Ink(This,Ink);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_Ink(IInkCollector* This,IInkDisp *NewInk) {
+    return This->lpVtbl->putref_Ink(This,NewInk);
+}
+static FORCEINLINE HRESULT IInkCollector_get_AutoRedraw(IInkCollector* This,VARIANT_BOOL *AutoRedraw) {
+    return This->lpVtbl->get_AutoRedraw(This,AutoRedraw);
+}
+static FORCEINLINE HRESULT IInkCollector_put_AutoRedraw(IInkCollector* This,VARIANT_BOOL AutoRedraw) {
+    return This->lpVtbl->put_AutoRedraw(This,AutoRedraw);
+}
+static FORCEINLINE HRESULT IInkCollector_get_CollectingInk(IInkCollector* This,VARIANT_BOOL *Collecting) {
+    return This->lpVtbl->get_CollectingInk(This,Collecting);
+}
+static FORCEINLINE HRESULT IInkCollector_get_CollectionMode(IInkCollector* This,InkCollectionMode *Mode) {
+    return This->lpVtbl->get_CollectionMode(This,Mode);
+}
+static FORCEINLINE HRESULT IInkCollector_put_CollectionMode(IInkCollector* This,InkCollectionMode Mode) {
+    return This->lpVtbl->put_CollectionMode(This,Mode);
+}
+static FORCEINLINE HRESULT IInkCollector_get_DynamicRendering(IInkCollector* This,VARIANT_BOOL *Enabled) {
+    return This->lpVtbl->get_DynamicRendering(This,Enabled);
+}
+static FORCEINLINE HRESULT IInkCollector_put_DynamicRendering(IInkCollector* This,VARIANT_BOOL Enabled) {
+    return This->lpVtbl->put_DynamicRendering(This,Enabled);
+}
+static FORCEINLINE HRESULT IInkCollector_get_DesiredPacketDescription(IInkCollector* This,VARIANT *PacketGuids) {
+    return This->lpVtbl->get_DesiredPacketDescription(This,PacketGuids);
+}
+static FORCEINLINE HRESULT IInkCollector_put_DesiredPacketDescription(IInkCollector* This,VARIANT PacketGuids) {
+    return This->lpVtbl->put_DesiredPacketDescription(This,PacketGuids);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MouseIcon(IInkCollector* This,IPictureDisp **MouseIcon) {
+    return This->lpVtbl->get_MouseIcon(This,MouseIcon);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MouseIcon(IInkCollector* This,IPictureDisp *MouseIcon) {
+    return This->lpVtbl->put_MouseIcon(This,MouseIcon);
+}
+static FORCEINLINE HRESULT IInkCollector_putref_MouseIcon(IInkCollector* This,IPictureDisp *MouseIcon) {
+    return This->lpVtbl->putref_MouseIcon(This,MouseIcon);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MousePointer(IInkCollector* This,InkMousePointer *MousePointer) {
+    return This->lpVtbl->get_MousePointer(This,MousePointer);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MousePointer(IInkCollector* This,InkMousePointer MousePointer) {
+    return This->lpVtbl->put_MousePointer(This,MousePointer);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Cursors(IInkCollector* This,IInkCursors **Cursors) {
+    return This->lpVtbl->get_Cursors(This,Cursors);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MarginX(IInkCollector* This,LONG *MarginX) {
+    return This->lpVtbl->get_MarginX(This,MarginX);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MarginX(IInkCollector* This,LONG MarginX) {
+    return This->lpVtbl->put_MarginX(This,MarginX);
+}
+static FORCEINLINE HRESULT IInkCollector_get_MarginY(IInkCollector* This,LONG *MarginY) {
+    return This->lpVtbl->get_MarginY(This,MarginY);
+}
+static FORCEINLINE HRESULT IInkCollector_put_MarginY(IInkCollector* This,LONG MarginY) {
+    return This->lpVtbl->put_MarginY(This,MarginY);
+}
+static FORCEINLINE HRESULT IInkCollector_get_Tablet(IInkCollector* This,IInkTablet **SingleTablet) {
+    return This->lpVtbl->get_Tablet(This,SingleTablet);
+}
+static FORCEINLINE HRESULT IInkCollector_get_SupportHighContrastInk(IInkCollector* This,VARIANT_BOOL *Support) {
+    return This->lpVtbl->get_SupportHighContrastInk(This,Support);
+}
+static FORCEINLINE HRESULT IInkCollector_put_SupportHighContrastInk(IInkCollector* This,VARIANT_BOOL Support) {
+    return This->lpVtbl->put_SupportHighContrastInk(This,Support);
+}
+static FORCEINLINE HRESULT IInkCollector_SetGestureStatus(IInkCollector* This,InkApplicationGesture Gesture,VARIANT_BOOL Listen) {
+    return This->lpVtbl->SetGestureStatus(This,Gesture,Listen);
+}
+static FORCEINLINE HRESULT IInkCollector_GetGestureStatus(IInkCollector* This,InkApplicationGesture Gesture,VARIANT_BOOL *Listening) {
+    return This->lpVtbl->GetGestureStatus(This,Gesture,Listening);
+}
+static FORCEINLINE HRESULT IInkCollector_GetWindowInputRectangle(IInkCollector* This,IInkRectangle **WindowInputRectangle) {
+    return This->lpVtbl->GetWindowInputRectangle(This,WindowInputRectangle);
+}
+static FORCEINLINE HRESULT IInkCollector_SetWindowInputRectangle(IInkCollector* This,IInkRectangle *WindowInputRectangle) {
+    return This->lpVtbl->SetWindowInputRectangle(This,WindowInputRectangle);
+}
+static FORCEINLINE HRESULT IInkCollector_SetAllTabletsMode(IInkCollector* This,VARIANT_BOOL UseMouseForInput) {
+    return This->lpVtbl->SetAllTabletsMode(This,UseMouseForInput);
+}
+static FORCEINLINE HRESULT IInkCollector_SetSingleTabletIntegratedMode(IInkCollector* This,IInkTablet *Tablet) {
+    return This->lpVtbl->SetSingleTabletIntegratedMode(This,Tablet);
+}
+static FORCEINLINE HRESULT IInkCollector_GetEventInterest(IInkCollector* This,InkCollectorEventInterest EventId,VARIANT_BOOL *Listen) {
+    return This->lpVtbl->GetEventInterest(This,EventId,Listen);
+}
+static FORCEINLINE HRESULT IInkCollector_SetEventInterest(IInkCollector* This,InkCollectorEventInterest EventId,VARIANT_BOOL Listen) {
+    return This->lpVtbl->SetEventInterest(This,EventId,Listen);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IInkCollector_get_hWnd_Proxy(
+    IInkCollector* This,
+    LONG_PTR *CurrentWindow);
+void __RPC_STUB IInkCollector_get_hWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_hWnd_Proxy(
+    IInkCollector* This,
+    LONG_PTR NewWindow);
+void __RPC_STUB IInkCollector_put_hWnd_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Enabled_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Collecting);
+void __RPC_STUB IInkCollector_get_Enabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_Enabled_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL Collecting);
+void __RPC_STUB IInkCollector_put_Enabled_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_DefaultDrawingAttributes_Proxy(
+    IInkCollector* This,
+    IInkDrawingAttributes **CurrentAttributes);
+void __RPC_STUB IInkCollector_get_DefaultDrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_DefaultDrawingAttributes_Proxy(
+    IInkCollector* This,
+    IInkDrawingAttributes *NewAttributes);
+void __RPC_STUB IInkCollector_putref_DefaultDrawingAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Renderer_Proxy(
+    IInkCollector* This,
+    IInkRenderer **CurrentInkRenderer);
+void __RPC_STUB IInkCollector_get_Renderer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_Renderer_Proxy(
+    IInkCollector* This,
+    IInkRenderer *NewInkRenderer);
+void __RPC_STUB IInkCollector_putref_Renderer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Ink_Proxy(
+    IInkCollector* This,
+    IInkDisp **Ink);
+void __RPC_STUB IInkCollector_get_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_Ink_Proxy(
+    IInkCollector* This,
+    IInkDisp *NewInk);
+void __RPC_STUB IInkCollector_putref_Ink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_AutoRedraw_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *AutoRedraw);
+void __RPC_STUB IInkCollector_get_AutoRedraw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_AutoRedraw_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL AutoRedraw);
+void __RPC_STUB IInkCollector_put_AutoRedraw_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_CollectingInk_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Collecting);
+void __RPC_STUB IInkCollector_get_CollectingInk_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_CollectionMode_Proxy(
+    IInkCollector* This,
+    InkCollectionMode *Mode);
+void __RPC_STUB IInkCollector_get_CollectionMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_CollectionMode_Proxy(
+    IInkCollector* This,
+    InkCollectionMode Mode);
+void __RPC_STUB IInkCollector_put_CollectionMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_DynamicRendering_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Enabled);
+void __RPC_STUB IInkCollector_get_DynamicRendering_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_DynamicRendering_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL Enabled);
+void __RPC_STUB IInkCollector_put_DynamicRendering_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_DesiredPacketDescription_Proxy(
+    IInkCollector* This,
+    VARIANT *PacketGuids);
+void __RPC_STUB IInkCollector_get_DesiredPacketDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_DesiredPacketDescription_Proxy(
+    IInkCollector* This,
+    VARIANT PacketGuids);
+void __RPC_STUB IInkCollector_put_DesiredPacketDescription_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MouseIcon_Proxy(
+    IInkCollector* This,
+    IPictureDisp **MouseIcon);
+void __RPC_STUB IInkCollector_get_MouseIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MouseIcon_Proxy(
+    IInkCollector* This,
+    IPictureDisp *MouseIcon);
+void __RPC_STUB IInkCollector_put_MouseIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_putref_MouseIcon_Proxy(
+    IInkCollector* This,
+    IPictureDisp *MouseIcon);
+void __RPC_STUB IInkCollector_putref_MouseIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MousePointer_Proxy(
+    IInkCollector* This,
+    InkMousePointer *MousePointer);
+void __RPC_STUB IInkCollector_get_MousePointer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MousePointer_Proxy(
+    IInkCollector* This,
+    InkMousePointer MousePointer);
+void __RPC_STUB IInkCollector_put_MousePointer_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Cursors_Proxy(
+    IInkCollector* This,
+    IInkCursors **Cursors);
+void __RPC_STUB IInkCollector_get_Cursors_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MarginX_Proxy(
+    IInkCollector* This,
+    LONG *MarginX);
+void __RPC_STUB IInkCollector_get_MarginX_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MarginX_Proxy(
+    IInkCollector* This,
+    LONG MarginX);
+void __RPC_STUB IInkCollector_put_MarginX_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_MarginY_Proxy(
+    IInkCollector* This,
+    LONG *MarginY);
+void __RPC_STUB IInkCollector_get_MarginY_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_MarginY_Proxy(
+    IInkCollector* This,
+    LONG MarginY);
+void __RPC_STUB IInkCollector_put_MarginY_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_Tablet_Proxy(
+    IInkCollector* This,
+    IInkTablet **SingleTablet);
+void __RPC_STUB IInkCollector_get_Tablet_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_get_SupportHighContrastInk_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL *Support);
+void __RPC_STUB IInkCollector_get_SupportHighContrastInk_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_put_SupportHighContrastInk_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL Support);
+void __RPC_STUB IInkCollector_put_SupportHighContrastInk_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetGestureStatus_Proxy(
+    IInkCollector* This,
+    InkApplicationGesture Gesture,
+    VARIANT_BOOL Listen);
+void __RPC_STUB IInkCollector_SetGestureStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_GetGestureStatus_Proxy(
+    IInkCollector* This,
+    InkApplicationGesture Gesture,
+    VARIANT_BOOL *Listening);
+void __RPC_STUB IInkCollector_GetGestureStatus_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_GetWindowInputRectangle_Proxy(
+    IInkCollector* This,
+    IInkRectangle **WindowInputRectangle);
+void __RPC_STUB IInkCollector_GetWindowInputRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetWindowInputRectangle_Proxy(
+    IInkCollector* This,
+    IInkRectangle *WindowInputRectangle);
+void __RPC_STUB IInkCollector_SetWindowInputRectangle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetAllTabletsMode_Proxy(
+    IInkCollector* This,
+    VARIANT_BOOL UseMouseForInput);
+void __RPC_STUB IInkCollector_SetAllTabletsMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetSingleTabletIntegratedMode_Proxy(
+    IInkCollector* This,
+    IInkTablet *Tablet);
+void __RPC_STUB IInkCollector_SetSingleTabletIntegratedMode_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_GetEventInterest_Proxy(
+    IInkCollector* This,
+    InkCollectorEventInterest EventId,
+    VARIANT_BOOL *Listen);
+void __RPC_STUB IInkCollector_GetEventInterest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IInkCollector_SetEventInterest_Proxy(
+    IInkCollector* This,
+    InkCollectorEventInterest EventId,
+    VARIANT_BOOL Listen);
+void __RPC_STUB IInkCollector_SetEventInterest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IInkCollector_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * _IInkCollectorEvents dispinterface
+ */
+#ifndef ___IInkCollectorEvents_DISPINTERFACE_DEFINED__
+#define ___IInkCollectorEvents_DISPINTERFACE_DEFINED__
+
+DEFINE_GUID(DIID__IInkCollectorEvents, 0x11a583f2, 0x712d, 0x4fea, 0xab,0xcf, 0xab,0x4a,0xf3,0x8e,0xa0,0x6b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("11a583f2-712d-4fea-abcf-ab4af38ea06b")
+_IInkCollectorEvents : public IDispatch
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(_IInkCollectorEvents, 0x11a583f2, 0x712d, 0x4fea, 0xab,0xcf, 0xab,0x4a,0xf3,0x8e,0xa0,0x6b)
+#endif
+#else
+typedef struct _IInkCollectorEventsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        _IInkCollectorEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        _IInkCollectorEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        _IInkCollectorEvents* This);
+
+    /*** IDispatch methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+        _IInkCollectorEvents* This,
+        UINT *pctinfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+        _IInkCollectorEvents* This,
+        UINT iTInfo,
+        LCID lcid,
+        ITypeInfo **ppTInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+        _IInkCollectorEvents* This,
+        REFIID riid,
+        LPOLESTR *rgszNames,
+        UINT cNames,
+        LCID lcid,
+        DISPID *rgDispId);
+
+    HRESULT (STDMETHODCALLTYPE *Invoke)(
+        _IInkCollectorEvents* This,
+        DISPID dispIdMember,
+        REFIID riid,
+        LCID lcid,
+        WORD wFlags,
+        DISPPARAMS *pDispParams,
+        VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo,
+        UINT *puArgErr);
+
+    END_INTERFACE
+} _IInkCollectorEventsVtbl;
+interface _IInkCollectorEvents {
+    CONST_VTBL _IInkCollectorEventsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define _IInkCollectorEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define _IInkCollectorEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define _IInkCollectorEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define _IInkCollectorEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define _IInkCollectorEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define _IInkCollectorEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define _IInkCollectorEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT _IInkCollectorEvents_QueryInterface(_IInkCollectorEvents* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG _IInkCollectorEvents_AddRef(_IInkCollectorEvents* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG _IInkCollectorEvents_Release(_IInkCollectorEvents* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT _IInkCollectorEvents_GetTypeInfoCount(_IInkCollectorEvents* This,UINT *pctinfo) {
+    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT _IInkCollectorEvents_GetTypeInfo(_IInkCollectorEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT _IInkCollectorEvents_GetIDsOfNames(_IInkCollectorEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT _IInkCollectorEvents_Invoke(_IInkCollectorEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+#endif
+#endif
+
+#endif
+
+#endif  /* ___IInkCollectorEvents_DISPINTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * InkCollector coclass
+ */
+
+DEFINE_GUID(CLSID_InkCollector, 0x43fb1553, 0xad74, 0x4ee8, 0x88,0xe4, 0x3e,0x6d,0xaa,0xc9,0x15,0xdb);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("43fb1553-ad74-4ee8-88e4-3e6daac915db") InkCollector;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(InkCollector, 0x43fb1553, 0xad74, 0x4ee8, 0x88,0xe4, 0x3e,0x6d,0xaa,0xc9,0x15,0xdb)
+#endif
+#endif
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
+ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __msinkaut_h__ */