/*** Autogenerated by WIDL 10.4 from include/uiautomationcore.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __uiautomationcore_h__
#define __uiautomationcore_h__

/* Forward declarations */

#ifndef __IRawElementProviderSimple_FWD_DEFINED__
#define __IRawElementProviderSimple_FWD_DEFINED__
typedef interface IRawElementProviderSimple IRawElementProviderSimple;
#ifdef __cplusplus
interface IRawElementProviderSimple;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderSimple2_FWD_DEFINED__
#define __IRawElementProviderSimple2_FWD_DEFINED__
typedef interface IRawElementProviderSimple2 IRawElementProviderSimple2;
#ifdef __cplusplus
interface IRawElementProviderSimple2;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderSimple3_FWD_DEFINED__
#define __IRawElementProviderSimple3_FWD_DEFINED__
typedef interface IRawElementProviderSimple3 IRawElementProviderSimple3;
#ifdef __cplusplus
interface IRawElementProviderSimple3;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleEx_FWD_DEFINED__
#define __IAccessibleEx_FWD_DEFINED__
typedef interface IAccessibleEx IAccessibleEx;
#ifdef __cplusplus
interface IAccessibleEx;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderFragment_FWD_DEFINED__
#define __IRawElementProviderFragment_FWD_DEFINED__
typedef interface IRawElementProviderFragment IRawElementProviderFragment;
#ifdef __cplusplus
interface IRawElementProviderFragment;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderFragmentRoot_FWD_DEFINED__
#define __IRawElementProviderFragmentRoot_FWD_DEFINED__
typedef interface IRawElementProviderFragmentRoot IRawElementProviderFragmentRoot;
#ifdef __cplusplus
interface IRawElementProviderFragmentRoot;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderHwndOverride_FWD_DEFINED__
#define __IRawElementProviderHwndOverride_FWD_DEFINED__
typedef interface IRawElementProviderHwndOverride IRawElementProviderHwndOverride;
#ifdef __cplusplus
interface IRawElementProviderHwndOverride;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderAdviseEvents_FWD_DEFINED__
#define __IRawElementProviderAdviseEvents_FWD_DEFINED__
typedef interface IRawElementProviderAdviseEvents IRawElementProviderAdviseEvents;
#ifdef __cplusplus
interface IRawElementProviderAdviseEvents;
#endif /* __cplusplus */
#endif

#ifndef __IProxyProviderWinEventSink_FWD_DEFINED__
#define __IProxyProviderWinEventSink_FWD_DEFINED__
typedef interface IProxyProviderWinEventSink IProxyProviderWinEventSink;
#ifdef __cplusplus
interface IProxyProviderWinEventSink;
#endif /* __cplusplus */
#endif

#ifndef __IProxyProviderWinEventHandler_FWD_DEFINED__
#define __IProxyProviderWinEventHandler_FWD_DEFINED__
typedef interface IProxyProviderWinEventHandler IProxyProviderWinEventHandler;
#ifdef __cplusplus
interface IProxyProviderWinEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderWindowlessSite_FWD_DEFINED__
#define __IRawElementProviderWindowlessSite_FWD_DEFINED__
typedef interface IRawElementProviderWindowlessSite IRawElementProviderWindowlessSite;
#ifdef __cplusplus
interface IRawElementProviderWindowlessSite;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleHostingElementProviders_FWD_DEFINED__
#define __IAccessibleHostingElementProviders_FWD_DEFINED__
typedef interface IAccessibleHostingElementProviders IAccessibleHostingElementProviders;
#ifdef __cplusplus
interface IAccessibleHostingElementProviders;
#endif /* __cplusplus */
#endif

#ifndef __IRawElementProviderHostingAccessibles_FWD_DEFINED__
#define __IRawElementProviderHostingAccessibles_FWD_DEFINED__
typedef interface IRawElementProviderHostingAccessibles IRawElementProviderHostingAccessibles;
#ifdef __cplusplus
interface IRawElementProviderHostingAccessibles;
#endif /* __cplusplus */
#endif

#ifndef __ILegacyIAccessibleProvider_FWD_DEFINED__
#define __ILegacyIAccessibleProvider_FWD_DEFINED__
typedef interface ILegacyIAccessibleProvider ILegacyIAccessibleProvider;
#ifdef __cplusplus
interface ILegacyIAccessibleProvider;
#endif /* __cplusplus */
#endif

#ifndef __IDockProvider_FWD_DEFINED__
#define __IDockProvider_FWD_DEFINED__
typedef interface IDockProvider IDockProvider;
#ifdef __cplusplus
interface IDockProvider;
#endif /* __cplusplus */
#endif

#ifndef __IExpandCollapseProvider_FWD_DEFINED__
#define __IExpandCollapseProvider_FWD_DEFINED__
typedef interface IExpandCollapseProvider IExpandCollapseProvider;
#ifdef __cplusplus
interface IExpandCollapseProvider;
#endif /* __cplusplus */
#endif

#ifndef __IGridProvider_FWD_DEFINED__
#define __IGridProvider_FWD_DEFINED__
typedef interface IGridProvider IGridProvider;
#ifdef __cplusplus
interface IGridProvider;
#endif /* __cplusplus */
#endif

#ifndef __IGridItemProvider_FWD_DEFINED__
#define __IGridItemProvider_FWD_DEFINED__
typedef interface IGridItemProvider IGridItemProvider;
#ifdef __cplusplus
interface IGridItemProvider;
#endif /* __cplusplus */
#endif

#ifndef __IInvokeProvider_FWD_DEFINED__
#define __IInvokeProvider_FWD_DEFINED__
typedef interface IInvokeProvider IInvokeProvider;
#ifdef __cplusplus
interface IInvokeProvider;
#endif /* __cplusplus */
#endif

#ifndef __IMultipleViewProvider_FWD_DEFINED__
#define __IMultipleViewProvider_FWD_DEFINED__
typedef interface IMultipleViewProvider IMultipleViewProvider;
#ifdef __cplusplus
interface IMultipleViewProvider;
#endif /* __cplusplus */
#endif

#ifndef __IRangeValueProvider_FWD_DEFINED__
#define __IRangeValueProvider_FWD_DEFINED__
typedef interface IRangeValueProvider IRangeValueProvider;
#ifdef __cplusplus
interface IRangeValueProvider;
#endif /* __cplusplus */
#endif

#ifndef __IScrollItemProvider_FWD_DEFINED__
#define __IScrollItemProvider_FWD_DEFINED__
typedef interface IScrollItemProvider IScrollItemProvider;
#ifdef __cplusplus
interface IScrollItemProvider;
#endif /* __cplusplus */
#endif

#ifndef __ISelectionProvider_FWD_DEFINED__
#define __ISelectionProvider_FWD_DEFINED__
typedef interface ISelectionProvider ISelectionProvider;
#ifdef __cplusplus
interface ISelectionProvider;
#endif /* __cplusplus */
#endif

#ifndef __ISelectionProvider2_FWD_DEFINED__
#define __ISelectionProvider2_FWD_DEFINED__
typedef interface ISelectionProvider2 ISelectionProvider2;
#ifdef __cplusplus
interface ISelectionProvider2;
#endif /* __cplusplus */
#endif

#ifndef __IScrollProvider_FWD_DEFINED__
#define __IScrollProvider_FWD_DEFINED__
typedef interface IScrollProvider IScrollProvider;
#ifdef __cplusplus
interface IScrollProvider;
#endif /* __cplusplus */
#endif

#ifndef __ISelectionItemProvider_FWD_DEFINED__
#define __ISelectionItemProvider_FWD_DEFINED__
typedef interface ISelectionItemProvider ISelectionItemProvider;
#ifdef __cplusplus
interface ISelectionItemProvider;
#endif /* __cplusplus */
#endif

#ifndef __ISynchronizedInputProvider_FWD_DEFINED__
#define __ISynchronizedInputProvider_FWD_DEFINED__
typedef interface ISynchronizedInputProvider ISynchronizedInputProvider;
#ifdef __cplusplus
interface ISynchronizedInputProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITableProvider_FWD_DEFINED__
#define __ITableProvider_FWD_DEFINED__
typedef interface ITableProvider ITableProvider;
#ifdef __cplusplus
interface ITableProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITableItemProvider_FWD_DEFINED__
#define __ITableItemProvider_FWD_DEFINED__
typedef interface ITableItemProvider ITableItemProvider;
#ifdef __cplusplus
interface ITableItemProvider;
#endif /* __cplusplus */
#endif

#ifndef __IToggleProvider_FWD_DEFINED__
#define __IToggleProvider_FWD_DEFINED__
typedef interface IToggleProvider IToggleProvider;
#ifdef __cplusplus
interface IToggleProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITransformProvider_FWD_DEFINED__
#define __ITransformProvider_FWD_DEFINED__
typedef interface ITransformProvider ITransformProvider;
#ifdef __cplusplus
interface ITransformProvider;
#endif /* __cplusplus */
#endif

#ifndef __IValueProvider_FWD_DEFINED__
#define __IValueProvider_FWD_DEFINED__
typedef interface IValueProvider IValueProvider;
#ifdef __cplusplus
interface IValueProvider;
#endif /* __cplusplus */
#endif

#ifndef __IWindowProvider_FWD_DEFINED__
#define __IWindowProvider_FWD_DEFINED__
typedef interface IWindowProvider IWindowProvider;
#ifdef __cplusplus
interface IWindowProvider;
#endif /* __cplusplus */
#endif

#ifndef __IItemContainerProvider_FWD_DEFINED__
#define __IItemContainerProvider_FWD_DEFINED__
typedef interface IItemContainerProvider IItemContainerProvider;
#ifdef __cplusplus
interface IItemContainerProvider;
#endif /* __cplusplus */
#endif

#ifndef __IVirtualizedItemProvider_FWD_DEFINED__
#define __IVirtualizedItemProvider_FWD_DEFINED__
typedef interface IVirtualizedItemProvider IVirtualizedItemProvider;
#ifdef __cplusplus
interface IVirtualizedItemProvider;
#endif /* __cplusplus */
#endif

#ifndef __IObjectModelProvider_FWD_DEFINED__
#define __IObjectModelProvider_FWD_DEFINED__
typedef interface IObjectModelProvider IObjectModelProvider;
#ifdef __cplusplus
interface IObjectModelProvider;
#endif /* __cplusplus */
#endif

#ifndef __IAnnotationProvider_FWD_DEFINED__
#define __IAnnotationProvider_FWD_DEFINED__
typedef interface IAnnotationProvider IAnnotationProvider;
#ifdef __cplusplus
interface IAnnotationProvider;
#endif /* __cplusplus */
#endif

#ifndef __IStylesProvider_FWD_DEFINED__
#define __IStylesProvider_FWD_DEFINED__
typedef interface IStylesProvider IStylesProvider;
#ifdef __cplusplus
interface IStylesProvider;
#endif /* __cplusplus */
#endif

#ifndef __ISpreadsheetProvider_FWD_DEFINED__
#define __ISpreadsheetProvider_FWD_DEFINED__
typedef interface ISpreadsheetProvider ISpreadsheetProvider;
#ifdef __cplusplus
interface ISpreadsheetProvider;
#endif /* __cplusplus */
#endif

#ifndef __ISpreadsheetItemProvider_FWD_DEFINED__
#define __ISpreadsheetItemProvider_FWD_DEFINED__
typedef interface ISpreadsheetItemProvider ISpreadsheetItemProvider;
#ifdef __cplusplus
interface ISpreadsheetItemProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITransformProvider2_FWD_DEFINED__
#define __ITransformProvider2_FWD_DEFINED__
typedef interface ITransformProvider2 ITransformProvider2;
#ifdef __cplusplus
interface ITransformProvider2;
#endif /* __cplusplus */
#endif

#ifndef __IDragProvider_FWD_DEFINED__
#define __IDragProvider_FWD_DEFINED__
typedef interface IDragProvider IDragProvider;
#ifdef __cplusplus
interface IDragProvider;
#endif /* __cplusplus */
#endif

#ifndef __IDropTargetProvider_FWD_DEFINED__
#define __IDropTargetProvider_FWD_DEFINED__
typedef interface IDropTargetProvider IDropTargetProvider;
#ifdef __cplusplus
interface IDropTargetProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITextProvider_FWD_DEFINED__
#define __ITextProvider_FWD_DEFINED__
typedef interface ITextProvider ITextProvider;
#ifdef __cplusplus
interface ITextProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITextProvider2_FWD_DEFINED__
#define __ITextProvider2_FWD_DEFINED__
typedef interface ITextProvider2 ITextProvider2;
#ifdef __cplusplus
interface ITextProvider2;
#endif /* __cplusplus */
#endif

#ifndef __ITextEditProvider_FWD_DEFINED__
#define __ITextEditProvider_FWD_DEFINED__
typedef interface ITextEditProvider ITextEditProvider;
#ifdef __cplusplus
interface ITextEditProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITextRangeProvider_FWD_DEFINED__
#define __ITextRangeProvider_FWD_DEFINED__
typedef interface ITextRangeProvider ITextRangeProvider;
#ifdef __cplusplus
interface ITextRangeProvider;
#endif /* __cplusplus */
#endif

#ifndef __ITextRangeProvider2_FWD_DEFINED__
#define __ITextRangeProvider2_FWD_DEFINED__
typedef interface ITextRangeProvider2 ITextRangeProvider2;
#ifdef __cplusplus
interface ITextRangeProvider2;
#endif /* __cplusplus */
#endif

#ifndef __ITextChildProvider_FWD_DEFINED__
#define __ITextChildProvider_FWD_DEFINED__
typedef interface ITextChildProvider ITextChildProvider;
#ifdef __cplusplus
interface ITextChildProvider;
#endif /* __cplusplus */
#endif

#ifndef __ICustomNavigationProvider_FWD_DEFINED__
#define __ICustomNavigationProvider_FWD_DEFINED__
typedef interface ICustomNavigationProvider ICustomNavigationProvider;
#ifdef __cplusplus
interface ICustomNavigationProvider;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationPatternInstance_FWD_DEFINED__
#define __IUIAutomationPatternInstance_FWD_DEFINED__
typedef interface IUIAutomationPatternInstance IUIAutomationPatternInstance;
#ifdef __cplusplus
interface IUIAutomationPatternInstance;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationPatternHandler_FWD_DEFINED__
#define __IUIAutomationPatternHandler_FWD_DEFINED__
typedef interface IUIAutomationPatternHandler IUIAutomationPatternHandler;
#ifdef __cplusplus
interface IUIAutomationPatternHandler;
#endif /* __cplusplus */
#endif

#ifndef __IUIAutomationRegistrar_FWD_DEFINED__
#define __IUIAutomationRegistrar_FWD_DEFINED__
typedef interface IUIAutomationRegistrar IUIAutomationRegistrar;
#ifdef __cplusplus
interface IUIAutomationRegistrar;
#endif /* __cplusplus */
#endif

#ifndef __CUIAutomationRegistrar_FWD_DEFINED__
#define __CUIAutomationRegistrar_FWD_DEFINED__
#ifdef __cplusplus
typedef class CUIAutomationRegistrar CUIAutomationRegistrar;
#else
typedef struct CUIAutomationRegistrar CUIAutomationRegistrar;
#endif /* defined __cplusplus */
#endif /* defined __CUIAutomationRegistrar_FWD_DEFINED__ */

/* Headers for imported files */

#include <oaidl.h>
#include <oleacc.h>

#ifdef __cplusplus
extern "C" {
#endif

enum NavigateDirection {
    NavigateDirection_Parent = 0x0,
    NavigateDirection_NextSibling = 0x1,
    NavigateDirection_PreviousSibling = 0x2,
    NavigateDirection_FirstChild = 0x3,
    NavigateDirection_LastChild = 0x4
};
enum ProviderOptions {
    ProviderOptions_ClientSideProvider = 0x1,
    ProviderOptions_ServerSideProvider = 0x2,
    ProviderOptions_NonClientAreaProvider = 0x4,
    ProviderOptions_OverrideProvider = 0x8,
    ProviderOptions_ProviderOwnsSetFocus = 0x10,
    ProviderOptions_UseComThreading = 0x20,
    ProviderOptions_RefuseNonClientSupport = 0x40,
    ProviderOptions_HasNativeIAccessible = 0x80,
    ProviderOptions_UseClientCoordinates = 0x100
};
enum StructureChangeType {
    StructureChangeType_ChildAdded = 0x0,
    StructureChangeType_ChildRemoved = 0x1,
    StructureChangeType_ChildrenInvalidated = 0x2,
    StructureChangeType_ChildrenBulkAdded = 0x3,
    StructureChangeType_ChildrenBulkRemoved = 0x4,
    StructureChangeType_ChildrenReordered = 0x5
};
enum TextEditChangeType {
    TextEditChangeType_None = 0x0,
    TextEditChangeType_AutoCorrect = 0x1,
    TextEditChangeType_Composition = 0x2,
    TextEditChangeType_CompositionFinalized = 0x3,
    TextEditChangeType_AutoComplete = 0x4
};
enum OrientationType {
    OrientationType_None = 0x0,
    OrientationType_Horizontal = 0x1,
    OrientationType_Vertical = 0x2
};
enum DockPosition {
    DockPosition_Top = 0x0,
    DockPosition_Left = 0x1,
    DockPosition_Bottom = 0x2,
    DockPosition_Right = 0x3,
    DockPosition_Fill = 0x4,
    DockPosition_None = 0x5
};
enum ExpandCollapseState {
    ExpandCollapseState_Collapsed = 0x0,
    ExpandCollapseState_Expanded = 0x1,
    ExpandCollapseState_PartiallyExpanded = 0x2,
    ExpandCollapseState_LeafNode = 0x3
};
enum ScrollAmount {
    ScrollAmount_LargeDecrement = 0x0,
    ScrollAmount_SmallDecrement = 0x1,
    ScrollAmount_NoAmount = 0x2,
    ScrollAmount_LargeIncrement = 0x3,
    ScrollAmount_SmallIncrement = 0x4
};
enum RowOrColumnMajor {
    RowOrColumnMajor_RowMajor = 0x0,
    RowOrColumnMajor_ColumnMajor = 0x1,
    RowOrColumnMajor_Indeterminate = 0x2
};
enum ToggleState {
    ToggleState_Off = 0x0,
    ToggleState_On = 0x1,
    ToggleState_Indeterminate = 0x2
};
enum WindowVisualState {
    WindowVisualState_Normal = 0x0,
    WindowVisualState_Maximized = 0x1,
    WindowVisualState_Minimized = 0x2
};
enum SynchronizedInputType {
    SynchronizedInputType_KeyUp = 0x1,
    SynchronizedInputType_KeyDown = 0x2,
    SynchronizedInputType_LeftMouseUp = 0x4,
    SynchronizedInputType_LeftMouseDown = 0x8,
    SynchronizedInputType_RightMouseUp = 0x10,
    SynchronizedInputType_RightMouseDown = 0x20
};
DEFINE_ENUM_FLAG_OPERATORS(SynchronizedInputType)
enum WindowInteractionState {
    WindowInteractionState_Running = 0x0,
    WindowInteractionState_Closing = 0x1,
    WindowInteractionState_ReadyForUserInteraction = 0x2,
    WindowInteractionState_BlockedByModalWindow = 0x3,
    WindowInteractionState_NotResponding = 0x4
};
enum TextUnit {
    TextUnit_Character = 0x0,
    TextUnit_Format = 0x1,
    TextUnit_Word = 0x2,
    TextUnit_Line = 0x3,
    TextUnit_Paragraph = 0x4,
    TextUnit_Page = 0x5,
    TextUnit_Document = 0x6
};
enum TextPatternRangeEndpoint {
    TextPatternRangeEndpoint_Start = 0x0,
    TextPatternRangeEndpoint_End = 0x1
};
enum SupportedTextSelection {
    SupportedTextSelection_None = 0x0,
    SupportedTextSelection_Single = 0x1,
    SupportedTextSelection_Multiple = 0x2
};
enum LiveSetting {
    Off = 0x0,
    Polite = 0x1,
    Assertive = 0x2
};
enum ZoomUnit {
    ZoomUnit_NoAmount = 0x0,
    ZoomUnit_LargeDecrement = 0x1,
    ZoomUnit_SmallDecrement = 0x2,
    ZoomUnit_LargeIncrement = 0x3,
    ZoomUnit_SmallIncrement = 0x4
};
enum NotificationProcessing {
    NotificationProcessing_ImportantAll = 0x0,
    NotificationProcessing_ImportantMostRecent = 0x1,
    NotificationProcessing_All = 0x2,
    NotificationProcessing_MostRecent = 0x3,
    NotificationProcessing_CurrentThenMostRecent = 0x4
};
enum NotificationKind {
    NotificationKind_ItemAdded = 0x0,
    NotificationKind_ItemRemoved = 0x1,
    NotificationKind_ActionCompleted = 0x2,
    NotificationKind_ActionAborted = 0x3,
    NotificationKind_Other = 0x4
};
typedef int PROPERTYID;
typedef int PATTERNID;
typedef int EVENTID;
typedef int TEXTATTRIBUTEID;
typedef int CONTROLTYPEID;
typedef int LANDMARKTYPEID;
typedef int METADATAID;
typedef int HEADINGLEVELID;
struct UiaRect {
    double left;
    double top;
    double width;
    double height;
};
struct UiaPoint {
    double x;
    double y;
};
struct UiaChangeInfo {
    int uiaId;
    VARIANT payload;
    VARIANT extraInfo;
};
#ifndef __UIA_LIBRARY_DEFINED__
#define __UIA_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_UIA, 0x930299ce, 0x9965, 0x4dec, 0xb0,0xf4, 0xa5,0x48,0x48,0xd4,0xb6,0x67);

/*****************************************************************************
 * IRawElementProviderSimple interface
 */
#ifndef __IRawElementProviderSimple_INTERFACE_DEFINED__
#define __IRawElementProviderSimple_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderSimple, 0xd6dd68d1, 0x86fd, 0x4332, 0x86,0x66, 0x9a,0xbe,0xde,0xa2,0xd2,0x4c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d6dd68d1-86fd-4332-8666-9abedea2d24c")
IRawElementProviderSimple : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_ProviderOptions(
        enum ProviderOptions *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPatternProvider(
        PATTERNID patternId,
        IUnknown **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
        PROPERTYID propertyId,
        VARIANT *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HostRawElementProvider(
        IRawElementProviderSimple **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderSimple, 0xd6dd68d1, 0x86fd, 0x4332, 0x86,0x66, 0x9a,0xbe,0xde,0xa2,0xd2,0x4c)
#endif
#else
typedef struct IRawElementProviderSimpleVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderSimple *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderSimple *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderSimple *This);

    /*** IRawElementProviderSimple methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ProviderOptions)(
        IRawElementProviderSimple *This,
        enum ProviderOptions *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetPatternProvider)(
        IRawElementProviderSimple *This,
        PATTERNID patternId,
        IUnknown **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetPropertyValue)(
        IRawElementProviderSimple *This,
        PROPERTYID propertyId,
        VARIANT *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_HostRawElementProvider)(
        IRawElementProviderSimple *This,
        IRawElementProviderSimple **pRetVal);

    END_INTERFACE
} IRawElementProviderSimpleVtbl;

interface IRawElementProviderSimple {
    CONST_VTBL IRawElementProviderSimpleVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderSimple_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderSimple_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderSimple_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderSimple methods ***/
#define IRawElementProviderSimple_get_ProviderOptions(This,pRetVal) (This)->lpVtbl->get_ProviderOptions(This,pRetVal)
#define IRawElementProviderSimple_GetPatternProvider(This,patternId,pRetVal) (This)->lpVtbl->GetPatternProvider(This,patternId,pRetVal)
#define IRawElementProviderSimple_GetPropertyValue(This,propertyId,pRetVal) (This)->lpVtbl->GetPropertyValue(This,propertyId,pRetVal)
#define IRawElementProviderSimple_get_HostRawElementProvider(This,pRetVal) (This)->lpVtbl->get_HostRawElementProvider(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderSimple_QueryInterface(IRawElementProviderSimple* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderSimple_AddRef(IRawElementProviderSimple* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderSimple_Release(IRawElementProviderSimple* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderSimple methods ***/
static inline HRESULT IRawElementProviderSimple_get_ProviderOptions(IRawElementProviderSimple* This,enum ProviderOptions *pRetVal) {
    return This->lpVtbl->get_ProviderOptions(This,pRetVal);
}
static inline HRESULT IRawElementProviderSimple_GetPatternProvider(IRawElementProviderSimple* This,PATTERNID patternId,IUnknown **pRetVal) {
    return This->lpVtbl->GetPatternProvider(This,patternId,pRetVal);
}
static inline HRESULT IRawElementProviderSimple_GetPropertyValue(IRawElementProviderSimple* This,PROPERTYID propertyId,VARIANT *pRetVal) {
    return This->lpVtbl->GetPropertyValue(This,propertyId,pRetVal);
}
static inline HRESULT IRawElementProviderSimple_get_HostRawElementProvider(IRawElementProviderSimple* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->get_HostRawElementProvider(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderSimple_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRawElementProviderSimple2 interface
 */
#ifndef __IRawElementProviderSimple2_INTERFACE_DEFINED__
#define __IRawElementProviderSimple2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderSimple2, 0xa0a839a9, 0x8da1, 0x4a82, 0x80,0x6a, 0x8e,0x0d,0x44,0xe7,0x9f,0x56);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a0a839a9-8da1-4a82-806a-8e0d44e79f56")
IRawElementProviderSimple2 : public IRawElementProviderSimple
{
    virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderSimple2, 0xa0a839a9, 0x8da1, 0x4a82, 0x80,0x6a, 0x8e,0x0d,0x44,0xe7,0x9f,0x56)
#endif
#else
typedef struct IRawElementProviderSimple2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderSimple2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderSimple2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderSimple2 *This);

    /*** IRawElementProviderSimple methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ProviderOptions)(
        IRawElementProviderSimple2 *This,
        enum ProviderOptions *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetPatternProvider)(
        IRawElementProviderSimple2 *This,
        PATTERNID patternId,
        IUnknown **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetPropertyValue)(
        IRawElementProviderSimple2 *This,
        PROPERTYID propertyId,
        VARIANT *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_HostRawElementProvider)(
        IRawElementProviderSimple2 *This,
        IRawElementProviderSimple **pRetVal);

    /*** IRawElementProviderSimple2 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IRawElementProviderSimple2 *This);

    END_INTERFACE
} IRawElementProviderSimple2Vtbl;

interface IRawElementProviderSimple2 {
    CONST_VTBL IRawElementProviderSimple2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderSimple2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderSimple2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderSimple2_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderSimple methods ***/
#define IRawElementProviderSimple2_get_ProviderOptions(This,pRetVal) (This)->lpVtbl->get_ProviderOptions(This,pRetVal)
#define IRawElementProviderSimple2_GetPatternProvider(This,patternId,pRetVal) (This)->lpVtbl->GetPatternProvider(This,patternId,pRetVal)
#define IRawElementProviderSimple2_GetPropertyValue(This,propertyId,pRetVal) (This)->lpVtbl->GetPropertyValue(This,propertyId,pRetVal)
#define IRawElementProviderSimple2_get_HostRawElementProvider(This,pRetVal) (This)->lpVtbl->get_HostRawElementProvider(This,pRetVal)
/*** IRawElementProviderSimple2 methods ***/
#define IRawElementProviderSimple2_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderSimple2_QueryInterface(IRawElementProviderSimple2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderSimple2_AddRef(IRawElementProviderSimple2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderSimple2_Release(IRawElementProviderSimple2* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderSimple methods ***/
static inline HRESULT IRawElementProviderSimple2_get_ProviderOptions(IRawElementProviderSimple2* This,enum ProviderOptions *pRetVal) {
    return This->lpVtbl->get_ProviderOptions(This,pRetVal);
}
static inline HRESULT IRawElementProviderSimple2_GetPatternProvider(IRawElementProviderSimple2* This,PATTERNID patternId,IUnknown **pRetVal) {
    return This->lpVtbl->GetPatternProvider(This,patternId,pRetVal);
}
static inline HRESULT IRawElementProviderSimple2_GetPropertyValue(IRawElementProviderSimple2* This,PROPERTYID propertyId,VARIANT *pRetVal) {
    return This->lpVtbl->GetPropertyValue(This,propertyId,pRetVal);
}
static inline HRESULT IRawElementProviderSimple2_get_HostRawElementProvider(IRawElementProviderSimple2* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->get_HostRawElementProvider(This,pRetVal);
}
/*** IRawElementProviderSimple2 methods ***/
static inline HRESULT IRawElementProviderSimple2_ShowContextMenu(IRawElementProviderSimple2* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderSimple2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRawElementProviderSimple3 interface
 */
#ifndef __IRawElementProviderSimple3_INTERFACE_DEFINED__
#define __IRawElementProviderSimple3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderSimple3, 0xfcf5d820, 0xd7ec, 0x4613, 0xbd,0xf6, 0x42,0xa8,0x4c,0xe7,0xda,0xaf);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fcf5d820-d7ec-4613-bdf6-42a84ce7daaf")
IRawElementProviderSimple3 : public IRawElementProviderSimple2
{
    virtual HRESULT STDMETHODCALLTYPE GetMetadataValue(
        int targetId,
        METADATAID metadataId,
        VARIANT *returnVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderSimple3, 0xfcf5d820, 0xd7ec, 0x4613, 0xbd,0xf6, 0x42,0xa8,0x4c,0xe7,0xda,0xaf)
#endif
#else
typedef struct IRawElementProviderSimple3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderSimple3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderSimple3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderSimple3 *This);

    /*** IRawElementProviderSimple methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ProviderOptions)(
        IRawElementProviderSimple3 *This,
        enum ProviderOptions *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetPatternProvider)(
        IRawElementProviderSimple3 *This,
        PATTERNID patternId,
        IUnknown **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetPropertyValue)(
        IRawElementProviderSimple3 *This,
        PROPERTYID propertyId,
        VARIANT *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_HostRawElementProvider)(
        IRawElementProviderSimple3 *This,
        IRawElementProviderSimple **pRetVal);

    /*** IRawElementProviderSimple2 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        IRawElementProviderSimple3 *This);

    /*** IRawElementProviderSimple3 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetMetadataValue)(
        IRawElementProviderSimple3 *This,
        int targetId,
        METADATAID metadataId,
        VARIANT *returnVal);

    END_INTERFACE
} IRawElementProviderSimple3Vtbl;

interface IRawElementProviderSimple3 {
    CONST_VTBL IRawElementProviderSimple3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderSimple3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderSimple3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderSimple3_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderSimple methods ***/
#define IRawElementProviderSimple3_get_ProviderOptions(This,pRetVal) (This)->lpVtbl->get_ProviderOptions(This,pRetVal)
#define IRawElementProviderSimple3_GetPatternProvider(This,patternId,pRetVal) (This)->lpVtbl->GetPatternProvider(This,patternId,pRetVal)
#define IRawElementProviderSimple3_GetPropertyValue(This,propertyId,pRetVal) (This)->lpVtbl->GetPropertyValue(This,propertyId,pRetVal)
#define IRawElementProviderSimple3_get_HostRawElementProvider(This,pRetVal) (This)->lpVtbl->get_HostRawElementProvider(This,pRetVal)
/*** IRawElementProviderSimple2 methods ***/
#define IRawElementProviderSimple3_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
/*** IRawElementProviderSimple3 methods ***/
#define IRawElementProviderSimple3_GetMetadataValue(This,targetId,metadataId,returnVal) (This)->lpVtbl->GetMetadataValue(This,targetId,metadataId,returnVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderSimple3_QueryInterface(IRawElementProviderSimple3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderSimple3_AddRef(IRawElementProviderSimple3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderSimple3_Release(IRawElementProviderSimple3* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderSimple methods ***/
static inline HRESULT IRawElementProviderSimple3_get_ProviderOptions(IRawElementProviderSimple3* This,enum ProviderOptions *pRetVal) {
    return This->lpVtbl->get_ProviderOptions(This,pRetVal);
}
static inline HRESULT IRawElementProviderSimple3_GetPatternProvider(IRawElementProviderSimple3* This,PATTERNID patternId,IUnknown **pRetVal) {
    return This->lpVtbl->GetPatternProvider(This,patternId,pRetVal);
}
static inline HRESULT IRawElementProviderSimple3_GetPropertyValue(IRawElementProviderSimple3* This,PROPERTYID propertyId,VARIANT *pRetVal) {
    return This->lpVtbl->GetPropertyValue(This,propertyId,pRetVal);
}
static inline HRESULT IRawElementProviderSimple3_get_HostRawElementProvider(IRawElementProviderSimple3* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->get_HostRawElementProvider(This,pRetVal);
}
/*** IRawElementProviderSimple2 methods ***/
static inline HRESULT IRawElementProviderSimple3_ShowContextMenu(IRawElementProviderSimple3* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
/*** IRawElementProviderSimple3 methods ***/
static inline HRESULT IRawElementProviderSimple3_GetMetadataValue(IRawElementProviderSimple3* This,int targetId,METADATAID metadataId,VARIANT *returnVal) {
    return This->lpVtbl->GetMetadataValue(This,targetId,metadataId,returnVal);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderSimple3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleEx interface
 */
#ifndef __IAccessibleEx_INTERFACE_DEFINED__
#define __IAccessibleEx_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleEx, 0xf8b80ada, 0x2c44, 0x48d0, 0x89,0xbe, 0x5f,0xf2,0x3c,0x9c,0xd8,0x75);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f8b80ada-2c44-48d0-89be-5ff23c9cd875")
IAccessibleEx : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetObjectForChild(
        LONG idChild,
        IAccessibleEx **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIAccessiblePair(
        IAccessible **ppAcc,
        LONG *pidChild) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRuntimeId(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConvertReturnedElement(
        IRawElementProviderSimple *pIn,
        IAccessibleEx **ppRetValOut) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleEx, 0xf8b80ada, 0x2c44, 0x48d0, 0x89,0xbe, 0x5f,0xf2,0x3c,0x9c,0xd8,0x75)
#endif
#else
typedef struct IAccessibleExVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAccessibleEx *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAccessibleEx *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAccessibleEx *This);

    /*** IAccessibleEx methods ***/
    HRESULT (STDMETHODCALLTYPE *GetObjectForChild)(
        IAccessibleEx *This,
        LONG idChild,
        IAccessibleEx **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetIAccessiblePair)(
        IAccessibleEx *This,
        IAccessible **ppAcc,
        LONG *pidChild);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IAccessibleEx *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *ConvertReturnedElement)(
        IAccessibleEx *This,
        IRawElementProviderSimple *pIn,
        IAccessibleEx **ppRetValOut);

    END_INTERFACE
} IAccessibleExVtbl;

interface IAccessibleEx {
    CONST_VTBL IAccessibleExVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleEx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleEx_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleEx methods ***/
#define IAccessibleEx_GetObjectForChild(This,idChild,pRetVal) (This)->lpVtbl->GetObjectForChild(This,idChild,pRetVal)
#define IAccessibleEx_GetIAccessiblePair(This,ppAcc,pidChild) (This)->lpVtbl->GetIAccessiblePair(This,ppAcc,pidChild)
#define IAccessibleEx_GetRuntimeId(This,pRetVal) (This)->lpVtbl->GetRuntimeId(This,pRetVal)
#define IAccessibleEx_ConvertReturnedElement(This,pIn,ppRetValOut) (This)->lpVtbl->ConvertReturnedElement(This,pIn,ppRetValOut)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleEx_QueryInterface(IAccessibleEx* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleEx_AddRef(IAccessibleEx* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleEx_Release(IAccessibleEx* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleEx methods ***/
static inline HRESULT IAccessibleEx_GetObjectForChild(IAccessibleEx* This,LONG idChild,IAccessibleEx **pRetVal) {
    return This->lpVtbl->GetObjectForChild(This,idChild,pRetVal);
}
static inline HRESULT IAccessibleEx_GetIAccessiblePair(IAccessibleEx* This,IAccessible **ppAcc,LONG *pidChild) {
    return This->lpVtbl->GetIAccessiblePair(This,ppAcc,pidChild);
}
static inline HRESULT IAccessibleEx_GetRuntimeId(IAccessibleEx* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetRuntimeId(This,pRetVal);
}
static inline HRESULT IAccessibleEx_ConvertReturnedElement(IAccessibleEx* This,IRawElementProviderSimple *pIn,IAccessibleEx **ppRetValOut) {
    return This->lpVtbl->ConvertReturnedElement(This,pIn,ppRetValOut);
}
#endif
#endif

#endif


#endif  /* __IAccessibleEx_INTERFACE_DEFINED__ */

#ifndef __IRawElementProviderFragmentRoot_FWD_DEFINED__
#define __IRawElementProviderFragmentRoot_FWD_DEFINED__
typedef interface IRawElementProviderFragmentRoot IRawElementProviderFragmentRoot;
#ifdef __cplusplus
interface IRawElementProviderFragmentRoot;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IRawElementProviderFragment interface
 */
#ifndef __IRawElementProviderFragment_INTERFACE_DEFINED__
#define __IRawElementProviderFragment_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderFragment, 0xf7063da8, 0x8359, 0x439c, 0x92,0x97, 0xbb,0xc5,0x29,0x9a,0x7d,0x87);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f7063da8-8359-439c-9297-bbc5299a7d87")
IRawElementProviderFragment : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Navigate(
        enum NavigateDirection direction,
        IRawElementProviderFragment **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRuntimeId(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BoundingRectangle(
        struct UiaRect *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEmbeddedFragmentRoots(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFocus(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FragmentRoot(
        IRawElementProviderFragmentRoot **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderFragment, 0xf7063da8, 0x8359, 0x439c, 0x92,0x97, 0xbb,0xc5,0x29,0x9a,0x7d,0x87)
#endif
#else
typedef struct IRawElementProviderFragmentVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderFragment *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderFragment *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderFragment *This);

    /*** IRawElementProviderFragment methods ***/
    HRESULT (STDMETHODCALLTYPE *Navigate)(
        IRawElementProviderFragment *This,
        enum NavigateDirection direction,
        IRawElementProviderFragment **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
        IRawElementProviderFragment *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_BoundingRectangle)(
        IRawElementProviderFragment *This,
        struct UiaRect *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetEmbeddedFragmentRoots)(
        IRawElementProviderFragment *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IRawElementProviderFragment *This);

    HRESULT (STDMETHODCALLTYPE *get_FragmentRoot)(
        IRawElementProviderFragment *This,
        IRawElementProviderFragmentRoot **pRetVal);

    END_INTERFACE
} IRawElementProviderFragmentVtbl;

interface IRawElementProviderFragment {
    CONST_VTBL IRawElementProviderFragmentVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderFragment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderFragment_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderFragment_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderFragment methods ***/
#define IRawElementProviderFragment_Navigate(This,direction,pRetVal) (This)->lpVtbl->Navigate(This,direction,pRetVal)
#define IRawElementProviderFragment_GetRuntimeId(This,pRetVal) (This)->lpVtbl->GetRuntimeId(This,pRetVal)
#define IRawElementProviderFragment_get_BoundingRectangle(This,pRetVal) (This)->lpVtbl->get_BoundingRectangle(This,pRetVal)
#define IRawElementProviderFragment_GetEmbeddedFragmentRoots(This,pRetVal) (This)->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal)
#define IRawElementProviderFragment_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IRawElementProviderFragment_get_FragmentRoot(This,pRetVal) (This)->lpVtbl->get_FragmentRoot(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderFragment_QueryInterface(IRawElementProviderFragment* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderFragment_AddRef(IRawElementProviderFragment* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderFragment_Release(IRawElementProviderFragment* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderFragment methods ***/
static inline HRESULT IRawElementProviderFragment_Navigate(IRawElementProviderFragment* This,enum NavigateDirection direction,IRawElementProviderFragment **pRetVal) {
    return This->lpVtbl->Navigate(This,direction,pRetVal);
}
static inline HRESULT IRawElementProviderFragment_GetRuntimeId(IRawElementProviderFragment* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetRuntimeId(This,pRetVal);
}
static inline HRESULT IRawElementProviderFragment_get_BoundingRectangle(IRawElementProviderFragment* This,struct UiaRect *pRetVal) {
    return This->lpVtbl->get_BoundingRectangle(This,pRetVal);
}
static inline HRESULT IRawElementProviderFragment_GetEmbeddedFragmentRoots(IRawElementProviderFragment* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal);
}
static inline HRESULT IRawElementProviderFragment_SetFocus(IRawElementProviderFragment* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IRawElementProviderFragment_get_FragmentRoot(IRawElementProviderFragment* This,IRawElementProviderFragmentRoot **pRetVal) {
    return This->lpVtbl->get_FragmentRoot(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderFragment_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRawElementProviderFragmentRoot interface
 */
#ifndef __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__
#define __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderFragmentRoot, 0x620ce2a5, 0xab8f, 0x40a9, 0x86,0xcb, 0xde,0x3c,0x75,0x59,0x9b,0x58);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("620ce2a5-ab8f-40a9-86cb-de3c75599b58")
IRawElementProviderFragmentRoot : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ElementProviderFromPoint(
        double x,
        double y,
        IRawElementProviderFragment **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFocus(
        IRawElementProviderFragment **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderFragmentRoot, 0x620ce2a5, 0xab8f, 0x40a9, 0x86,0xcb, 0xde,0x3c,0x75,0x59,0x9b,0x58)
#endif
#else
typedef struct IRawElementProviderFragmentRootVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderFragmentRoot *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderFragmentRoot *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderFragmentRoot *This);

    /*** IRawElementProviderFragmentRoot methods ***/
    HRESULT (STDMETHODCALLTYPE *ElementProviderFromPoint)(
        IRawElementProviderFragmentRoot *This,
        double x,
        double y,
        IRawElementProviderFragment **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetFocus)(
        IRawElementProviderFragmentRoot *This,
        IRawElementProviderFragment **pRetVal);

    END_INTERFACE
} IRawElementProviderFragmentRootVtbl;

interface IRawElementProviderFragmentRoot {
    CONST_VTBL IRawElementProviderFragmentRootVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderFragmentRoot_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderFragmentRoot_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderFragmentRoot_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderFragmentRoot methods ***/
#define IRawElementProviderFragmentRoot_ElementProviderFromPoint(This,x,y,pRetVal) (This)->lpVtbl->ElementProviderFromPoint(This,x,y,pRetVal)
#define IRawElementProviderFragmentRoot_GetFocus(This,pRetVal) (This)->lpVtbl->GetFocus(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderFragmentRoot_QueryInterface(IRawElementProviderFragmentRoot* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderFragmentRoot_AddRef(IRawElementProviderFragmentRoot* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderFragmentRoot_Release(IRawElementProviderFragmentRoot* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderFragmentRoot methods ***/
static inline HRESULT IRawElementProviderFragmentRoot_ElementProviderFromPoint(IRawElementProviderFragmentRoot* This,double x,double y,IRawElementProviderFragment **pRetVal) {
    return This->lpVtbl->ElementProviderFromPoint(This,x,y,pRetVal);
}
static inline HRESULT IRawElementProviderFragmentRoot_GetFocus(IRawElementProviderFragmentRoot* This,IRawElementProviderFragment **pRetVal) {
    return This->lpVtbl->GetFocus(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRawElementProviderHwndOverride interface
 */
#ifndef __IRawElementProviderHwndOverride_INTERFACE_DEFINED__
#define __IRawElementProviderHwndOverride_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderHwndOverride, 0x1d5df27c, 0x8947, 0x4425, 0xb8,0xd9, 0x79,0x78,0x7b,0xb4,0x60,0xb8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1d5df27c-8947-4425-b8d9-79787bb460b8")
IRawElementProviderHwndOverride : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetOverrideProviderForHwnd(
        HWND hwnd,
        IRawElementProviderSimple **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderHwndOverride, 0x1d5df27c, 0x8947, 0x4425, 0xb8,0xd9, 0x79,0x78,0x7b,0xb4,0x60,0xb8)
#endif
#else
typedef struct IRawElementProviderHwndOverrideVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderHwndOverride *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderHwndOverride *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderHwndOverride *This);

    /*** IRawElementProviderHwndOverride methods ***/
    HRESULT (STDMETHODCALLTYPE *GetOverrideProviderForHwnd)(
        IRawElementProviderHwndOverride *This,
        HWND hwnd,
        IRawElementProviderSimple **pRetVal);

    END_INTERFACE
} IRawElementProviderHwndOverrideVtbl;

interface IRawElementProviderHwndOverride {
    CONST_VTBL IRawElementProviderHwndOverrideVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderHwndOverride_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderHwndOverride_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderHwndOverride_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderHwndOverride methods ***/
#define IRawElementProviderHwndOverride_GetOverrideProviderForHwnd(This,hwnd,pRetVal) (This)->lpVtbl->GetOverrideProviderForHwnd(This,hwnd,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderHwndOverride_QueryInterface(IRawElementProviderHwndOverride* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderHwndOverride_AddRef(IRawElementProviderHwndOverride* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderHwndOverride_Release(IRawElementProviderHwndOverride* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderHwndOverride methods ***/
static inline HRESULT IRawElementProviderHwndOverride_GetOverrideProviderForHwnd(IRawElementProviderHwndOverride* This,HWND hwnd,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->GetOverrideProviderForHwnd(This,hwnd,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderHwndOverride_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRawElementProviderAdviseEvents interface
 */
#ifndef __IRawElementProviderAdviseEvents_INTERFACE_DEFINED__
#define __IRawElementProviderAdviseEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderAdviseEvents, 0xa407b27b, 0x0f6d, 0x4427, 0x92,0x92, 0x47,0x3c,0x7b,0xf9,0x32,0x58);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a407b27b-0f6d-4427-9292-473c7bf93258")
IRawElementProviderAdviseEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AdviseEventAdded(
        EVENTID eventId,
        SAFEARRAY *propertyIDs) = 0;

    virtual HRESULT STDMETHODCALLTYPE AdviseEventRemoved(
        EVENTID eventId,
        SAFEARRAY *propertyIDs) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderAdviseEvents, 0xa407b27b, 0x0f6d, 0x4427, 0x92,0x92, 0x47,0x3c,0x7b,0xf9,0x32,0x58)
#endif
#else
typedef struct IRawElementProviderAdviseEventsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderAdviseEvents *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderAdviseEvents *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderAdviseEvents *This);

    /*** IRawElementProviderAdviseEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *AdviseEventAdded)(
        IRawElementProviderAdviseEvents *This,
        EVENTID eventId,
        SAFEARRAY *propertyIDs);

    HRESULT (STDMETHODCALLTYPE *AdviseEventRemoved)(
        IRawElementProviderAdviseEvents *This,
        EVENTID eventId,
        SAFEARRAY *propertyIDs);

    END_INTERFACE
} IRawElementProviderAdviseEventsVtbl;

interface IRawElementProviderAdviseEvents {
    CONST_VTBL IRawElementProviderAdviseEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderAdviseEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderAdviseEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderAdviseEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderAdviseEvents methods ***/
#define IRawElementProviderAdviseEvents_AdviseEventAdded(This,eventId,propertyIDs) (This)->lpVtbl->AdviseEventAdded(This,eventId,propertyIDs)
#define IRawElementProviderAdviseEvents_AdviseEventRemoved(This,eventId,propertyIDs) (This)->lpVtbl->AdviseEventRemoved(This,eventId,propertyIDs)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderAdviseEvents_QueryInterface(IRawElementProviderAdviseEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderAdviseEvents_AddRef(IRawElementProviderAdviseEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderAdviseEvents_Release(IRawElementProviderAdviseEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderAdviseEvents methods ***/
static inline HRESULT IRawElementProviderAdviseEvents_AdviseEventAdded(IRawElementProviderAdviseEvents* This,EVENTID eventId,SAFEARRAY *propertyIDs) {
    return This->lpVtbl->AdviseEventAdded(This,eventId,propertyIDs);
}
static inline HRESULT IRawElementProviderAdviseEvents_AdviseEventRemoved(IRawElementProviderAdviseEvents* This,EVENTID eventId,SAFEARRAY *propertyIDs) {
    return This->lpVtbl->AdviseEventRemoved(This,eventId,propertyIDs);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderAdviseEvents_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IProxyProviderWinEventSink interface
 */
#ifndef __IProxyProviderWinEventSink_INTERFACE_DEFINED__
#define __IProxyProviderWinEventSink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IProxyProviderWinEventSink, 0x4fd82b78, 0xa43e, 0x46ac, 0x98,0x03, 0x0a,0x69,0x69,0xc7,0xc1,0x83);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4fd82b78-a43e-46ac-9803-0a6969c7c183")
IProxyProviderWinEventSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddAutomationPropertyChangedEvent(
        IRawElementProviderSimple *pProvider,
        PROPERTYID id,
        VARIANT newValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddAutomationEvent(
        IRawElementProviderSimple *pProvider,
        EVENTID id) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddStructureChangedEvent(
        IRawElementProviderSimple *pProvider,
        enum StructureChangeType structureChangeType,
        SAFEARRAY *runtimeId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IProxyProviderWinEventSink, 0x4fd82b78, 0xa43e, 0x46ac, 0x98,0x03, 0x0a,0x69,0x69,0xc7,0xc1,0x83)
#endif
#else
typedef struct IProxyProviderWinEventSinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IProxyProviderWinEventSink *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IProxyProviderWinEventSink *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IProxyProviderWinEventSink *This);

    /*** IProxyProviderWinEventSink methods ***/
    HRESULT (STDMETHODCALLTYPE *AddAutomationPropertyChangedEvent)(
        IProxyProviderWinEventSink *This,
        IRawElementProviderSimple *pProvider,
        PROPERTYID id,
        VARIANT newValue);

    HRESULT (STDMETHODCALLTYPE *AddAutomationEvent)(
        IProxyProviderWinEventSink *This,
        IRawElementProviderSimple *pProvider,
        EVENTID id);

    HRESULT (STDMETHODCALLTYPE *AddStructureChangedEvent)(
        IProxyProviderWinEventSink *This,
        IRawElementProviderSimple *pProvider,
        enum StructureChangeType structureChangeType,
        SAFEARRAY *runtimeId);

    END_INTERFACE
} IProxyProviderWinEventSinkVtbl;

interface IProxyProviderWinEventSink {
    CONST_VTBL IProxyProviderWinEventSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IProxyProviderWinEventSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IProxyProviderWinEventSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IProxyProviderWinEventSink_Release(This) (This)->lpVtbl->Release(This)
/*** IProxyProviderWinEventSink methods ***/
#define IProxyProviderWinEventSink_AddAutomationPropertyChangedEvent(This,pProvider,id,newValue) (This)->lpVtbl->AddAutomationPropertyChangedEvent(This,pProvider,id,newValue)
#define IProxyProviderWinEventSink_AddAutomationEvent(This,pProvider,id) (This)->lpVtbl->AddAutomationEvent(This,pProvider,id)
#define IProxyProviderWinEventSink_AddStructureChangedEvent(This,pProvider,structureChangeType,runtimeId) (This)->lpVtbl->AddStructureChangedEvent(This,pProvider,structureChangeType,runtimeId)
#else
/*** IUnknown methods ***/
static inline HRESULT IProxyProviderWinEventSink_QueryInterface(IProxyProviderWinEventSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IProxyProviderWinEventSink_AddRef(IProxyProviderWinEventSink* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IProxyProviderWinEventSink_Release(IProxyProviderWinEventSink* This) {
    return This->lpVtbl->Release(This);
}
/*** IProxyProviderWinEventSink methods ***/
static inline HRESULT IProxyProviderWinEventSink_AddAutomationPropertyChangedEvent(IProxyProviderWinEventSink* This,IRawElementProviderSimple *pProvider,PROPERTYID id,VARIANT newValue) {
    return This->lpVtbl->AddAutomationPropertyChangedEvent(This,pProvider,id,newValue);
}
static inline HRESULT IProxyProviderWinEventSink_AddAutomationEvent(IProxyProviderWinEventSink* This,IRawElementProviderSimple *pProvider,EVENTID id) {
    return This->lpVtbl->AddAutomationEvent(This,pProvider,id);
}
static inline HRESULT IProxyProviderWinEventSink_AddStructureChangedEvent(IProxyProviderWinEventSink* This,IRawElementProviderSimple *pProvider,enum StructureChangeType structureChangeType,SAFEARRAY *runtimeId) {
    return This->lpVtbl->AddStructureChangedEvent(This,pProvider,structureChangeType,runtimeId);
}
#endif
#endif

#endif


#endif  /* __IProxyProviderWinEventSink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IProxyProviderWinEventHandler interface
 */
#ifndef __IProxyProviderWinEventHandler_INTERFACE_DEFINED__
#define __IProxyProviderWinEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IProxyProviderWinEventHandler, 0x89592ad4, 0xf4e0, 0x43d5, 0xa3,0xb6, 0xba,0xd7,0xe1,0x11,0xb4,0x35);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("89592ad4-f4e0-43d5-a3b6-bad7e111b435")
IProxyProviderWinEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RespondToWinEvent(
        DWORD idWinEvent,
        HWND hwnd,
        LONG idObject,
        LONG idChild,
        IProxyProviderWinEventSink *pSink) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IProxyProviderWinEventHandler, 0x89592ad4, 0xf4e0, 0x43d5, 0xa3,0xb6, 0xba,0xd7,0xe1,0x11,0xb4,0x35)
#endif
#else
typedef struct IProxyProviderWinEventHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IProxyProviderWinEventHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IProxyProviderWinEventHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IProxyProviderWinEventHandler *This);

    /*** IProxyProviderWinEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *RespondToWinEvent)(
        IProxyProviderWinEventHandler *This,
        DWORD idWinEvent,
        HWND hwnd,
        LONG idObject,
        LONG idChild,
        IProxyProviderWinEventSink *pSink);

    END_INTERFACE
} IProxyProviderWinEventHandlerVtbl;

interface IProxyProviderWinEventHandler {
    CONST_VTBL IProxyProviderWinEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IProxyProviderWinEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IProxyProviderWinEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IProxyProviderWinEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IProxyProviderWinEventHandler methods ***/
#define IProxyProviderWinEventHandler_RespondToWinEvent(This,idWinEvent,hwnd,idObject,idChild,pSink) (This)->lpVtbl->RespondToWinEvent(This,idWinEvent,hwnd,idObject,idChild,pSink)
#else
/*** IUnknown methods ***/
static inline HRESULT IProxyProviderWinEventHandler_QueryInterface(IProxyProviderWinEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IProxyProviderWinEventHandler_AddRef(IProxyProviderWinEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IProxyProviderWinEventHandler_Release(IProxyProviderWinEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IProxyProviderWinEventHandler methods ***/
static inline HRESULT IProxyProviderWinEventHandler_RespondToWinEvent(IProxyProviderWinEventHandler* This,DWORD idWinEvent,HWND hwnd,LONG idObject,LONG idChild,IProxyProviderWinEventSink *pSink) {
    return This->lpVtbl->RespondToWinEvent(This,idWinEvent,hwnd,idObject,idChild,pSink);
}
#endif
#endif

#endif


#endif  /* __IProxyProviderWinEventHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRawElementProviderWindowlessSite interface
 */
#ifndef __IRawElementProviderWindowlessSite_INTERFACE_DEFINED__
#define __IRawElementProviderWindowlessSite_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderWindowlessSite, 0x0a2a93cc, 0xbfad, 0x42ac, 0x9b,0x2e, 0x09,0x91,0xfb,0x0d,0x3e,0xa0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0a2a93cc-bfad-42ac-9b2e-0991fb0d3ea0")
IRawElementProviderWindowlessSite : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetAdjacentFragment(
        enum NavigateDirection direction,
        IRawElementProviderFragment **ppParent) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRuntimeIdPrefix(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderWindowlessSite, 0x0a2a93cc, 0xbfad, 0x42ac, 0x9b,0x2e, 0x09,0x91,0xfb,0x0d,0x3e,0xa0)
#endif
#else
typedef struct IRawElementProviderWindowlessSiteVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderWindowlessSite *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderWindowlessSite *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderWindowlessSite *This);

    /*** IRawElementProviderWindowlessSite methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAdjacentFragment)(
        IRawElementProviderWindowlessSite *This,
        enum NavigateDirection direction,
        IRawElementProviderFragment **ppParent);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeIdPrefix)(
        IRawElementProviderWindowlessSite *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} IRawElementProviderWindowlessSiteVtbl;

interface IRawElementProviderWindowlessSite {
    CONST_VTBL IRawElementProviderWindowlessSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderWindowlessSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderWindowlessSite_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderWindowlessSite_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderWindowlessSite methods ***/
#define IRawElementProviderWindowlessSite_GetAdjacentFragment(This,direction,ppParent) (This)->lpVtbl->GetAdjacentFragment(This,direction,ppParent)
#define IRawElementProviderWindowlessSite_GetRuntimeIdPrefix(This,pRetVal) (This)->lpVtbl->GetRuntimeIdPrefix(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderWindowlessSite_QueryInterface(IRawElementProviderWindowlessSite* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderWindowlessSite_AddRef(IRawElementProviderWindowlessSite* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderWindowlessSite_Release(IRawElementProviderWindowlessSite* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderWindowlessSite methods ***/
static inline HRESULT IRawElementProviderWindowlessSite_GetAdjacentFragment(IRawElementProviderWindowlessSite* This,enum NavigateDirection direction,IRawElementProviderFragment **ppParent) {
    return This->lpVtbl->GetAdjacentFragment(This,direction,ppParent);
}
static inline HRESULT IRawElementProviderWindowlessSite_GetRuntimeIdPrefix(IRawElementProviderWindowlessSite* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetRuntimeIdPrefix(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderWindowlessSite_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleHostingElementProviders interface
 */
#ifndef __IAccessibleHostingElementProviders_INTERFACE_DEFINED__
#define __IAccessibleHostingElementProviders_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleHostingElementProviders, 0x33ac331b, 0x943e, 0x4020, 0xb2,0x95, 0xdb,0x37,0x78,0x49,0x74,0xa3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("33ac331b-943e-4020-b295-db37784974a3")
IAccessibleHostingElementProviders : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetEmbeddedFragmentRoots(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObjectIdForProvider(
        IRawElementProviderSimple *pProvider,
        LONG *pidObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleHostingElementProviders, 0x33ac331b, 0x943e, 0x4020, 0xb2,0x95, 0xdb,0x37,0x78,0x49,0x74,0xa3)
#endif
#else
typedef struct IAccessibleHostingElementProvidersVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAccessibleHostingElementProviders *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAccessibleHostingElementProviders *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAccessibleHostingElementProviders *This);

    /*** IAccessibleHostingElementProviders methods ***/
    HRESULT (STDMETHODCALLTYPE *GetEmbeddedFragmentRoots)(
        IAccessibleHostingElementProviders *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetObjectIdForProvider)(
        IAccessibleHostingElementProviders *This,
        IRawElementProviderSimple *pProvider,
        LONG *pidObject);

    END_INTERFACE
} IAccessibleHostingElementProvidersVtbl;

interface IAccessibleHostingElementProviders {
    CONST_VTBL IAccessibleHostingElementProvidersVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleHostingElementProviders_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleHostingElementProviders_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleHostingElementProviders_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleHostingElementProviders methods ***/
#define IAccessibleHostingElementProviders_GetEmbeddedFragmentRoots(This,pRetVal) (This)->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal)
#define IAccessibleHostingElementProviders_GetObjectIdForProvider(This,pProvider,pidObject) (This)->lpVtbl->GetObjectIdForProvider(This,pProvider,pidObject)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleHostingElementProviders_QueryInterface(IAccessibleHostingElementProviders* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleHostingElementProviders_AddRef(IAccessibleHostingElementProviders* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleHostingElementProviders_Release(IAccessibleHostingElementProviders* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleHostingElementProviders methods ***/
static inline HRESULT IAccessibleHostingElementProviders_GetEmbeddedFragmentRoots(IAccessibleHostingElementProviders* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal);
}
static inline HRESULT IAccessibleHostingElementProviders_GetObjectIdForProvider(IAccessibleHostingElementProviders* This,IRawElementProviderSimple *pProvider,LONG *pidObject) {
    return This->lpVtbl->GetObjectIdForProvider(This,pProvider,pidObject);
}
#endif
#endif

#endif


#endif  /* __IAccessibleHostingElementProviders_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRawElementProviderHostingAccessibles interface
 */
#ifndef __IRawElementProviderHostingAccessibles_INTERFACE_DEFINED__
#define __IRawElementProviderHostingAccessibles_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRawElementProviderHostingAccessibles, 0x24be0b07, 0xd37d, 0x487a, 0x98,0xcf, 0xa1,0x3e,0xd4,0x65,0xe9,0xb3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("24be0b07-d37d-487a-98cf-a13ed465e9b3")
IRawElementProviderHostingAccessibles : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetEmbeddedAccessibles(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRawElementProviderHostingAccessibles, 0x24be0b07, 0xd37d, 0x487a, 0x98,0xcf, 0xa1,0x3e,0xd4,0x65,0xe9,0xb3)
#endif
#else
typedef struct IRawElementProviderHostingAccessiblesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRawElementProviderHostingAccessibles *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRawElementProviderHostingAccessibles *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRawElementProviderHostingAccessibles *This);

    /*** IRawElementProviderHostingAccessibles methods ***/
    HRESULT (STDMETHODCALLTYPE *GetEmbeddedAccessibles)(
        IRawElementProviderHostingAccessibles *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} IRawElementProviderHostingAccessiblesVtbl;

interface IRawElementProviderHostingAccessibles {
    CONST_VTBL IRawElementProviderHostingAccessiblesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRawElementProviderHostingAccessibles_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRawElementProviderHostingAccessibles_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRawElementProviderHostingAccessibles_Release(This) (This)->lpVtbl->Release(This)
/*** IRawElementProviderHostingAccessibles methods ***/
#define IRawElementProviderHostingAccessibles_GetEmbeddedAccessibles(This,pRetVal) (This)->lpVtbl->GetEmbeddedAccessibles(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRawElementProviderHostingAccessibles_QueryInterface(IRawElementProviderHostingAccessibles* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRawElementProviderHostingAccessibles_AddRef(IRawElementProviderHostingAccessibles* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRawElementProviderHostingAccessibles_Release(IRawElementProviderHostingAccessibles* This) {
    return This->lpVtbl->Release(This);
}
/*** IRawElementProviderHostingAccessibles methods ***/
static inline HRESULT IRawElementProviderHostingAccessibles_GetEmbeddedAccessibles(IRawElementProviderHostingAccessibles* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetEmbeddedAccessibles(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IRawElementProviderHostingAccessibles_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ILegacyIAccessibleProvider interface
 */
#ifndef __ILegacyIAccessibleProvider_INTERFACE_DEFINED__
#define __ILegacyIAccessibleProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ILegacyIAccessibleProvider, 0xe44c3566, 0x915d, 0x4070, 0x99,0xc6, 0x04,0x7b,0xff,0x5a,0x08,0xf5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e44c3566-915d-4070-99c6-047bff5a08f5")
ILegacyIAccessibleProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Select(
        LONG flagsSelect) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoDefaultAction(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetValue(
        LPCWSTR szValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIAccessible(
        IAccessible **ppAccessible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ChildId(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *pszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Value(
        BSTR *pszValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Description(
        BSTR *pszDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Role(
        DWORD *pdwRole) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_State(
        DWORD *pdwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Help(
        BSTR *pszHelp) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_KeyboardShortcut(
        BSTR *pszKeyboardShortcut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelection(
        SAFEARRAY **pvarSelectedChildren) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DefaultAction(
        BSTR *pszDefaultAction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ILegacyIAccessibleProvider, 0xe44c3566, 0x915d, 0x4070, 0x99,0xc6, 0x04,0x7b,0xff,0x5a,0x08,0xf5)
#endif
#else
typedef struct ILegacyIAccessibleProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ILegacyIAccessibleProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ILegacyIAccessibleProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ILegacyIAccessibleProvider *This);

    /*** ILegacyIAccessibleProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Select)(
        ILegacyIAccessibleProvider *This,
        LONG flagsSelect);

    HRESULT (STDMETHODCALLTYPE *DoDefaultAction)(
        ILegacyIAccessibleProvider *This);

    HRESULT (STDMETHODCALLTYPE *SetValue)(
        ILegacyIAccessibleProvider *This,
        LPCWSTR szValue);

    HRESULT (STDMETHODCALLTYPE *GetIAccessible)(
        ILegacyIAccessibleProvider *This,
        IAccessible **ppAccessible);

    HRESULT (STDMETHODCALLTYPE *get_ChildId)(
        ILegacyIAccessibleProvider *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_Name)(
        ILegacyIAccessibleProvider *This,
        BSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *get_Value)(
        ILegacyIAccessibleProvider *This,
        BSTR *pszValue);

    HRESULT (STDMETHODCALLTYPE *get_Description)(
        ILegacyIAccessibleProvider *This,
        BSTR *pszDescription);

    HRESULT (STDMETHODCALLTYPE *get_Role)(
        ILegacyIAccessibleProvider *This,
        DWORD *pdwRole);

    HRESULT (STDMETHODCALLTYPE *get_State)(
        ILegacyIAccessibleProvider *This,
        DWORD *pdwState);

    HRESULT (STDMETHODCALLTYPE *get_Help)(
        ILegacyIAccessibleProvider *This,
        BSTR *pszHelp);

    HRESULT (STDMETHODCALLTYPE *get_KeyboardShortcut)(
        ILegacyIAccessibleProvider *This,
        BSTR *pszKeyboardShortcut);

    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        ILegacyIAccessibleProvider *This,
        SAFEARRAY **pvarSelectedChildren);

    HRESULT (STDMETHODCALLTYPE *get_DefaultAction)(
        ILegacyIAccessibleProvider *This,
        BSTR *pszDefaultAction);

    END_INTERFACE
} ILegacyIAccessibleProviderVtbl;

interface ILegacyIAccessibleProvider {
    CONST_VTBL ILegacyIAccessibleProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ILegacyIAccessibleProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ILegacyIAccessibleProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ILegacyIAccessibleProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ILegacyIAccessibleProvider methods ***/
#define ILegacyIAccessibleProvider_Select(This,flagsSelect) (This)->lpVtbl->Select(This,flagsSelect)
#define ILegacyIAccessibleProvider_DoDefaultAction(This) (This)->lpVtbl->DoDefaultAction(This)
#define ILegacyIAccessibleProvider_SetValue(This,szValue) (This)->lpVtbl->SetValue(This,szValue)
#define ILegacyIAccessibleProvider_GetIAccessible(This,ppAccessible) (This)->lpVtbl->GetIAccessible(This,ppAccessible)
#define ILegacyIAccessibleProvider_get_ChildId(This,pRetVal) (This)->lpVtbl->get_ChildId(This,pRetVal)
#define ILegacyIAccessibleProvider_get_Name(This,pszName) (This)->lpVtbl->get_Name(This,pszName)
#define ILegacyIAccessibleProvider_get_Value(This,pszValue) (This)->lpVtbl->get_Value(This,pszValue)
#define ILegacyIAccessibleProvider_get_Description(This,pszDescription) (This)->lpVtbl->get_Description(This,pszDescription)
#define ILegacyIAccessibleProvider_get_Role(This,pdwRole) (This)->lpVtbl->get_Role(This,pdwRole)
#define ILegacyIAccessibleProvider_get_State(This,pdwState) (This)->lpVtbl->get_State(This,pdwState)
#define ILegacyIAccessibleProvider_get_Help(This,pszHelp) (This)->lpVtbl->get_Help(This,pszHelp)
#define ILegacyIAccessibleProvider_get_KeyboardShortcut(This,pszKeyboardShortcut) (This)->lpVtbl->get_KeyboardShortcut(This,pszKeyboardShortcut)
#define ILegacyIAccessibleProvider_GetSelection(This,pvarSelectedChildren) (This)->lpVtbl->GetSelection(This,pvarSelectedChildren)
#define ILegacyIAccessibleProvider_get_DefaultAction(This,pszDefaultAction) (This)->lpVtbl->get_DefaultAction(This,pszDefaultAction)
#else
/*** IUnknown methods ***/
static inline HRESULT ILegacyIAccessibleProvider_QueryInterface(ILegacyIAccessibleProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ILegacyIAccessibleProvider_AddRef(ILegacyIAccessibleProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ILegacyIAccessibleProvider_Release(ILegacyIAccessibleProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ILegacyIAccessibleProvider methods ***/
static inline HRESULT ILegacyIAccessibleProvider_Select(ILegacyIAccessibleProvider* This,LONG flagsSelect) {
    return This->lpVtbl->Select(This,flagsSelect);
}
static inline HRESULT ILegacyIAccessibleProvider_DoDefaultAction(ILegacyIAccessibleProvider* This) {
    return This->lpVtbl->DoDefaultAction(This);
}
static inline HRESULT ILegacyIAccessibleProvider_SetValue(ILegacyIAccessibleProvider* This,LPCWSTR szValue) {
    return This->lpVtbl->SetValue(This,szValue);
}
static inline HRESULT ILegacyIAccessibleProvider_GetIAccessible(ILegacyIAccessibleProvider* This,IAccessible **ppAccessible) {
    return This->lpVtbl->GetIAccessible(This,ppAccessible);
}
static inline HRESULT ILegacyIAccessibleProvider_get_ChildId(ILegacyIAccessibleProvider* This,int *pRetVal) {
    return This->lpVtbl->get_ChildId(This,pRetVal);
}
static inline HRESULT ILegacyIAccessibleProvider_get_Name(ILegacyIAccessibleProvider* This,BSTR *pszName) {
    return This->lpVtbl->get_Name(This,pszName);
}
static inline HRESULT ILegacyIAccessibleProvider_get_Value(ILegacyIAccessibleProvider* This,BSTR *pszValue) {
    return This->lpVtbl->get_Value(This,pszValue);
}
static inline HRESULT ILegacyIAccessibleProvider_get_Description(ILegacyIAccessibleProvider* This,BSTR *pszDescription) {
    return This->lpVtbl->get_Description(This,pszDescription);
}
static inline HRESULT ILegacyIAccessibleProvider_get_Role(ILegacyIAccessibleProvider* This,DWORD *pdwRole) {
    return This->lpVtbl->get_Role(This,pdwRole);
}
static inline HRESULT ILegacyIAccessibleProvider_get_State(ILegacyIAccessibleProvider* This,DWORD *pdwState) {
    return This->lpVtbl->get_State(This,pdwState);
}
static inline HRESULT ILegacyIAccessibleProvider_get_Help(ILegacyIAccessibleProvider* This,BSTR *pszHelp) {
    return This->lpVtbl->get_Help(This,pszHelp);
}
static inline HRESULT ILegacyIAccessibleProvider_get_KeyboardShortcut(ILegacyIAccessibleProvider* This,BSTR *pszKeyboardShortcut) {
    return This->lpVtbl->get_KeyboardShortcut(This,pszKeyboardShortcut);
}
static inline HRESULT ILegacyIAccessibleProvider_GetSelection(ILegacyIAccessibleProvider* This,SAFEARRAY **pvarSelectedChildren) {
    return This->lpVtbl->GetSelection(This,pvarSelectedChildren);
}
static inline HRESULT ILegacyIAccessibleProvider_get_DefaultAction(ILegacyIAccessibleProvider* This,BSTR *pszDefaultAction) {
    return This->lpVtbl->get_DefaultAction(This,pszDefaultAction);
}
#endif
#endif

#endif


#endif  /* __ILegacyIAccessibleProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDockProvider interface
 */
#ifndef __IDockProvider_INTERFACE_DEFINED__
#define __IDockProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDockProvider, 0x159bc72c, 0x4ad3, 0x485e, 0x96,0x37, 0xd7,0x05,0x2e,0xdf,0x01,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("159bc72c-4ad3-485e-9637-d7052edf0146")
IDockProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetDockPosition(
        enum DockPosition dockPosition) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DockPosition(
        enum DockPosition *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDockProvider, 0x159bc72c, 0x4ad3, 0x485e, 0x96,0x37, 0xd7,0x05,0x2e,0xdf,0x01,0x46)
#endif
#else
typedef struct IDockProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDockProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDockProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDockProvider *This);

    /*** IDockProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *SetDockPosition)(
        IDockProvider *This,
        enum DockPosition dockPosition);

    HRESULT (STDMETHODCALLTYPE *get_DockPosition)(
        IDockProvider *This,
        enum DockPosition *pRetVal);

    END_INTERFACE
} IDockProviderVtbl;

interface IDockProvider {
    CONST_VTBL IDockProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDockProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDockProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDockProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IDockProvider methods ***/
#define IDockProvider_SetDockPosition(This,dockPosition) (This)->lpVtbl->SetDockPosition(This,dockPosition)
#define IDockProvider_get_DockPosition(This,pRetVal) (This)->lpVtbl->get_DockPosition(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IDockProvider_QueryInterface(IDockProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDockProvider_AddRef(IDockProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDockProvider_Release(IDockProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IDockProvider methods ***/
static inline HRESULT IDockProvider_SetDockPosition(IDockProvider* This,enum DockPosition dockPosition) {
    return This->lpVtbl->SetDockPosition(This,dockPosition);
}
static inline HRESULT IDockProvider_get_DockPosition(IDockProvider* This,enum DockPosition *pRetVal) {
    return This->lpVtbl->get_DockPosition(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IDockProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IExpandCollapseProvider interface
 */
#ifndef __IExpandCollapseProvider_INTERFACE_DEFINED__
#define __IExpandCollapseProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExpandCollapseProvider, 0xd847d3a5, 0xcab0, 0x4a98, 0x8c,0x32, 0xec,0xb4,0x5c,0x59,0xad,0x24);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d847d3a5-cab0-4a98-8c32-ecb45c59ad24")
IExpandCollapseProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Expand(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Collapse(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ExpandCollapseState(
        enum ExpandCollapseState *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExpandCollapseProvider, 0xd847d3a5, 0xcab0, 0x4a98, 0x8c,0x32, 0xec,0xb4,0x5c,0x59,0xad,0x24)
#endif
#else
typedef struct IExpandCollapseProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IExpandCollapseProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IExpandCollapseProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IExpandCollapseProvider *This);

    /*** IExpandCollapseProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Expand)(
        IExpandCollapseProvider *This);

    HRESULT (STDMETHODCALLTYPE *Collapse)(
        IExpandCollapseProvider *This);

    HRESULT (STDMETHODCALLTYPE *get_ExpandCollapseState)(
        IExpandCollapseProvider *This,
        enum ExpandCollapseState *pRetVal);

    END_INTERFACE
} IExpandCollapseProviderVtbl;

interface IExpandCollapseProvider {
    CONST_VTBL IExpandCollapseProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExpandCollapseProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExpandCollapseProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExpandCollapseProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IExpandCollapseProvider methods ***/
#define IExpandCollapseProvider_Expand(This) (This)->lpVtbl->Expand(This)
#define IExpandCollapseProvider_Collapse(This) (This)->lpVtbl->Collapse(This)
#define IExpandCollapseProvider_get_ExpandCollapseState(This,pRetVal) (This)->lpVtbl->get_ExpandCollapseState(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IExpandCollapseProvider_QueryInterface(IExpandCollapseProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExpandCollapseProvider_AddRef(IExpandCollapseProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExpandCollapseProvider_Release(IExpandCollapseProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IExpandCollapseProvider methods ***/
static inline HRESULT IExpandCollapseProvider_Expand(IExpandCollapseProvider* This) {
    return This->lpVtbl->Expand(This);
}
static inline HRESULT IExpandCollapseProvider_Collapse(IExpandCollapseProvider* This) {
    return This->lpVtbl->Collapse(This);
}
static inline HRESULT IExpandCollapseProvider_get_ExpandCollapseState(IExpandCollapseProvider* This,enum ExpandCollapseState *pRetVal) {
    return This->lpVtbl->get_ExpandCollapseState(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IExpandCollapseProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IGridProvider interface
 */
#ifndef __IGridProvider_INTERFACE_DEFINED__
#define __IGridProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IGridProvider, 0xb17d6187, 0x0907, 0x464b, 0xa1,0x68, 0x0e,0xf1,0x7a,0x15,0x72,0xb1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b17d6187-0907-464b-a168-0ef17a1572b1")
IGridProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetItem(
        int row,
        int column,
        IRawElementProviderSimple **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RowCount(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ColumnCount(
        int *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IGridProvider, 0xb17d6187, 0x0907, 0x464b, 0xa1,0x68, 0x0e,0xf1,0x7a,0x15,0x72,0xb1)
#endif
#else
typedef struct IGridProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IGridProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IGridProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IGridProvider *This);

    /*** IGridProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IGridProvider *This,
        int row,
        int column,
        IRawElementProviderSimple **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_RowCount)(
        IGridProvider *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_ColumnCount)(
        IGridProvider *This,
        int *pRetVal);

    END_INTERFACE
} IGridProviderVtbl;

interface IGridProvider {
    CONST_VTBL IGridProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IGridProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGridProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGridProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IGridProvider methods ***/
#define IGridProvider_GetItem(This,row,column,pRetVal) (This)->lpVtbl->GetItem(This,row,column,pRetVal)
#define IGridProvider_get_RowCount(This,pRetVal) (This)->lpVtbl->get_RowCount(This,pRetVal)
#define IGridProvider_get_ColumnCount(This,pRetVal) (This)->lpVtbl->get_ColumnCount(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IGridProvider_QueryInterface(IGridProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IGridProvider_AddRef(IGridProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IGridProvider_Release(IGridProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IGridProvider methods ***/
static inline HRESULT IGridProvider_GetItem(IGridProvider* This,int row,int column,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->GetItem(This,row,column,pRetVal);
}
static inline HRESULT IGridProvider_get_RowCount(IGridProvider* This,int *pRetVal) {
    return This->lpVtbl->get_RowCount(This,pRetVal);
}
static inline HRESULT IGridProvider_get_ColumnCount(IGridProvider* This,int *pRetVal) {
    return This->lpVtbl->get_ColumnCount(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IGridProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IGridItemProvider interface
 */
#ifndef __IGridItemProvider_INTERFACE_DEFINED__
#define __IGridItemProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IGridItemProvider, 0xd02541f1, 0xfb81, 0x4d64, 0xae,0x32, 0xf5,0x20,0xf8,0xa6,0xdb,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d02541f1-fb81-4d64-ae32-f520f8a6dbd1")
IGridItemProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_Row(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Column(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RowSpan(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ColumnSpan(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ContainingGrid(
        IRawElementProviderSimple **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IGridItemProvider, 0xd02541f1, 0xfb81, 0x4d64, 0xae,0x32, 0xf5,0x20,0xf8,0xa6,0xdb,0xd1)
#endif
#else
typedef struct IGridItemProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IGridItemProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IGridItemProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IGridItemProvider *This);

    /*** IGridItemProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Row)(
        IGridItemProvider *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_Column)(
        IGridItemProvider *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_RowSpan)(
        IGridItemProvider *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_ColumnSpan)(
        IGridItemProvider *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_ContainingGrid)(
        IGridItemProvider *This,
        IRawElementProviderSimple **pRetVal);

    END_INTERFACE
} IGridItemProviderVtbl;

interface IGridItemProvider {
    CONST_VTBL IGridItemProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IGridItemProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IGridItemProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IGridItemProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IGridItemProvider methods ***/
#define IGridItemProvider_get_Row(This,pRetVal) (This)->lpVtbl->get_Row(This,pRetVal)
#define IGridItemProvider_get_Column(This,pRetVal) (This)->lpVtbl->get_Column(This,pRetVal)
#define IGridItemProvider_get_RowSpan(This,pRetVal) (This)->lpVtbl->get_RowSpan(This,pRetVal)
#define IGridItemProvider_get_ColumnSpan(This,pRetVal) (This)->lpVtbl->get_ColumnSpan(This,pRetVal)
#define IGridItemProvider_get_ContainingGrid(This,pRetVal) (This)->lpVtbl->get_ContainingGrid(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IGridItemProvider_QueryInterface(IGridItemProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IGridItemProvider_AddRef(IGridItemProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IGridItemProvider_Release(IGridItemProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IGridItemProvider methods ***/
static inline HRESULT IGridItemProvider_get_Row(IGridItemProvider* This,int *pRetVal) {
    return This->lpVtbl->get_Row(This,pRetVal);
}
static inline HRESULT IGridItemProvider_get_Column(IGridItemProvider* This,int *pRetVal) {
    return This->lpVtbl->get_Column(This,pRetVal);
}
static inline HRESULT IGridItemProvider_get_RowSpan(IGridItemProvider* This,int *pRetVal) {
    return This->lpVtbl->get_RowSpan(This,pRetVal);
}
static inline HRESULT IGridItemProvider_get_ColumnSpan(IGridItemProvider* This,int *pRetVal) {
    return This->lpVtbl->get_ColumnSpan(This,pRetVal);
}
static inline HRESULT IGridItemProvider_get_ContainingGrid(IGridItemProvider* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->get_ContainingGrid(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IGridItemProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInvokeProvider interface
 */
#ifndef __IInvokeProvider_INTERFACE_DEFINED__
#define __IInvokeProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInvokeProvider, 0x54fcb24b, 0xe18e, 0x47a2, 0xb4,0xd3, 0xec,0xcb,0xe7,0x75,0x99,0xa2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("54fcb24b-e18e-47a2-b4d3-eccbe77599a2")
IInvokeProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Invoke(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInvokeProvider, 0x54fcb24b, 0xe18e, 0x47a2, 0xb4,0xd3, 0xec,0xcb,0xe7,0x75,0x99,0xa2)
#endif
#else
typedef struct IInvokeProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInvokeProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInvokeProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInvokeProvider *This);

    /*** IInvokeProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInvokeProvider *This);

    END_INTERFACE
} IInvokeProviderVtbl;

interface IInvokeProvider {
    CONST_VTBL IInvokeProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInvokeProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInvokeProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInvokeProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IInvokeProvider methods ***/
#define IInvokeProvider_Invoke(This) (This)->lpVtbl->Invoke(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IInvokeProvider_QueryInterface(IInvokeProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInvokeProvider_AddRef(IInvokeProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInvokeProvider_Release(IInvokeProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IInvokeProvider methods ***/
static inline HRESULT IInvokeProvider_Invoke(IInvokeProvider* This) {
    return This->lpVtbl->Invoke(This);
}
#endif
#endif

#endif


#endif  /* __IInvokeProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMultipleViewProvider interface
 */
#ifndef __IMultipleViewProvider_INTERFACE_DEFINED__
#define __IMultipleViewProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMultipleViewProvider, 0x6278cab1, 0xb556, 0x4a1a, 0xb4,0xe0, 0x41,0x8a,0xcc,0x52,0x32,0x01);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6278cab1-b556-4a1a-b4e0-418acc523201")
IMultipleViewProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetViewName(
        int viewId,
        BSTR *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCurrentView(
        int viewId) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentView(
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSupportedViews(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMultipleViewProvider, 0x6278cab1, 0xb556, 0x4a1a, 0xb4,0xe0, 0x41,0x8a,0xcc,0x52,0x32,0x01)
#endif
#else
typedef struct IMultipleViewProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IMultipleViewProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IMultipleViewProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IMultipleViewProvider *This);

    /*** IMultipleViewProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetViewName)(
        IMultipleViewProvider *This,
        int viewId,
        BSTR *pRetVal);

    HRESULT (STDMETHODCALLTYPE *SetCurrentView)(
        IMultipleViewProvider *This,
        int viewId);

    HRESULT (STDMETHODCALLTYPE *get_CurrentView)(
        IMultipleViewProvider *This,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetSupportedViews)(
        IMultipleViewProvider *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} IMultipleViewProviderVtbl;

interface IMultipleViewProvider {
    CONST_VTBL IMultipleViewProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMultipleViewProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMultipleViewProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMultipleViewProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IMultipleViewProvider methods ***/
#define IMultipleViewProvider_GetViewName(This,viewId,pRetVal) (This)->lpVtbl->GetViewName(This,viewId,pRetVal)
#define IMultipleViewProvider_SetCurrentView(This,viewId) (This)->lpVtbl->SetCurrentView(This,viewId)
#define IMultipleViewProvider_get_CurrentView(This,pRetVal) (This)->lpVtbl->get_CurrentView(This,pRetVal)
#define IMultipleViewProvider_GetSupportedViews(This,pRetVal) (This)->lpVtbl->GetSupportedViews(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IMultipleViewProvider_QueryInterface(IMultipleViewProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IMultipleViewProvider_AddRef(IMultipleViewProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IMultipleViewProvider_Release(IMultipleViewProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IMultipleViewProvider methods ***/
static inline HRESULT IMultipleViewProvider_GetViewName(IMultipleViewProvider* This,int viewId,BSTR *pRetVal) {
    return This->lpVtbl->GetViewName(This,viewId,pRetVal);
}
static inline HRESULT IMultipleViewProvider_SetCurrentView(IMultipleViewProvider* This,int viewId) {
    return This->lpVtbl->SetCurrentView(This,viewId);
}
static inline HRESULT IMultipleViewProvider_get_CurrentView(IMultipleViewProvider* This,int *pRetVal) {
    return This->lpVtbl->get_CurrentView(This,pRetVal);
}
static inline HRESULT IMultipleViewProvider_GetSupportedViews(IMultipleViewProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetSupportedViews(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IMultipleViewProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IRangeValueProvider interface
 */
#ifndef __IRangeValueProvider_INTERFACE_DEFINED__
#define __IRangeValueProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRangeValueProvider, 0x36dc7aef, 0x33e6, 0x4691, 0xaf,0xe1, 0x2b,0xe7,0x27,0x4b,0x3d,0x33);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("36dc7aef-33e6-4691-afe1-2be7274b3d33")
IRangeValueProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetValue(
        double val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Value(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsReadOnly(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Maximum(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Minimum(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LargeChange(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SmallChange(
        double *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRangeValueProvider, 0x36dc7aef, 0x33e6, 0x4691, 0xaf,0xe1, 0x2b,0xe7,0x27,0x4b,0x3d,0x33)
#endif
#else
typedef struct IRangeValueProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IRangeValueProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IRangeValueProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IRangeValueProvider *This);

    /*** IRangeValueProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IRangeValueProvider *This,
        double val);

    HRESULT (STDMETHODCALLTYPE *get_Value)(
        IRangeValueProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_IsReadOnly)(
        IRangeValueProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_Maximum)(
        IRangeValueProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_Minimum)(
        IRangeValueProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_LargeChange)(
        IRangeValueProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_SmallChange)(
        IRangeValueProvider *This,
        double *pRetVal);

    END_INTERFACE
} IRangeValueProviderVtbl;

interface IRangeValueProvider {
    CONST_VTBL IRangeValueProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRangeValueProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRangeValueProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRangeValueProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IRangeValueProvider methods ***/
#define IRangeValueProvider_SetValue(This,val) (This)->lpVtbl->SetValue(This,val)
#define IRangeValueProvider_get_Value(This,pRetVal) (This)->lpVtbl->get_Value(This,pRetVal)
#define IRangeValueProvider_get_IsReadOnly(This,pRetVal) (This)->lpVtbl->get_IsReadOnly(This,pRetVal)
#define IRangeValueProvider_get_Maximum(This,pRetVal) (This)->lpVtbl->get_Maximum(This,pRetVal)
#define IRangeValueProvider_get_Minimum(This,pRetVal) (This)->lpVtbl->get_Minimum(This,pRetVal)
#define IRangeValueProvider_get_LargeChange(This,pRetVal) (This)->lpVtbl->get_LargeChange(This,pRetVal)
#define IRangeValueProvider_get_SmallChange(This,pRetVal) (This)->lpVtbl->get_SmallChange(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IRangeValueProvider_QueryInterface(IRangeValueProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRangeValueProvider_AddRef(IRangeValueProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRangeValueProvider_Release(IRangeValueProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IRangeValueProvider methods ***/
static inline HRESULT IRangeValueProvider_SetValue(IRangeValueProvider* This,double val) {
    return This->lpVtbl->SetValue(This,val);
}
static inline HRESULT IRangeValueProvider_get_Value(IRangeValueProvider* This,double *pRetVal) {
    return This->lpVtbl->get_Value(This,pRetVal);
}
static inline HRESULT IRangeValueProvider_get_IsReadOnly(IRangeValueProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsReadOnly(This,pRetVal);
}
static inline HRESULT IRangeValueProvider_get_Maximum(IRangeValueProvider* This,double *pRetVal) {
    return This->lpVtbl->get_Maximum(This,pRetVal);
}
static inline HRESULT IRangeValueProvider_get_Minimum(IRangeValueProvider* This,double *pRetVal) {
    return This->lpVtbl->get_Minimum(This,pRetVal);
}
static inline HRESULT IRangeValueProvider_get_LargeChange(IRangeValueProvider* This,double *pRetVal) {
    return This->lpVtbl->get_LargeChange(This,pRetVal);
}
static inline HRESULT IRangeValueProvider_get_SmallChange(IRangeValueProvider* This,double *pRetVal) {
    return This->lpVtbl->get_SmallChange(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IRangeValueProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IScrollItemProvider interface
 */
#ifndef __IScrollItemProvider_INTERFACE_DEFINED__
#define __IScrollItemProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IScrollItemProvider, 0x2360c714, 0x4bf1, 0x4b26, 0xba,0x65, 0x9b,0x21,0x31,0x61,0x27,0xeb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2360c714-4bf1-4b26-ba65-9b21316127eb")
IScrollItemProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ScrollIntoView(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IScrollItemProvider, 0x2360c714, 0x4bf1, 0x4b26, 0xba,0x65, 0x9b,0x21,0x31,0x61,0x27,0xeb)
#endif
#else
typedef struct IScrollItemProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IScrollItemProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IScrollItemProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IScrollItemProvider *This);

    /*** IScrollItemProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *ScrollIntoView)(
        IScrollItemProvider *This);

    END_INTERFACE
} IScrollItemProviderVtbl;

interface IScrollItemProvider {
    CONST_VTBL IScrollItemProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IScrollItemProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IScrollItemProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IScrollItemProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IScrollItemProvider methods ***/
#define IScrollItemProvider_ScrollIntoView(This) (This)->lpVtbl->ScrollIntoView(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IScrollItemProvider_QueryInterface(IScrollItemProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IScrollItemProvider_AddRef(IScrollItemProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IScrollItemProvider_Release(IScrollItemProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IScrollItemProvider methods ***/
static inline HRESULT IScrollItemProvider_ScrollIntoView(IScrollItemProvider* This) {
    return This->lpVtbl->ScrollIntoView(This);
}
#endif
#endif

#endif


#endif  /* __IScrollItemProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISelectionProvider interface
 */
#ifndef __ISelectionProvider_INTERFACE_DEFINED__
#define __ISelectionProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISelectionProvider, 0xfb8b03af, 0x3bdf, 0x48d4, 0xbd,0x36, 0x1a,0x65,0x79,0x3b,0xe1,0x68);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fb8b03af-3bdf-48d4-bd36-1a65793be168")
ISelectionProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSelection(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanSelectMultiple(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsSelectionRequired(
        WINBOOL *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISelectionProvider, 0xfb8b03af, 0x3bdf, 0x48d4, 0xbd,0x36, 0x1a,0x65,0x79,0x3b,0xe1,0x68)
#endif
#else
typedef struct ISelectionProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISelectionProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISelectionProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISelectionProvider *This);

    /*** ISelectionProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        ISelectionProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanSelectMultiple)(
        ISelectionProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_IsSelectionRequired)(
        ISelectionProvider *This,
        WINBOOL *pRetVal);

    END_INTERFACE
} ISelectionProviderVtbl;

interface ISelectionProvider {
    CONST_VTBL ISelectionProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISelectionProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISelectionProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISelectionProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ISelectionProvider methods ***/
#define ISelectionProvider_GetSelection(This,pRetVal) (This)->lpVtbl->GetSelection(This,pRetVal)
#define ISelectionProvider_get_CanSelectMultiple(This,pRetVal) (This)->lpVtbl->get_CanSelectMultiple(This,pRetVal)
#define ISelectionProvider_get_IsSelectionRequired(This,pRetVal) (This)->lpVtbl->get_IsSelectionRequired(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ISelectionProvider_QueryInterface(ISelectionProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISelectionProvider_AddRef(ISelectionProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISelectionProvider_Release(ISelectionProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ISelectionProvider methods ***/
static inline HRESULT ISelectionProvider_GetSelection(ISelectionProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetSelection(This,pRetVal);
}
static inline HRESULT ISelectionProvider_get_CanSelectMultiple(ISelectionProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanSelectMultiple(This,pRetVal);
}
static inline HRESULT ISelectionProvider_get_IsSelectionRequired(ISelectionProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsSelectionRequired(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ISelectionProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISelectionProvider2 interface
 */
#ifndef __ISelectionProvider2_INTERFACE_DEFINED__
#define __ISelectionProvider2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISelectionProvider2, 0x14f68475, 0xee1c, 0x44f6, 0xa8,0x69, 0xd2,0x39,0x38,0x1f,0x0f,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("14f68475-ee1c-44f6-a869-d239381f0fe7")
ISelectionProvider2 : public ISelectionProvider
{
    virtual HRESULT STDMETHODCALLTYPE get_FirstSelectedItem(
        IRawElementProviderSimple **val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastSelectedItem(
        IRawElementProviderSimple **val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentSelectedItem(
        IRawElementProviderSimple **val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ItemCount(
        int *val) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISelectionProvider2, 0x14f68475, 0xee1c, 0x44f6, 0xa8,0x69, 0xd2,0x39,0x38,0x1f,0x0f,0xe7)
#endif
#else
typedef struct ISelectionProvider2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISelectionProvider2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISelectionProvider2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISelectionProvider2 *This);

    /*** ISelectionProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        ISelectionProvider2 *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanSelectMultiple)(
        ISelectionProvider2 *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_IsSelectionRequired)(
        ISelectionProvider2 *This,
        WINBOOL *pRetVal);

    /*** ISelectionProvider2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_FirstSelectedItem)(
        ISelectionProvider2 *This,
        IRawElementProviderSimple **val);

    HRESULT (STDMETHODCALLTYPE *get_LastSelectedItem)(
        ISelectionProvider2 *This,
        IRawElementProviderSimple **val);

    HRESULT (STDMETHODCALLTYPE *get_CurrentSelectedItem)(
        ISelectionProvider2 *This,
        IRawElementProviderSimple **val);

    HRESULT (STDMETHODCALLTYPE *get_ItemCount)(
        ISelectionProvider2 *This,
        int *val);

    END_INTERFACE
} ISelectionProvider2Vtbl;

interface ISelectionProvider2 {
    CONST_VTBL ISelectionProvider2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISelectionProvider2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISelectionProvider2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISelectionProvider2_Release(This) (This)->lpVtbl->Release(This)
/*** ISelectionProvider methods ***/
#define ISelectionProvider2_GetSelection(This,pRetVal) (This)->lpVtbl->GetSelection(This,pRetVal)
#define ISelectionProvider2_get_CanSelectMultiple(This,pRetVal) (This)->lpVtbl->get_CanSelectMultiple(This,pRetVal)
#define ISelectionProvider2_get_IsSelectionRequired(This,pRetVal) (This)->lpVtbl->get_IsSelectionRequired(This,pRetVal)
/*** ISelectionProvider2 methods ***/
#define ISelectionProvider2_get_FirstSelectedItem(This,val) (This)->lpVtbl->get_FirstSelectedItem(This,val)
#define ISelectionProvider2_get_LastSelectedItem(This,val) (This)->lpVtbl->get_LastSelectedItem(This,val)
#define ISelectionProvider2_get_CurrentSelectedItem(This,val) (This)->lpVtbl->get_CurrentSelectedItem(This,val)
#define ISelectionProvider2_get_ItemCount(This,val) (This)->lpVtbl->get_ItemCount(This,val)
#else
/*** IUnknown methods ***/
static inline HRESULT ISelectionProvider2_QueryInterface(ISelectionProvider2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISelectionProvider2_AddRef(ISelectionProvider2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISelectionProvider2_Release(ISelectionProvider2* This) {
    return This->lpVtbl->Release(This);
}
/*** ISelectionProvider methods ***/
static inline HRESULT ISelectionProvider2_GetSelection(ISelectionProvider2* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetSelection(This,pRetVal);
}
static inline HRESULT ISelectionProvider2_get_CanSelectMultiple(ISelectionProvider2* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanSelectMultiple(This,pRetVal);
}
static inline HRESULT ISelectionProvider2_get_IsSelectionRequired(ISelectionProvider2* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsSelectionRequired(This,pRetVal);
}
/*** ISelectionProvider2 methods ***/
static inline HRESULT ISelectionProvider2_get_FirstSelectedItem(ISelectionProvider2* This,IRawElementProviderSimple **val) {
    return This->lpVtbl->get_FirstSelectedItem(This,val);
}
static inline HRESULT ISelectionProvider2_get_LastSelectedItem(ISelectionProvider2* This,IRawElementProviderSimple **val) {
    return This->lpVtbl->get_LastSelectedItem(This,val);
}
static inline HRESULT ISelectionProvider2_get_CurrentSelectedItem(ISelectionProvider2* This,IRawElementProviderSimple **val) {
    return This->lpVtbl->get_CurrentSelectedItem(This,val);
}
static inline HRESULT ISelectionProvider2_get_ItemCount(ISelectionProvider2* This,int *val) {
    return This->lpVtbl->get_ItemCount(This,val);
}
#endif
#endif

#endif


#endif  /* __ISelectionProvider2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IScrollProvider interface
 */
#ifndef __IScrollProvider_INTERFACE_DEFINED__
#define __IScrollProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IScrollProvider, 0xb38b8077, 0x1fc3, 0x42a5, 0x8c,0xae, 0xd4,0x0c,0x22,0x15,0x05,0x5a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b38b8077-1fc3-42a5-8cae-d40c2215055a")
IScrollProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Scroll(
        enum ScrollAmount horizontalAmount,
        enum ScrollAmount verticalAmount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScrollPercent(
        double horizontalPercent,
        double verticalPercent) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HorizontalScrollPercent(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_VerticalScrollPercent(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HorizontalViewSize(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_VerticalViewSize(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HorizontallyScrollable(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_VerticallyScrollable(
        WINBOOL *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IScrollProvider, 0xb38b8077, 0x1fc3, 0x42a5, 0x8c,0xae, 0xd4,0x0c,0x22,0x15,0x05,0x5a)
#endif
#else
typedef struct IScrollProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IScrollProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IScrollProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IScrollProvider *This);

    /*** IScrollProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Scroll)(
        IScrollProvider *This,
        enum ScrollAmount horizontalAmount,
        enum ScrollAmount verticalAmount);

    HRESULT (STDMETHODCALLTYPE *SetScrollPercent)(
        IScrollProvider *This,
        double horizontalPercent,
        double verticalPercent);

    HRESULT (STDMETHODCALLTYPE *get_HorizontalScrollPercent)(
        IScrollProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_VerticalScrollPercent)(
        IScrollProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_HorizontalViewSize)(
        IScrollProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_VerticalViewSize)(
        IScrollProvider *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_HorizontallyScrollable)(
        IScrollProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_VerticallyScrollable)(
        IScrollProvider *This,
        WINBOOL *pRetVal);

    END_INTERFACE
} IScrollProviderVtbl;

interface IScrollProvider {
    CONST_VTBL IScrollProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IScrollProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IScrollProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IScrollProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IScrollProvider methods ***/
#define IScrollProvider_Scroll(This,horizontalAmount,verticalAmount) (This)->lpVtbl->Scroll(This,horizontalAmount,verticalAmount)
#define IScrollProvider_SetScrollPercent(This,horizontalPercent,verticalPercent) (This)->lpVtbl->SetScrollPercent(This,horizontalPercent,verticalPercent)
#define IScrollProvider_get_HorizontalScrollPercent(This,pRetVal) (This)->lpVtbl->get_HorizontalScrollPercent(This,pRetVal)
#define IScrollProvider_get_VerticalScrollPercent(This,pRetVal) (This)->lpVtbl->get_VerticalScrollPercent(This,pRetVal)
#define IScrollProvider_get_HorizontalViewSize(This,pRetVal) (This)->lpVtbl->get_HorizontalViewSize(This,pRetVal)
#define IScrollProvider_get_VerticalViewSize(This,pRetVal) (This)->lpVtbl->get_VerticalViewSize(This,pRetVal)
#define IScrollProvider_get_HorizontallyScrollable(This,pRetVal) (This)->lpVtbl->get_HorizontallyScrollable(This,pRetVal)
#define IScrollProvider_get_VerticallyScrollable(This,pRetVal) (This)->lpVtbl->get_VerticallyScrollable(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IScrollProvider_QueryInterface(IScrollProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IScrollProvider_AddRef(IScrollProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IScrollProvider_Release(IScrollProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IScrollProvider methods ***/
static inline HRESULT IScrollProvider_Scroll(IScrollProvider* This,enum ScrollAmount horizontalAmount,enum ScrollAmount verticalAmount) {
    return This->lpVtbl->Scroll(This,horizontalAmount,verticalAmount);
}
static inline HRESULT IScrollProvider_SetScrollPercent(IScrollProvider* This,double horizontalPercent,double verticalPercent) {
    return This->lpVtbl->SetScrollPercent(This,horizontalPercent,verticalPercent);
}
static inline HRESULT IScrollProvider_get_HorizontalScrollPercent(IScrollProvider* This,double *pRetVal) {
    return This->lpVtbl->get_HorizontalScrollPercent(This,pRetVal);
}
static inline HRESULT IScrollProvider_get_VerticalScrollPercent(IScrollProvider* This,double *pRetVal) {
    return This->lpVtbl->get_VerticalScrollPercent(This,pRetVal);
}
static inline HRESULT IScrollProvider_get_HorizontalViewSize(IScrollProvider* This,double *pRetVal) {
    return This->lpVtbl->get_HorizontalViewSize(This,pRetVal);
}
static inline HRESULT IScrollProvider_get_VerticalViewSize(IScrollProvider* This,double *pRetVal) {
    return This->lpVtbl->get_VerticalViewSize(This,pRetVal);
}
static inline HRESULT IScrollProvider_get_HorizontallyScrollable(IScrollProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_HorizontallyScrollable(This,pRetVal);
}
static inline HRESULT IScrollProvider_get_VerticallyScrollable(IScrollProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_VerticallyScrollable(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IScrollProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISelectionItemProvider interface
 */
#ifndef __ISelectionItemProvider_INTERFACE_DEFINED__
#define __ISelectionItemProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISelectionItemProvider, 0x2acad808, 0xb2d4, 0x452d, 0xa4,0x07, 0x91,0xff,0x1a,0xd1,0x67,0xb2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2acad808-b2d4-452d-a407-91ff1ad167b2")
ISelectionItemProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Select(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddToSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveFromSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsSelected(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SelectionContainer(
        IRawElementProviderSimple **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISelectionItemProvider, 0x2acad808, 0xb2d4, 0x452d, 0xa4,0x07, 0x91,0xff,0x1a,0xd1,0x67,0xb2)
#endif
#else
typedef struct ISelectionItemProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISelectionItemProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISelectionItemProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISelectionItemProvider *This);

    /*** ISelectionItemProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Select)(
        ISelectionItemProvider *This);

    HRESULT (STDMETHODCALLTYPE *AddToSelection)(
        ISelectionItemProvider *This);

    HRESULT (STDMETHODCALLTYPE *RemoveFromSelection)(
        ISelectionItemProvider *This);

    HRESULT (STDMETHODCALLTYPE *get_IsSelected)(
        ISelectionItemProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_SelectionContainer)(
        ISelectionItemProvider *This,
        IRawElementProviderSimple **pRetVal);

    END_INTERFACE
} ISelectionItemProviderVtbl;

interface ISelectionItemProvider {
    CONST_VTBL ISelectionItemProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISelectionItemProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISelectionItemProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISelectionItemProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ISelectionItemProvider methods ***/
#define ISelectionItemProvider_Select(This) (This)->lpVtbl->Select(This)
#define ISelectionItemProvider_AddToSelection(This) (This)->lpVtbl->AddToSelection(This)
#define ISelectionItemProvider_RemoveFromSelection(This) (This)->lpVtbl->RemoveFromSelection(This)
#define ISelectionItemProvider_get_IsSelected(This,pRetVal) (This)->lpVtbl->get_IsSelected(This,pRetVal)
#define ISelectionItemProvider_get_SelectionContainer(This,pRetVal) (This)->lpVtbl->get_SelectionContainer(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ISelectionItemProvider_QueryInterface(ISelectionItemProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISelectionItemProvider_AddRef(ISelectionItemProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISelectionItemProvider_Release(ISelectionItemProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ISelectionItemProvider methods ***/
static inline HRESULT ISelectionItemProvider_Select(ISelectionItemProvider* This) {
    return This->lpVtbl->Select(This);
}
static inline HRESULT ISelectionItemProvider_AddToSelection(ISelectionItemProvider* This) {
    return This->lpVtbl->AddToSelection(This);
}
static inline HRESULT ISelectionItemProvider_RemoveFromSelection(ISelectionItemProvider* This) {
    return This->lpVtbl->RemoveFromSelection(This);
}
static inline HRESULT ISelectionItemProvider_get_IsSelected(ISelectionItemProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsSelected(This,pRetVal);
}
static inline HRESULT ISelectionItemProvider_get_SelectionContainer(ISelectionItemProvider* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->get_SelectionContainer(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ISelectionItemProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISynchronizedInputProvider interface
 */
#ifndef __ISynchronizedInputProvider_INTERFACE_DEFINED__
#define __ISynchronizedInputProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISynchronizedInputProvider, 0x29db1a06, 0x02ce, 0x4cf7, 0x9b,0x42, 0x56,0x5d,0x4f,0xab,0x20,0xee);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("29db1a06-02ce-4cf7-9b42-565d4fab20ee")
ISynchronizedInputProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StartListening(
        enum SynchronizedInputType inputType) = 0;

    virtual HRESULT STDMETHODCALLTYPE Cancel(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISynchronizedInputProvider, 0x29db1a06, 0x02ce, 0x4cf7, 0x9b,0x42, 0x56,0x5d,0x4f,0xab,0x20,0xee)
#endif
#else
typedef struct ISynchronizedInputProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISynchronizedInputProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISynchronizedInputProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISynchronizedInputProvider *This);

    /*** ISynchronizedInputProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *StartListening)(
        ISynchronizedInputProvider *This,
        enum SynchronizedInputType inputType);

    HRESULT (STDMETHODCALLTYPE *Cancel)(
        ISynchronizedInputProvider *This);

    END_INTERFACE
} ISynchronizedInputProviderVtbl;

interface ISynchronizedInputProvider {
    CONST_VTBL ISynchronizedInputProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISynchronizedInputProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISynchronizedInputProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISynchronizedInputProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ISynchronizedInputProvider methods ***/
#define ISynchronizedInputProvider_StartListening(This,inputType) (This)->lpVtbl->StartListening(This,inputType)
#define ISynchronizedInputProvider_Cancel(This) (This)->lpVtbl->Cancel(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ISynchronizedInputProvider_QueryInterface(ISynchronizedInputProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISynchronizedInputProvider_AddRef(ISynchronizedInputProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISynchronizedInputProvider_Release(ISynchronizedInputProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ISynchronizedInputProvider methods ***/
static inline HRESULT ISynchronizedInputProvider_StartListening(ISynchronizedInputProvider* This,enum SynchronizedInputType inputType) {
    return This->lpVtbl->StartListening(This,inputType);
}
static inline HRESULT ISynchronizedInputProvider_Cancel(ISynchronizedInputProvider* This) {
    return This->lpVtbl->Cancel(This);
}
#endif
#endif

#endif


#endif  /* __ISynchronizedInputProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITableProvider interface
 */
#ifndef __ITableProvider_INTERFACE_DEFINED__
#define __ITableProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITableProvider, 0x9c860395, 0x97b3, 0x490a, 0xb5,0x2a, 0x85,0x8c,0xc2,0x2a,0xf1,0x66);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9c860395-97b3-490a-b52a-858cc22af166")
ITableProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetRowHeaders(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnHeaders(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RowOrColumnMajor(
        enum RowOrColumnMajor *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITableProvider, 0x9c860395, 0x97b3, 0x490a, 0xb5,0x2a, 0x85,0x8c,0xc2,0x2a,0xf1,0x66)
#endif
#else
typedef struct ITableProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITableProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITableProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITableProvider *This);

    /*** ITableProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRowHeaders)(
        ITableProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetColumnHeaders)(
        ITableProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_RowOrColumnMajor)(
        ITableProvider *This,
        enum RowOrColumnMajor *pRetVal);

    END_INTERFACE
} ITableProviderVtbl;

interface ITableProvider {
    CONST_VTBL ITableProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITableProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITableProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITableProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ITableProvider methods ***/
#define ITableProvider_GetRowHeaders(This,pRetVal) (This)->lpVtbl->GetRowHeaders(This,pRetVal)
#define ITableProvider_GetColumnHeaders(This,pRetVal) (This)->lpVtbl->GetColumnHeaders(This,pRetVal)
#define ITableProvider_get_RowOrColumnMajor(This,pRetVal) (This)->lpVtbl->get_RowOrColumnMajor(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITableProvider_QueryInterface(ITableProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITableProvider_AddRef(ITableProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITableProvider_Release(ITableProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ITableProvider methods ***/
static inline HRESULT ITableProvider_GetRowHeaders(ITableProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetRowHeaders(This,pRetVal);
}
static inline HRESULT ITableProvider_GetColumnHeaders(ITableProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetColumnHeaders(This,pRetVal);
}
static inline HRESULT ITableProvider_get_RowOrColumnMajor(ITableProvider* This,enum RowOrColumnMajor *pRetVal) {
    return This->lpVtbl->get_RowOrColumnMajor(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITableProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITableItemProvider interface
 */
#ifndef __ITableItemProvider_INTERFACE_DEFINED__
#define __ITableItemProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITableItemProvider, 0xb9734fa6, 0x771f, 0x4d78, 0x9c,0x90, 0x25,0x17,0x99,0x93,0x49,0xcd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b9734fa6-771f-4d78-9c90-2517999349cd")
ITableItemProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetRowHeaderItems(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnHeaderItems(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITableItemProvider, 0xb9734fa6, 0x771f, 0x4d78, 0x9c,0x90, 0x25,0x17,0x99,0x93,0x49,0xcd)
#endif
#else
typedef struct ITableItemProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITableItemProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITableItemProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITableItemProvider *This);

    /*** ITableItemProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRowHeaderItems)(
        ITableItemProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetColumnHeaderItems)(
        ITableItemProvider *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} ITableItemProviderVtbl;

interface ITableItemProvider {
    CONST_VTBL ITableItemProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITableItemProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITableItemProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITableItemProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ITableItemProvider methods ***/
#define ITableItemProvider_GetRowHeaderItems(This,pRetVal) (This)->lpVtbl->GetRowHeaderItems(This,pRetVal)
#define ITableItemProvider_GetColumnHeaderItems(This,pRetVal) (This)->lpVtbl->GetColumnHeaderItems(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITableItemProvider_QueryInterface(ITableItemProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITableItemProvider_AddRef(ITableItemProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITableItemProvider_Release(ITableItemProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ITableItemProvider methods ***/
static inline HRESULT ITableItemProvider_GetRowHeaderItems(ITableItemProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetRowHeaderItems(This,pRetVal);
}
static inline HRESULT ITableItemProvider_GetColumnHeaderItems(ITableItemProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetColumnHeaderItems(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITableItemProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IToggleProvider interface
 */
#ifndef __IToggleProvider_INTERFACE_DEFINED__
#define __IToggleProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IToggleProvider, 0x56d00bd0, 0xc4f4, 0x433c, 0xa8,0x36, 0x1a,0x52,0xa5,0x7e,0x08,0x92);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56d00bd0-c4f4-433c-a836-1a52a57e0892")
IToggleProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Toggle(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ToggleState(
        enum ToggleState *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IToggleProvider, 0x56d00bd0, 0xc4f4, 0x433c, 0xa8,0x36, 0x1a,0x52,0xa5,0x7e,0x08,0x92)
#endif
#else
typedef struct IToggleProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IToggleProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IToggleProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IToggleProvider *This);

    /*** IToggleProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Toggle)(
        IToggleProvider *This);

    HRESULT (STDMETHODCALLTYPE *get_ToggleState)(
        IToggleProvider *This,
        enum ToggleState *pRetVal);

    END_INTERFACE
} IToggleProviderVtbl;

interface IToggleProvider {
    CONST_VTBL IToggleProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IToggleProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IToggleProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IToggleProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IToggleProvider methods ***/
#define IToggleProvider_Toggle(This) (This)->lpVtbl->Toggle(This)
#define IToggleProvider_get_ToggleState(This,pRetVal) (This)->lpVtbl->get_ToggleState(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IToggleProvider_QueryInterface(IToggleProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IToggleProvider_AddRef(IToggleProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IToggleProvider_Release(IToggleProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IToggleProvider methods ***/
static inline HRESULT IToggleProvider_Toggle(IToggleProvider* This) {
    return This->lpVtbl->Toggle(This);
}
static inline HRESULT IToggleProvider_get_ToggleState(IToggleProvider* This,enum ToggleState *pRetVal) {
    return This->lpVtbl->get_ToggleState(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IToggleProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransformProvider interface
 */
#ifndef __ITransformProvider_INTERFACE_DEFINED__
#define __ITransformProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransformProvider, 0x6829ddc4, 0x4f91, 0x4ffa, 0xb8,0x6f, 0xbd,0x3e,0x29,0x87,0xcb,0x4c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6829ddc4-4f91-4ffa-b86f-bd3e2987cb4c")
ITransformProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Move(
        double x,
        double y) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resize(
        double width,
        double height) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rotate(
        double degrees) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanMove(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanResize(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanRotate(
        WINBOOL *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransformProvider, 0x6829ddc4, 0x4f91, 0x4ffa, 0xb8,0x6f, 0xbd,0x3e,0x29,0x87,0xcb,0x4c)
#endif
#else
typedef struct ITransformProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransformProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransformProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransformProvider *This);

    /*** ITransformProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Move)(
        ITransformProvider *This,
        double x,
        double y);

    HRESULT (STDMETHODCALLTYPE *Resize)(
        ITransformProvider *This,
        double width,
        double height);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        ITransformProvider *This,
        double degrees);

    HRESULT (STDMETHODCALLTYPE *get_CanMove)(
        ITransformProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanResize)(
        ITransformProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanRotate)(
        ITransformProvider *This,
        WINBOOL *pRetVal);

    END_INTERFACE
} ITransformProviderVtbl;

interface ITransformProvider {
    CONST_VTBL ITransformProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransformProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransformProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransformProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ITransformProvider methods ***/
#define ITransformProvider_Move(This,x,y) (This)->lpVtbl->Move(This,x,y)
#define ITransformProvider_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
#define ITransformProvider_Rotate(This,degrees) (This)->lpVtbl->Rotate(This,degrees)
#define ITransformProvider_get_CanMove(This,pRetVal) (This)->lpVtbl->get_CanMove(This,pRetVal)
#define ITransformProvider_get_CanResize(This,pRetVal) (This)->lpVtbl->get_CanResize(This,pRetVal)
#define ITransformProvider_get_CanRotate(This,pRetVal) (This)->lpVtbl->get_CanRotate(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITransformProvider_QueryInterface(ITransformProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITransformProvider_AddRef(ITransformProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITransformProvider_Release(ITransformProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransformProvider methods ***/
static inline HRESULT ITransformProvider_Move(ITransformProvider* This,double x,double y) {
    return This->lpVtbl->Move(This,x,y);
}
static inline HRESULT ITransformProvider_Resize(ITransformProvider* This,double width,double height) {
    return This->lpVtbl->Resize(This,width,height);
}
static inline HRESULT ITransformProvider_Rotate(ITransformProvider* This,double degrees) {
    return This->lpVtbl->Rotate(This,degrees);
}
static inline HRESULT ITransformProvider_get_CanMove(ITransformProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanMove(This,pRetVal);
}
static inline HRESULT ITransformProvider_get_CanResize(ITransformProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanResize(This,pRetVal);
}
static inline HRESULT ITransformProvider_get_CanRotate(ITransformProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanRotate(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITransformProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IValueProvider interface
 */
#ifndef __IValueProvider_INTERFACE_DEFINED__
#define __IValueProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IValueProvider, 0xc7935180, 0x6fb3, 0x4201, 0xb1,0x74, 0x7d,0xf7,0x3a,0xdb,0xf6,0x4a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c7935180-6fb3-4201-b174-7df73adbf64a")
IValueProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetValue(
        LPCWSTR val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Value(
        BSTR *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsReadOnly(
        WINBOOL *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IValueProvider, 0xc7935180, 0x6fb3, 0x4201, 0xb1,0x74, 0x7d,0xf7,0x3a,0xdb,0xf6,0x4a)
#endif
#else
typedef struct IValueProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IValueProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IValueProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IValueProvider *This);

    /*** IValueProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *SetValue)(
        IValueProvider *This,
        LPCWSTR val);

    HRESULT (STDMETHODCALLTYPE *get_Value)(
        IValueProvider *This,
        BSTR *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_IsReadOnly)(
        IValueProvider *This,
        WINBOOL *pRetVal);

    END_INTERFACE
} IValueProviderVtbl;

interface IValueProvider {
    CONST_VTBL IValueProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IValueProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IValueProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IValueProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IValueProvider methods ***/
#define IValueProvider_SetValue(This,val) (This)->lpVtbl->SetValue(This,val)
#define IValueProvider_get_Value(This,pRetVal) (This)->lpVtbl->get_Value(This,pRetVal)
#define IValueProvider_get_IsReadOnly(This,pRetVal) (This)->lpVtbl->get_IsReadOnly(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IValueProvider_QueryInterface(IValueProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IValueProvider_AddRef(IValueProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IValueProvider_Release(IValueProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IValueProvider methods ***/
static inline HRESULT IValueProvider_SetValue(IValueProvider* This,LPCWSTR val) {
    return This->lpVtbl->SetValue(This,val);
}
static inline HRESULT IValueProvider_get_Value(IValueProvider* This,BSTR *pRetVal) {
    return This->lpVtbl->get_Value(This,pRetVal);
}
static inline HRESULT IValueProvider_get_IsReadOnly(IValueProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsReadOnly(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IValueProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWindowProvider interface
 */
#ifndef __IWindowProvider_INTERFACE_DEFINED__
#define __IWindowProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWindowProvider, 0x987df77b, 0xdb06, 0x4d77, 0x8f,0x8a, 0x86,0xa9,0xc3,0xbb,0x90,0xb9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("987df77b-db06-4d77-8f8a-86a9c3bb90b9")
IWindowProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetVisualState(
        enum WindowVisualState state) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForInputIdle(
        int milliseconds,
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanMaximize(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanMinimize(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsModal(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_WindowVisualState(
        enum WindowVisualState *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_WindowInteractionState(
        enum WindowInteractionState *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsTopmost(
        WINBOOL *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWindowProvider, 0x987df77b, 0xdb06, 0x4d77, 0x8f,0x8a, 0x86,0xa9,0xc3,0xbb,0x90,0xb9)
#endif
#else
typedef struct IWindowProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWindowProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWindowProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWindowProvider *This);

    /*** IWindowProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *SetVisualState)(
        IWindowProvider *This,
        enum WindowVisualState state);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IWindowProvider *This);

    HRESULT (STDMETHODCALLTYPE *WaitForInputIdle)(
        IWindowProvider *This,
        int milliseconds,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanMaximize)(
        IWindowProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanMinimize)(
        IWindowProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_IsModal)(
        IWindowProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_WindowVisualState)(
        IWindowProvider *This,
        enum WindowVisualState *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_WindowInteractionState)(
        IWindowProvider *This,
        enum WindowInteractionState *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_IsTopmost)(
        IWindowProvider *This,
        WINBOOL *pRetVal);

    END_INTERFACE
} IWindowProviderVtbl;

interface IWindowProvider {
    CONST_VTBL IWindowProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWindowProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWindowProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWindowProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IWindowProvider methods ***/
#define IWindowProvider_SetVisualState(This,state) (This)->lpVtbl->SetVisualState(This,state)
#define IWindowProvider_Close(This) (This)->lpVtbl->Close(This)
#define IWindowProvider_WaitForInputIdle(This,milliseconds,pRetVal) (This)->lpVtbl->WaitForInputIdle(This,milliseconds,pRetVal)
#define IWindowProvider_get_CanMaximize(This,pRetVal) (This)->lpVtbl->get_CanMaximize(This,pRetVal)
#define IWindowProvider_get_CanMinimize(This,pRetVal) (This)->lpVtbl->get_CanMinimize(This,pRetVal)
#define IWindowProvider_get_IsModal(This,pRetVal) (This)->lpVtbl->get_IsModal(This,pRetVal)
#define IWindowProvider_get_WindowVisualState(This,pRetVal) (This)->lpVtbl->get_WindowVisualState(This,pRetVal)
#define IWindowProvider_get_WindowInteractionState(This,pRetVal) (This)->lpVtbl->get_WindowInteractionState(This,pRetVal)
#define IWindowProvider_get_IsTopmost(This,pRetVal) (This)->lpVtbl->get_IsTopmost(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IWindowProvider_QueryInterface(IWindowProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWindowProvider_AddRef(IWindowProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWindowProvider_Release(IWindowProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IWindowProvider methods ***/
static inline HRESULT IWindowProvider_SetVisualState(IWindowProvider* This,enum WindowVisualState state) {
    return This->lpVtbl->SetVisualState(This,state);
}
static inline HRESULT IWindowProvider_Close(IWindowProvider* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT IWindowProvider_WaitForInputIdle(IWindowProvider* This,int milliseconds,WINBOOL *pRetVal) {
    return This->lpVtbl->WaitForInputIdle(This,milliseconds,pRetVal);
}
static inline HRESULT IWindowProvider_get_CanMaximize(IWindowProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanMaximize(This,pRetVal);
}
static inline HRESULT IWindowProvider_get_CanMinimize(IWindowProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanMinimize(This,pRetVal);
}
static inline HRESULT IWindowProvider_get_IsModal(IWindowProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsModal(This,pRetVal);
}
static inline HRESULT IWindowProvider_get_WindowVisualState(IWindowProvider* This,enum WindowVisualState *pRetVal) {
    return This->lpVtbl->get_WindowVisualState(This,pRetVal);
}
static inline HRESULT IWindowProvider_get_WindowInteractionState(IWindowProvider* This,enum WindowInteractionState *pRetVal) {
    return This->lpVtbl->get_WindowInteractionState(This,pRetVal);
}
static inline HRESULT IWindowProvider_get_IsTopmost(IWindowProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsTopmost(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IWindowProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IItemContainerProvider interface
 */
#ifndef __IItemContainerProvider_INTERFACE_DEFINED__
#define __IItemContainerProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IItemContainerProvider, 0xe747770b, 0x39ce, 0x4382, 0xab,0x30, 0xd8,0xfb,0x3f,0x33,0x6f,0x24);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e747770b-39ce-4382-ab30-d8fb3f336f24")
IItemContainerProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE FindItemByProperty(
        IRawElementProviderSimple *pStartAfter,
        PROPERTYID propertyId,
        VARIANT value,
        IRawElementProviderSimple **pFound) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IItemContainerProvider, 0xe747770b, 0x39ce, 0x4382, 0xab,0x30, 0xd8,0xfb,0x3f,0x33,0x6f,0x24)
#endif
#else
typedef struct IItemContainerProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IItemContainerProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IItemContainerProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IItemContainerProvider *This);

    /*** IItemContainerProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *FindItemByProperty)(
        IItemContainerProvider *This,
        IRawElementProviderSimple *pStartAfter,
        PROPERTYID propertyId,
        VARIANT value,
        IRawElementProviderSimple **pFound);

    END_INTERFACE
} IItemContainerProviderVtbl;

interface IItemContainerProvider {
    CONST_VTBL IItemContainerProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IItemContainerProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IItemContainerProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IItemContainerProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IItemContainerProvider methods ***/
#define IItemContainerProvider_FindItemByProperty(This,pStartAfter,propertyId,value,pFound) (This)->lpVtbl->FindItemByProperty(This,pStartAfter,propertyId,value,pFound)
#else
/*** IUnknown methods ***/
static inline HRESULT IItemContainerProvider_QueryInterface(IItemContainerProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IItemContainerProvider_AddRef(IItemContainerProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IItemContainerProvider_Release(IItemContainerProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IItemContainerProvider methods ***/
static inline HRESULT IItemContainerProvider_FindItemByProperty(IItemContainerProvider* This,IRawElementProviderSimple *pStartAfter,PROPERTYID propertyId,VARIANT value,IRawElementProviderSimple **pFound) {
    return This->lpVtbl->FindItemByProperty(This,pStartAfter,propertyId,value,pFound);
}
#endif
#endif

#endif


#endif  /* __IItemContainerProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVirtualizedItemProvider interface
 */
#ifndef __IVirtualizedItemProvider_INTERFACE_DEFINED__
#define __IVirtualizedItemProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVirtualizedItemProvider, 0xcb98b665, 0x2d35, 0x4fac, 0xad,0x35, 0xf3,0xc6,0x0d,0x0c,0x0b,0x8b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cb98b665-2d35-4fac-ad35-f3c60d0c0b8b")
IVirtualizedItemProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Realize(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IVirtualizedItemProvider, 0xcb98b665, 0x2d35, 0x4fac, 0xad,0x35, 0xf3,0xc6,0x0d,0x0c,0x0b,0x8b)
#endif
#else
typedef struct IVirtualizedItemProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IVirtualizedItemProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IVirtualizedItemProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IVirtualizedItemProvider *This);

    /*** IVirtualizedItemProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Realize)(
        IVirtualizedItemProvider *This);

    END_INTERFACE
} IVirtualizedItemProviderVtbl;

interface IVirtualizedItemProvider {
    CONST_VTBL IVirtualizedItemProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IVirtualizedItemProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVirtualizedItemProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVirtualizedItemProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IVirtualizedItemProvider methods ***/
#define IVirtualizedItemProvider_Realize(This) (This)->lpVtbl->Realize(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IVirtualizedItemProvider_QueryInterface(IVirtualizedItemProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IVirtualizedItemProvider_AddRef(IVirtualizedItemProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IVirtualizedItemProvider_Release(IVirtualizedItemProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IVirtualizedItemProvider methods ***/
static inline HRESULT IVirtualizedItemProvider_Realize(IVirtualizedItemProvider* This) {
    return This->lpVtbl->Realize(This);
}
#endif
#endif

#endif


#endif  /* __IVirtualizedItemProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IObjectModelProvider interface
 */
#ifndef __IObjectModelProvider_INTERFACE_DEFINED__
#define __IObjectModelProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectModelProvider, 0x3ad86ebd, 0xf5ef, 0x483d, 0xbb,0x18, 0xb1,0x04,0x2a,0x47,0x5d,0x64);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3ad86ebd-f5ef-483d-bb18-b1042a475d64")
IObjectModelProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetUnderlyingObjectModel(
        IUnknown **ppUnknown) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectModelProvider, 0x3ad86ebd, 0xf5ef, 0x483d, 0xbb,0x18, 0xb1,0x04,0x2a,0x47,0x5d,0x64)
#endif
#else
typedef struct IObjectModelProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IObjectModelProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IObjectModelProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IObjectModelProvider *This);

    /*** IObjectModelProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetUnderlyingObjectModel)(
        IObjectModelProvider *This,
        IUnknown **ppUnknown);

    END_INTERFACE
} IObjectModelProviderVtbl;

interface IObjectModelProvider {
    CONST_VTBL IObjectModelProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectModelProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectModelProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectModelProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectModelProvider methods ***/
#define IObjectModelProvider_GetUnderlyingObjectModel(This,ppUnknown) (This)->lpVtbl->GetUnderlyingObjectModel(This,ppUnknown)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectModelProvider_QueryInterface(IObjectModelProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectModelProvider_AddRef(IObjectModelProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectModelProvider_Release(IObjectModelProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectModelProvider methods ***/
static inline HRESULT IObjectModelProvider_GetUnderlyingObjectModel(IObjectModelProvider* This,IUnknown **ppUnknown) {
    return This->lpVtbl->GetUnderlyingObjectModel(This,ppUnknown);
}
#endif
#endif

#endif


#endif  /* __IObjectModelProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAnnotationProvider interface
 */
#ifndef __IAnnotationProvider_INTERFACE_DEFINED__
#define __IAnnotationProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAnnotationProvider, 0xf95c7e80, 0xbd63, 0x4601, 0x97,0x82, 0x44,0x5e,0xbf,0xf0,0x11,0xfc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f95c7e80-bd63-4601-9782-445ebff011fc")
IAnnotationProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_AnnotationTypeId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AnnotationTypeName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Author(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DateTime(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Target(
        IRawElementProviderSimple **retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAnnotationProvider, 0xf95c7e80, 0xbd63, 0x4601, 0x97,0x82, 0x44,0x5e,0xbf,0xf0,0x11,0xfc)
#endif
#else
typedef struct IAnnotationProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAnnotationProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAnnotationProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAnnotationProvider *This);

    /*** IAnnotationProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AnnotationTypeId)(
        IAnnotationProvider *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_AnnotationTypeName)(
        IAnnotationProvider *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_Author)(
        IAnnotationProvider *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_DateTime)(
        IAnnotationProvider *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_Target)(
        IAnnotationProvider *This,
        IRawElementProviderSimple **retVal);

    END_INTERFACE
} IAnnotationProviderVtbl;

interface IAnnotationProvider {
    CONST_VTBL IAnnotationProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAnnotationProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAnnotationProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAnnotationProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IAnnotationProvider methods ***/
#define IAnnotationProvider_get_AnnotationTypeId(This,retVal) (This)->lpVtbl->get_AnnotationTypeId(This,retVal)
#define IAnnotationProvider_get_AnnotationTypeName(This,retVal) (This)->lpVtbl->get_AnnotationTypeName(This,retVal)
#define IAnnotationProvider_get_Author(This,retVal) (This)->lpVtbl->get_Author(This,retVal)
#define IAnnotationProvider_get_DateTime(This,retVal) (This)->lpVtbl->get_DateTime(This,retVal)
#define IAnnotationProvider_get_Target(This,retVal) (This)->lpVtbl->get_Target(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IAnnotationProvider_QueryInterface(IAnnotationProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAnnotationProvider_AddRef(IAnnotationProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAnnotationProvider_Release(IAnnotationProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IAnnotationProvider methods ***/
static inline HRESULT IAnnotationProvider_get_AnnotationTypeId(IAnnotationProvider* This,int *retVal) {
    return This->lpVtbl->get_AnnotationTypeId(This,retVal);
}
static inline HRESULT IAnnotationProvider_get_AnnotationTypeName(IAnnotationProvider* This,BSTR *retVal) {
    return This->lpVtbl->get_AnnotationTypeName(This,retVal);
}
static inline HRESULT IAnnotationProvider_get_Author(IAnnotationProvider* This,BSTR *retVal) {
    return This->lpVtbl->get_Author(This,retVal);
}
static inline HRESULT IAnnotationProvider_get_DateTime(IAnnotationProvider* This,BSTR *retVal) {
    return This->lpVtbl->get_DateTime(This,retVal);
}
static inline HRESULT IAnnotationProvider_get_Target(IAnnotationProvider* This,IRawElementProviderSimple **retVal) {
    return This->lpVtbl->get_Target(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IAnnotationProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IStylesProvider interface
 */
#ifndef __IStylesProvider_INTERFACE_DEFINED__
#define __IStylesProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IStylesProvider, 0x19b6b649, 0xf5d7, 0x4a6d, 0xbd,0xcb, 0x12,0x92,0x52,0xbe,0x58,0x8a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("19b6b649-f5d7-4a6d-bdcb-129252be588a")
IStylesProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_StyleId(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_StyleName(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FillColor(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FillPatternStyle(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Shape(
        BSTR *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FillPatternColor(
        int *retVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
        BSTR *retVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IStylesProvider, 0x19b6b649, 0xf5d7, 0x4a6d, 0xbd,0xcb, 0x12,0x92,0x52,0xbe,0x58,0x8a)
#endif
#else
typedef struct IStylesProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IStylesProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IStylesProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IStylesProvider *This);

    /*** IStylesProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *get_StyleId)(
        IStylesProvider *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_StyleName)(
        IStylesProvider *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_FillColor)(
        IStylesProvider *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_FillPatternStyle)(
        IStylesProvider *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_Shape)(
        IStylesProvider *This,
        BSTR *retVal);

    HRESULT (STDMETHODCALLTYPE *get_FillPatternColor)(
        IStylesProvider *This,
        int *retVal);

    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
        IStylesProvider *This,
        BSTR *retVal);

    END_INTERFACE
} IStylesProviderVtbl;

interface IStylesProvider {
    CONST_VTBL IStylesProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IStylesProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IStylesProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IStylesProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IStylesProvider methods ***/
#define IStylesProvider_get_StyleId(This,retVal) (This)->lpVtbl->get_StyleId(This,retVal)
#define IStylesProvider_get_StyleName(This,retVal) (This)->lpVtbl->get_StyleName(This,retVal)
#define IStylesProvider_get_FillColor(This,retVal) (This)->lpVtbl->get_FillColor(This,retVal)
#define IStylesProvider_get_FillPatternStyle(This,retVal) (This)->lpVtbl->get_FillPatternStyle(This,retVal)
#define IStylesProvider_get_Shape(This,retVal) (This)->lpVtbl->get_Shape(This,retVal)
#define IStylesProvider_get_FillPatternColor(This,retVal) (This)->lpVtbl->get_FillPatternColor(This,retVal)
#define IStylesProvider_get_ExtendedProperties(This,retVal) (This)->lpVtbl->get_ExtendedProperties(This,retVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IStylesProvider_QueryInterface(IStylesProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IStylesProvider_AddRef(IStylesProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IStylesProvider_Release(IStylesProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IStylesProvider methods ***/
static inline HRESULT IStylesProvider_get_StyleId(IStylesProvider* This,int *retVal) {
    return This->lpVtbl->get_StyleId(This,retVal);
}
static inline HRESULT IStylesProvider_get_StyleName(IStylesProvider* This,BSTR *retVal) {
    return This->lpVtbl->get_StyleName(This,retVal);
}
static inline HRESULT IStylesProvider_get_FillColor(IStylesProvider* This,int *retVal) {
    return This->lpVtbl->get_FillColor(This,retVal);
}
static inline HRESULT IStylesProvider_get_FillPatternStyle(IStylesProvider* This,BSTR *retVal) {
    return This->lpVtbl->get_FillPatternStyle(This,retVal);
}
static inline HRESULT IStylesProvider_get_Shape(IStylesProvider* This,BSTR *retVal) {
    return This->lpVtbl->get_Shape(This,retVal);
}
static inline HRESULT IStylesProvider_get_FillPatternColor(IStylesProvider* This,int *retVal) {
    return This->lpVtbl->get_FillPatternColor(This,retVal);
}
static inline HRESULT IStylesProvider_get_ExtendedProperties(IStylesProvider* This,BSTR *retVal) {
    return This->lpVtbl->get_ExtendedProperties(This,retVal);
}
#endif
#endif

#endif


#endif  /* __IStylesProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpreadsheetProvider interface
 */
#ifndef __ISpreadsheetProvider_INTERFACE_DEFINED__
#define __ISpreadsheetProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpreadsheetProvider, 0x6f6b5d35, 0x5525, 0x4f80, 0xb7,0x58, 0x85,0x47,0x38,0x32,0xff,0xc7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6f6b5d35-5525-4f80-b758-85473832ffc7")
ISpreadsheetProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetItemByName(
        LPCWSTR name,
        IRawElementProviderSimple **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpreadsheetProvider, 0x6f6b5d35, 0x5525, 0x4f80, 0xb7,0x58, 0x85,0x47,0x38,0x32,0xff,0xc7)
#endif
#else
typedef struct ISpreadsheetProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpreadsheetProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpreadsheetProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpreadsheetProvider *This);

    /*** ISpreadsheetProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemByName)(
        ISpreadsheetProvider *This,
        LPCWSTR name,
        IRawElementProviderSimple **pRetVal);

    END_INTERFACE
} ISpreadsheetProviderVtbl;

interface ISpreadsheetProvider {
    CONST_VTBL ISpreadsheetProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpreadsheetProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpreadsheetProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpreadsheetProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ISpreadsheetProvider methods ***/
#define ISpreadsheetProvider_GetItemByName(This,name,pRetVal) (This)->lpVtbl->GetItemByName(This,name,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ISpreadsheetProvider_QueryInterface(ISpreadsheetProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISpreadsheetProvider_AddRef(ISpreadsheetProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISpreadsheetProvider_Release(ISpreadsheetProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpreadsheetProvider methods ***/
static inline HRESULT ISpreadsheetProvider_GetItemByName(ISpreadsheetProvider* This,LPCWSTR name,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->GetItemByName(This,name,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ISpreadsheetProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISpreadsheetItemProvider interface
 */
#ifndef __ISpreadsheetItemProvider_INTERFACE_DEFINED__
#define __ISpreadsheetItemProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISpreadsheetItemProvider, 0xeaed4660, 0x7b3d, 0x4879, 0xa2,0xe6, 0x36,0x5c,0xe6,0x03,0xf3,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eaed4660-7b3d-4879-a2e6-365ce603f3d0")
ISpreadsheetItemProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_Formula(
        BSTR *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAnnotationObjects(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAnnotationTypes(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISpreadsheetItemProvider, 0xeaed4660, 0x7b3d, 0x4879, 0xa2,0xe6, 0x36,0x5c,0xe6,0x03,0xf3,0xd0)
#endif
#else
typedef struct ISpreadsheetItemProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISpreadsheetItemProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISpreadsheetItemProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISpreadsheetItemProvider *This);

    /*** ISpreadsheetItemProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Formula)(
        ISpreadsheetItemProvider *This,
        BSTR *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetAnnotationObjects)(
        ISpreadsheetItemProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetAnnotationTypes)(
        ISpreadsheetItemProvider *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} ISpreadsheetItemProviderVtbl;

interface ISpreadsheetItemProvider {
    CONST_VTBL ISpreadsheetItemProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISpreadsheetItemProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISpreadsheetItemProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISpreadsheetItemProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ISpreadsheetItemProvider methods ***/
#define ISpreadsheetItemProvider_get_Formula(This,pRetVal) (This)->lpVtbl->get_Formula(This,pRetVal)
#define ISpreadsheetItemProvider_GetAnnotationObjects(This,pRetVal) (This)->lpVtbl->GetAnnotationObjects(This,pRetVal)
#define ISpreadsheetItemProvider_GetAnnotationTypes(This,pRetVal) (This)->lpVtbl->GetAnnotationTypes(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ISpreadsheetItemProvider_QueryInterface(ISpreadsheetItemProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISpreadsheetItemProvider_AddRef(ISpreadsheetItemProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISpreadsheetItemProvider_Release(ISpreadsheetItemProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ISpreadsheetItemProvider methods ***/
static inline HRESULT ISpreadsheetItemProvider_get_Formula(ISpreadsheetItemProvider* This,BSTR *pRetVal) {
    return This->lpVtbl->get_Formula(This,pRetVal);
}
static inline HRESULT ISpreadsheetItemProvider_GetAnnotationObjects(ISpreadsheetItemProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetAnnotationObjects(This,pRetVal);
}
static inline HRESULT ISpreadsheetItemProvider_GetAnnotationTypes(ISpreadsheetItemProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetAnnotationTypes(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ISpreadsheetItemProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransformProvider2 interface
 */
#ifndef __ITransformProvider2_INTERFACE_DEFINED__
#define __ITransformProvider2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransformProvider2, 0x4758742f, 0x7ac2, 0x460c, 0xbc,0x48, 0x09,0xfc,0x09,0x30,0x8a,0x93);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4758742f-7ac2-460c-bc48-09fc09308a93")
ITransformProvider2 : public ITransformProvider
{
    virtual HRESULT STDMETHODCALLTYPE Zoom(
        double zoom) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CanZoom(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ZoomLevel(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ZoomMinimum(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ZoomMaximum(
        double *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE ZoomByUnit(
        enum ZoomUnit zoomUnit) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransformProvider2, 0x4758742f, 0x7ac2, 0x460c, 0xbc,0x48, 0x09,0xfc,0x09,0x30,0x8a,0x93)
#endif
#else
typedef struct ITransformProvider2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITransformProvider2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITransformProvider2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITransformProvider2 *This);

    /*** ITransformProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Move)(
        ITransformProvider2 *This,
        double x,
        double y);

    HRESULT (STDMETHODCALLTYPE *Resize)(
        ITransformProvider2 *This,
        double width,
        double height);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        ITransformProvider2 *This,
        double degrees);

    HRESULT (STDMETHODCALLTYPE *get_CanMove)(
        ITransformProvider2 *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanResize)(
        ITransformProvider2 *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_CanRotate)(
        ITransformProvider2 *This,
        WINBOOL *pRetVal);

    /*** ITransformProvider2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Zoom)(
        ITransformProvider2 *This,
        double zoom);

    HRESULT (STDMETHODCALLTYPE *get_CanZoom)(
        ITransformProvider2 *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_ZoomLevel)(
        ITransformProvider2 *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_ZoomMinimum)(
        ITransformProvider2 *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_ZoomMaximum)(
        ITransformProvider2 *This,
        double *pRetVal);

    HRESULT (STDMETHODCALLTYPE *ZoomByUnit)(
        ITransformProvider2 *This,
        enum ZoomUnit zoomUnit);

    END_INTERFACE
} ITransformProvider2Vtbl;

interface ITransformProvider2 {
    CONST_VTBL ITransformProvider2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransformProvider2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransformProvider2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransformProvider2_Release(This) (This)->lpVtbl->Release(This)
/*** ITransformProvider methods ***/
#define ITransformProvider2_Move(This,x,y) (This)->lpVtbl->Move(This,x,y)
#define ITransformProvider2_Resize(This,width,height) (This)->lpVtbl->Resize(This,width,height)
#define ITransformProvider2_Rotate(This,degrees) (This)->lpVtbl->Rotate(This,degrees)
#define ITransformProvider2_get_CanMove(This,pRetVal) (This)->lpVtbl->get_CanMove(This,pRetVal)
#define ITransformProvider2_get_CanResize(This,pRetVal) (This)->lpVtbl->get_CanResize(This,pRetVal)
#define ITransformProvider2_get_CanRotate(This,pRetVal) (This)->lpVtbl->get_CanRotate(This,pRetVal)
/*** ITransformProvider2 methods ***/
#define ITransformProvider2_Zoom(This,zoom) (This)->lpVtbl->Zoom(This,zoom)
#define ITransformProvider2_get_CanZoom(This,pRetVal) (This)->lpVtbl->get_CanZoom(This,pRetVal)
#define ITransformProvider2_get_ZoomLevel(This,pRetVal) (This)->lpVtbl->get_ZoomLevel(This,pRetVal)
#define ITransformProvider2_get_ZoomMinimum(This,pRetVal) (This)->lpVtbl->get_ZoomMinimum(This,pRetVal)
#define ITransformProvider2_get_ZoomMaximum(This,pRetVal) (This)->lpVtbl->get_ZoomMaximum(This,pRetVal)
#define ITransformProvider2_ZoomByUnit(This,zoomUnit) (This)->lpVtbl->ZoomByUnit(This,zoomUnit)
#else
/*** IUnknown methods ***/
static inline HRESULT ITransformProvider2_QueryInterface(ITransformProvider2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITransformProvider2_AddRef(ITransformProvider2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITransformProvider2_Release(ITransformProvider2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransformProvider methods ***/
static inline HRESULT ITransformProvider2_Move(ITransformProvider2* This,double x,double y) {
    return This->lpVtbl->Move(This,x,y);
}
static inline HRESULT ITransformProvider2_Resize(ITransformProvider2* This,double width,double height) {
    return This->lpVtbl->Resize(This,width,height);
}
static inline HRESULT ITransformProvider2_Rotate(ITransformProvider2* This,double degrees) {
    return This->lpVtbl->Rotate(This,degrees);
}
static inline HRESULT ITransformProvider2_get_CanMove(ITransformProvider2* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanMove(This,pRetVal);
}
static inline HRESULT ITransformProvider2_get_CanResize(ITransformProvider2* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanResize(This,pRetVal);
}
static inline HRESULT ITransformProvider2_get_CanRotate(ITransformProvider2* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanRotate(This,pRetVal);
}
/*** ITransformProvider2 methods ***/
static inline HRESULT ITransformProvider2_Zoom(ITransformProvider2* This,double zoom) {
    return This->lpVtbl->Zoom(This,zoom);
}
static inline HRESULT ITransformProvider2_get_CanZoom(ITransformProvider2* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_CanZoom(This,pRetVal);
}
static inline HRESULT ITransformProvider2_get_ZoomLevel(ITransformProvider2* This,double *pRetVal) {
    return This->lpVtbl->get_ZoomLevel(This,pRetVal);
}
static inline HRESULT ITransformProvider2_get_ZoomMinimum(ITransformProvider2* This,double *pRetVal) {
    return This->lpVtbl->get_ZoomMinimum(This,pRetVal);
}
static inline HRESULT ITransformProvider2_get_ZoomMaximum(ITransformProvider2* This,double *pRetVal) {
    return This->lpVtbl->get_ZoomMaximum(This,pRetVal);
}
static inline HRESULT ITransformProvider2_ZoomByUnit(ITransformProvider2* This,enum ZoomUnit zoomUnit) {
    return This->lpVtbl->ZoomByUnit(This,zoomUnit);
}
#endif
#endif

#endif


#endif  /* __ITransformProvider2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDragProvider interface
 */
#ifndef __IDragProvider_INTERFACE_DEFINED__
#define __IDragProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDragProvider, 0x6aa7bbbb, 0x7ff9, 0x497d, 0x90,0x4f, 0xd2,0x0b,0x89,0x79,0x29,0xd8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6aa7bbbb-7ff9-497d-904f-d20b897929d8")
IDragProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_IsGrabbed(
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DropEffect(
        BSTR *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DropEffects(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGrabbedItems(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDragProvider, 0x6aa7bbbb, 0x7ff9, 0x497d, 0x90,0x4f, 0xd2,0x0b,0x89,0x79,0x29,0xd8)
#endif
#else
typedef struct IDragProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDragProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDragProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDragProvider *This);

    /*** IDragProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *get_IsGrabbed)(
        IDragProvider *This,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_DropEffect)(
        IDragProvider *This,
        BSTR *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_DropEffects)(
        IDragProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetGrabbedItems)(
        IDragProvider *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} IDragProviderVtbl;

interface IDragProvider {
    CONST_VTBL IDragProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDragProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDragProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDragProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IDragProvider methods ***/
#define IDragProvider_get_IsGrabbed(This,pRetVal) (This)->lpVtbl->get_IsGrabbed(This,pRetVal)
#define IDragProvider_get_DropEffect(This,pRetVal) (This)->lpVtbl->get_DropEffect(This,pRetVal)
#define IDragProvider_get_DropEffects(This,pRetVal) (This)->lpVtbl->get_DropEffects(This,pRetVal)
#define IDragProvider_GetGrabbedItems(This,pRetVal) (This)->lpVtbl->GetGrabbedItems(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IDragProvider_QueryInterface(IDragProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDragProvider_AddRef(IDragProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDragProvider_Release(IDragProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IDragProvider methods ***/
static inline HRESULT IDragProvider_get_IsGrabbed(IDragProvider* This,WINBOOL *pRetVal) {
    return This->lpVtbl->get_IsGrabbed(This,pRetVal);
}
static inline HRESULT IDragProvider_get_DropEffect(IDragProvider* This,BSTR *pRetVal) {
    return This->lpVtbl->get_DropEffect(This,pRetVal);
}
static inline HRESULT IDragProvider_get_DropEffects(IDragProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->get_DropEffects(This,pRetVal);
}
static inline HRESULT IDragProvider_GetGrabbedItems(IDragProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetGrabbedItems(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IDragProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDropTargetProvider interface
 */
#ifndef __IDropTargetProvider_INTERFACE_DEFINED__
#define __IDropTargetProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDropTargetProvider, 0xbae82bfd, 0x358a, 0x481c, 0x85,0xa0, 0xd8,0xb4,0xd9,0x0a,0x5d,0x61);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bae82bfd-358a-481c-85a0-d8b4d90a5d61")
IDropTargetProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_DropTargetEffect(
        BSTR *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DropTargetEffects(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDropTargetProvider, 0xbae82bfd, 0x358a, 0x481c, 0x85,0xa0, 0xd8,0xb4,0xd9,0x0a,0x5d,0x61)
#endif
#else
typedef struct IDropTargetProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDropTargetProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDropTargetProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDropTargetProvider *This);

    /*** IDropTargetProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *get_DropTargetEffect)(
        IDropTargetProvider *This,
        BSTR *pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_DropTargetEffects)(
        IDropTargetProvider *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} IDropTargetProviderVtbl;

interface IDropTargetProvider {
    CONST_VTBL IDropTargetProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDropTargetProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDropTargetProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDropTargetProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IDropTargetProvider methods ***/
#define IDropTargetProvider_get_DropTargetEffect(This,pRetVal) (This)->lpVtbl->get_DropTargetEffect(This,pRetVal)
#define IDropTargetProvider_get_DropTargetEffects(This,pRetVal) (This)->lpVtbl->get_DropTargetEffects(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT IDropTargetProvider_QueryInterface(IDropTargetProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDropTargetProvider_AddRef(IDropTargetProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDropTargetProvider_Release(IDropTargetProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IDropTargetProvider methods ***/
static inline HRESULT IDropTargetProvider_get_DropTargetEffect(IDropTargetProvider* This,BSTR *pRetVal) {
    return This->lpVtbl->get_DropTargetEffect(This,pRetVal);
}
static inline HRESULT IDropTargetProvider_get_DropTargetEffects(IDropTargetProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->get_DropTargetEffects(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __IDropTargetProvider_INTERFACE_DEFINED__ */

#ifndef __ITextRangeProvider_FWD_DEFINED__
#define __ITextRangeProvider_FWD_DEFINED__
typedef interface ITextRangeProvider ITextRangeProvider;
#ifdef __cplusplus
interface ITextRangeProvider;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * ITextProvider interface
 */
#ifndef __ITextProvider_INTERFACE_DEFINED__
#define __ITextProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextProvider, 0x3589c92c, 0x63f3, 0x4367, 0x99,0xbb, 0xad,0xa6,0x53,0xb7,0x7c,0xf2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3589c92c-63f3-4367-99bb-ada653b77cf2")
ITextProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSelection(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVisibleRanges(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE RangeFromChild(
        IRawElementProviderSimple *childElement,
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE RangeFromPoint(
        struct UiaPoint point,
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DocumentRange(
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SupportedTextSelection(
        enum SupportedTextSelection *pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextProvider, 0x3589c92c, 0x63f3, 0x4367, 0x99,0xbb, 0xad,0xa6,0x53,0xb7,0x7c,0xf2)
#endif
#else
typedef struct ITextProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITextProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITextProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITextProvider *This);

    /*** ITextProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        ITextProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetVisibleRanges)(
        ITextProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *RangeFromChild)(
        ITextProvider *This,
        IRawElementProviderSimple *childElement,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *RangeFromPoint)(
        ITextProvider *This,
        struct UiaPoint point,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_DocumentRange)(
        ITextProvider *This,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_SupportedTextSelection)(
        ITextProvider *This,
        enum SupportedTextSelection *pRetVal);

    END_INTERFACE
} ITextProviderVtbl;

interface ITextProvider {
    CONST_VTBL ITextProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ITextProvider methods ***/
#define ITextProvider_GetSelection(This,pRetVal) (This)->lpVtbl->GetSelection(This,pRetVal)
#define ITextProvider_GetVisibleRanges(This,pRetVal) (This)->lpVtbl->GetVisibleRanges(This,pRetVal)
#define ITextProvider_RangeFromChild(This,childElement,pRetVal) (This)->lpVtbl->RangeFromChild(This,childElement,pRetVal)
#define ITextProvider_RangeFromPoint(This,point,pRetVal) (This)->lpVtbl->RangeFromPoint(This,point,pRetVal)
#define ITextProvider_get_DocumentRange(This,pRetVal) (This)->lpVtbl->get_DocumentRange(This,pRetVal)
#define ITextProvider_get_SupportedTextSelection(This,pRetVal) (This)->lpVtbl->get_SupportedTextSelection(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextProvider_QueryInterface(ITextProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextProvider_AddRef(ITextProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextProvider_Release(ITextProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextProvider methods ***/
static inline HRESULT ITextProvider_GetSelection(ITextProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetSelection(This,pRetVal);
}
static inline HRESULT ITextProvider_GetVisibleRanges(ITextProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetVisibleRanges(This,pRetVal);
}
static inline HRESULT ITextProvider_RangeFromChild(ITextProvider* This,IRawElementProviderSimple *childElement,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->RangeFromChild(This,childElement,pRetVal);
}
static inline HRESULT ITextProvider_RangeFromPoint(ITextProvider* This,struct UiaPoint point,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->RangeFromPoint(This,point,pRetVal);
}
static inline HRESULT ITextProvider_get_DocumentRange(ITextProvider* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->get_DocumentRange(This,pRetVal);
}
static inline HRESULT ITextProvider_get_SupportedTextSelection(ITextProvider* This,enum SupportedTextSelection *pRetVal) {
    return This->lpVtbl->get_SupportedTextSelection(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITextProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITextProvider2 interface
 */
#ifndef __ITextProvider2_INTERFACE_DEFINED__
#define __ITextProvider2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextProvider2, 0x0dc5e6ed, 0x3e16, 0x4bf1, 0x8f,0x9a, 0xa9,0x79,0x87,0x8b,0xc1,0x95);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0dc5e6ed-3e16-4bf1-8f9a-a979878bc195")
ITextProvider2 : public ITextProvider
{
    virtual HRESULT STDMETHODCALLTYPE RangeFromAnnotation(
        IRawElementProviderSimple *annotationElement,
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCaretRange(
        WINBOOL *isActive,
        ITextRangeProvider **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextProvider2, 0x0dc5e6ed, 0x3e16, 0x4bf1, 0x8f,0x9a, 0xa9,0x79,0x87,0x8b,0xc1,0x95)
#endif
#else
typedef struct ITextProvider2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITextProvider2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITextProvider2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITextProvider2 *This);

    /*** ITextProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        ITextProvider2 *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetVisibleRanges)(
        ITextProvider2 *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *RangeFromChild)(
        ITextProvider2 *This,
        IRawElementProviderSimple *childElement,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *RangeFromPoint)(
        ITextProvider2 *This,
        struct UiaPoint point,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_DocumentRange)(
        ITextProvider2 *This,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_SupportedTextSelection)(
        ITextProvider2 *This,
        enum SupportedTextSelection *pRetVal);

    /*** ITextProvider2 methods ***/
    HRESULT (STDMETHODCALLTYPE *RangeFromAnnotation)(
        ITextProvider2 *This,
        IRawElementProviderSimple *annotationElement,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetCaretRange)(
        ITextProvider2 *This,
        WINBOOL *isActive,
        ITextRangeProvider **pRetVal);

    END_INTERFACE
} ITextProvider2Vtbl;

interface ITextProvider2 {
    CONST_VTBL ITextProvider2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextProvider2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextProvider2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextProvider2_Release(This) (This)->lpVtbl->Release(This)
/*** ITextProvider methods ***/
#define ITextProvider2_GetSelection(This,pRetVal) (This)->lpVtbl->GetSelection(This,pRetVal)
#define ITextProvider2_GetVisibleRanges(This,pRetVal) (This)->lpVtbl->GetVisibleRanges(This,pRetVal)
#define ITextProvider2_RangeFromChild(This,childElement,pRetVal) (This)->lpVtbl->RangeFromChild(This,childElement,pRetVal)
#define ITextProvider2_RangeFromPoint(This,point,pRetVal) (This)->lpVtbl->RangeFromPoint(This,point,pRetVal)
#define ITextProvider2_get_DocumentRange(This,pRetVal) (This)->lpVtbl->get_DocumentRange(This,pRetVal)
#define ITextProvider2_get_SupportedTextSelection(This,pRetVal) (This)->lpVtbl->get_SupportedTextSelection(This,pRetVal)
/*** ITextProvider2 methods ***/
#define ITextProvider2_RangeFromAnnotation(This,annotationElement,pRetVal) (This)->lpVtbl->RangeFromAnnotation(This,annotationElement,pRetVal)
#define ITextProvider2_GetCaretRange(This,isActive,pRetVal) (This)->lpVtbl->GetCaretRange(This,isActive,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextProvider2_QueryInterface(ITextProvider2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextProvider2_AddRef(ITextProvider2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextProvider2_Release(ITextProvider2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextProvider methods ***/
static inline HRESULT ITextProvider2_GetSelection(ITextProvider2* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetSelection(This,pRetVal);
}
static inline HRESULT ITextProvider2_GetVisibleRanges(ITextProvider2* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetVisibleRanges(This,pRetVal);
}
static inline HRESULT ITextProvider2_RangeFromChild(ITextProvider2* This,IRawElementProviderSimple *childElement,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->RangeFromChild(This,childElement,pRetVal);
}
static inline HRESULT ITextProvider2_RangeFromPoint(ITextProvider2* This,struct UiaPoint point,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->RangeFromPoint(This,point,pRetVal);
}
static inline HRESULT ITextProvider2_get_DocumentRange(ITextProvider2* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->get_DocumentRange(This,pRetVal);
}
static inline HRESULT ITextProvider2_get_SupportedTextSelection(ITextProvider2* This,enum SupportedTextSelection *pRetVal) {
    return This->lpVtbl->get_SupportedTextSelection(This,pRetVal);
}
/*** ITextProvider2 methods ***/
static inline HRESULT ITextProvider2_RangeFromAnnotation(ITextProvider2* This,IRawElementProviderSimple *annotationElement,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->RangeFromAnnotation(This,annotationElement,pRetVal);
}
static inline HRESULT ITextProvider2_GetCaretRange(ITextProvider2* This,WINBOOL *isActive,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->GetCaretRange(This,isActive,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITextProvider2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITextEditProvider interface
 */
#ifndef __ITextEditProvider_INTERFACE_DEFINED__
#define __ITextEditProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextEditProvider, 0xea3605b4, 0x3a05, 0x400e, 0xb5,0xf9, 0x4e,0x91,0xb4,0x0f,0x61,0x76);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ea3605b4-3a05-400e-b5f9-4e91b40f6176")
ITextEditProvider : public ITextProvider
{
    virtual HRESULT STDMETHODCALLTYPE GetActiveComposition(
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConversionTarget(
        ITextRangeProvider **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextEditProvider, 0xea3605b4, 0x3a05, 0x400e, 0xb5,0xf9, 0x4e,0x91,0xb4,0x0f,0x61,0x76)
#endif
#else
typedef struct ITextEditProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITextEditProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITextEditProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITextEditProvider *This);

    /*** ITextProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        ITextEditProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetVisibleRanges)(
        ITextEditProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *RangeFromChild)(
        ITextEditProvider *This,
        IRawElementProviderSimple *childElement,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *RangeFromPoint)(
        ITextEditProvider *This,
        struct UiaPoint point,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_DocumentRange)(
        ITextEditProvider *This,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_SupportedTextSelection)(
        ITextEditProvider *This,
        enum SupportedTextSelection *pRetVal);

    /*** ITextEditProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetActiveComposition)(
        ITextEditProvider *This,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetConversionTarget)(
        ITextEditProvider *This,
        ITextRangeProvider **pRetVal);

    END_INTERFACE
} ITextEditProviderVtbl;

interface ITextEditProvider {
    CONST_VTBL ITextEditProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextEditProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextEditProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextEditProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ITextProvider methods ***/
#define ITextEditProvider_GetSelection(This,pRetVal) (This)->lpVtbl->GetSelection(This,pRetVal)
#define ITextEditProvider_GetVisibleRanges(This,pRetVal) (This)->lpVtbl->GetVisibleRanges(This,pRetVal)
#define ITextEditProvider_RangeFromChild(This,childElement,pRetVal) (This)->lpVtbl->RangeFromChild(This,childElement,pRetVal)
#define ITextEditProvider_RangeFromPoint(This,point,pRetVal) (This)->lpVtbl->RangeFromPoint(This,point,pRetVal)
#define ITextEditProvider_get_DocumentRange(This,pRetVal) (This)->lpVtbl->get_DocumentRange(This,pRetVal)
#define ITextEditProvider_get_SupportedTextSelection(This,pRetVal) (This)->lpVtbl->get_SupportedTextSelection(This,pRetVal)
/*** ITextEditProvider methods ***/
#define ITextEditProvider_GetActiveComposition(This,pRetVal) (This)->lpVtbl->GetActiveComposition(This,pRetVal)
#define ITextEditProvider_GetConversionTarget(This,pRetVal) (This)->lpVtbl->GetConversionTarget(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextEditProvider_QueryInterface(ITextEditProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextEditProvider_AddRef(ITextEditProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextEditProvider_Release(ITextEditProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextProvider methods ***/
static inline HRESULT ITextEditProvider_GetSelection(ITextEditProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetSelection(This,pRetVal);
}
static inline HRESULT ITextEditProvider_GetVisibleRanges(ITextEditProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetVisibleRanges(This,pRetVal);
}
static inline HRESULT ITextEditProvider_RangeFromChild(ITextEditProvider* This,IRawElementProviderSimple *childElement,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->RangeFromChild(This,childElement,pRetVal);
}
static inline HRESULT ITextEditProvider_RangeFromPoint(ITextEditProvider* This,struct UiaPoint point,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->RangeFromPoint(This,point,pRetVal);
}
static inline HRESULT ITextEditProvider_get_DocumentRange(ITextEditProvider* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->get_DocumentRange(This,pRetVal);
}
static inline HRESULT ITextEditProvider_get_SupportedTextSelection(ITextEditProvider* This,enum SupportedTextSelection *pRetVal) {
    return This->lpVtbl->get_SupportedTextSelection(This,pRetVal);
}
/*** ITextEditProvider methods ***/
static inline HRESULT ITextEditProvider_GetActiveComposition(ITextEditProvider* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->GetActiveComposition(This,pRetVal);
}
static inline HRESULT ITextEditProvider_GetConversionTarget(ITextEditProvider* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->GetConversionTarget(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITextEditProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITextRangeProvider interface
 */
#ifndef __ITextRangeProvider_INTERFACE_DEFINED__
#define __ITextRangeProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextRangeProvider, 0x5347ad7b, 0xc355, 0x46f8, 0xaf,0xf5, 0x90,0x90,0x33,0x58,0x2f,0x63);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5347ad7b-c355-46f8-aff5-909033582f63")
ITextRangeProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Clone(
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE Compare(
        ITextRangeProvider *range,
        WINBOOL *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE CompareEndpoints(
        enum TextPatternRangeEndpoint endpoint,
        ITextRangeProvider *targetRange,
        enum TextPatternRangeEndpoint targetEndpoint,
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExpandToEnclosingUnit(
        enum TextUnit unit) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindAttribute(
        TEXTATTRIBUTEID attributeId,
        VARIANT val,
        WINBOOL backward,
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindText(
        BSTR text,
        WINBOOL backward,
        WINBOOL ignoreCase,
        ITextRangeProvider **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAttributeValue(
        TEXTATTRIBUTEID attributeId,
        VARIANT *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBoundingRectangles(
        SAFEARRAY **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnclosingElement(
        IRawElementProviderSimple **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetText(
        int maxLength,
        BSTR *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE Move(
        enum TextUnit unit,
        int count,
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveEndpointByUnit(
        enum TextPatternRangeEndpoint endpoint,
        enum TextUnit unit,
        int count,
        int *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveEndpointByRange(
        enum TextPatternRangeEndpoint endpoint,
        ITextRangeProvider *targetRange,
        enum TextPatternRangeEndpoint targetEndpoint) = 0;

    virtual HRESULT STDMETHODCALLTYPE Select(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddToSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveFromSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScrollIntoView(
        WINBOOL alignToTop) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetChildren(
        SAFEARRAY **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextRangeProvider, 0x5347ad7b, 0xc355, 0x46f8, 0xaf,0xf5, 0x90,0x90,0x33,0x58,0x2f,0x63)
#endif
#else
typedef struct ITextRangeProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITextRangeProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITextRangeProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITextRangeProvider *This);

    /*** ITextRangeProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        ITextRangeProvider *This,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *Compare)(
        ITextRangeProvider *This,
        ITextRangeProvider *range,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *CompareEndpoints)(
        ITextRangeProvider *This,
        enum TextPatternRangeEndpoint endpoint,
        ITextRangeProvider *targetRange,
        enum TextPatternRangeEndpoint targetEndpoint,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *ExpandToEnclosingUnit)(
        ITextRangeProvider *This,
        enum TextUnit unit);

    HRESULT (STDMETHODCALLTYPE *FindAttribute)(
        ITextRangeProvider *This,
        TEXTATTRIBUTEID attributeId,
        VARIANT val,
        WINBOOL backward,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *FindText)(
        ITextRangeProvider *This,
        BSTR text,
        WINBOOL backward,
        WINBOOL ignoreCase,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetAttributeValue)(
        ITextRangeProvider *This,
        TEXTATTRIBUTEID attributeId,
        VARIANT *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetBoundingRectangles)(
        ITextRangeProvider *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetEnclosingElement)(
        ITextRangeProvider *This,
        IRawElementProviderSimple **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        ITextRangeProvider *This,
        int maxLength,
        BSTR *pRetVal);

    HRESULT (STDMETHODCALLTYPE *Move)(
        ITextRangeProvider *This,
        enum TextUnit unit,
        int count,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByUnit)(
        ITextRangeProvider *This,
        enum TextPatternRangeEndpoint endpoint,
        enum TextUnit unit,
        int count,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByRange)(
        ITextRangeProvider *This,
        enum TextPatternRangeEndpoint endpoint,
        ITextRangeProvider *targetRange,
        enum TextPatternRangeEndpoint targetEndpoint);

    HRESULT (STDMETHODCALLTYPE *Select)(
        ITextRangeProvider *This);

    HRESULT (STDMETHODCALLTYPE *AddToSelection)(
        ITextRangeProvider *This);

    HRESULT (STDMETHODCALLTYPE *RemoveFromSelection)(
        ITextRangeProvider *This);

    HRESULT (STDMETHODCALLTYPE *ScrollIntoView)(
        ITextRangeProvider *This,
        WINBOOL alignToTop);

    HRESULT (STDMETHODCALLTYPE *GetChildren)(
        ITextRangeProvider *This,
        SAFEARRAY **pRetVal);

    END_INTERFACE
} ITextRangeProviderVtbl;

interface ITextRangeProvider {
    CONST_VTBL ITextRangeProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextRangeProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextRangeProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextRangeProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ITextRangeProvider methods ***/
#define ITextRangeProvider_Clone(This,pRetVal) (This)->lpVtbl->Clone(This,pRetVal)
#define ITextRangeProvider_Compare(This,range,pRetVal) (This)->lpVtbl->Compare(This,range,pRetVal)
#define ITextRangeProvider_CompareEndpoints(This,endpoint,targetRange,targetEndpoint,pRetVal) (This)->lpVtbl->CompareEndpoints(This,endpoint,targetRange,targetEndpoint,pRetVal)
#define ITextRangeProvider_ExpandToEnclosingUnit(This,unit) (This)->lpVtbl->ExpandToEnclosingUnit(This,unit)
#define ITextRangeProvider_FindAttribute(This,attributeId,val,backward,pRetVal) (This)->lpVtbl->FindAttribute(This,attributeId,val,backward,pRetVal)
#define ITextRangeProvider_FindText(This,text,backward,ignoreCase,pRetVal) (This)->lpVtbl->FindText(This,text,backward,ignoreCase,pRetVal)
#define ITextRangeProvider_GetAttributeValue(This,attributeId,pRetVal) (This)->lpVtbl->GetAttributeValue(This,attributeId,pRetVal)
#define ITextRangeProvider_GetBoundingRectangles(This,pRetVal) (This)->lpVtbl->GetBoundingRectangles(This,pRetVal)
#define ITextRangeProvider_GetEnclosingElement(This,pRetVal) (This)->lpVtbl->GetEnclosingElement(This,pRetVal)
#define ITextRangeProvider_GetText(This,maxLength,pRetVal) (This)->lpVtbl->GetText(This,maxLength,pRetVal)
#define ITextRangeProvider_Move(This,unit,count,pRetVal) (This)->lpVtbl->Move(This,unit,count,pRetVal)
#define ITextRangeProvider_MoveEndpointByUnit(This,endpoint,unit,count,pRetVal) (This)->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,pRetVal)
#define ITextRangeProvider_MoveEndpointByRange(This,endpoint,targetRange,targetEndpoint) (This)->lpVtbl->MoveEndpointByRange(This,endpoint,targetRange,targetEndpoint)
#define ITextRangeProvider_Select(This) (This)->lpVtbl->Select(This)
#define ITextRangeProvider_AddToSelection(This) (This)->lpVtbl->AddToSelection(This)
#define ITextRangeProvider_RemoveFromSelection(This) (This)->lpVtbl->RemoveFromSelection(This)
#define ITextRangeProvider_ScrollIntoView(This,alignToTop) (This)->lpVtbl->ScrollIntoView(This,alignToTop)
#define ITextRangeProvider_GetChildren(This,pRetVal) (This)->lpVtbl->GetChildren(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextRangeProvider_QueryInterface(ITextRangeProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextRangeProvider_AddRef(ITextRangeProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextRangeProvider_Release(ITextRangeProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextRangeProvider methods ***/
static inline HRESULT ITextRangeProvider_Clone(ITextRangeProvider* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->Clone(This,pRetVal);
}
static inline HRESULT ITextRangeProvider_Compare(ITextRangeProvider* This,ITextRangeProvider *range,WINBOOL *pRetVal) {
    return This->lpVtbl->Compare(This,range,pRetVal);
}
static inline HRESULT ITextRangeProvider_CompareEndpoints(ITextRangeProvider* This,enum TextPatternRangeEndpoint endpoint,ITextRangeProvider *targetRange,enum TextPatternRangeEndpoint targetEndpoint,int *pRetVal) {
    return This->lpVtbl->CompareEndpoints(This,endpoint,targetRange,targetEndpoint,pRetVal);
}
static inline HRESULT ITextRangeProvider_ExpandToEnclosingUnit(ITextRangeProvider* This,enum TextUnit unit) {
    return This->lpVtbl->ExpandToEnclosingUnit(This,unit);
}
static inline HRESULT ITextRangeProvider_FindAttribute(ITextRangeProvider* This,TEXTATTRIBUTEID attributeId,VARIANT val,WINBOOL backward,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->FindAttribute(This,attributeId,val,backward,pRetVal);
}
static inline HRESULT ITextRangeProvider_FindText(ITextRangeProvider* This,BSTR text,WINBOOL backward,WINBOOL ignoreCase,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->FindText(This,text,backward,ignoreCase,pRetVal);
}
static inline HRESULT ITextRangeProvider_GetAttributeValue(ITextRangeProvider* This,TEXTATTRIBUTEID attributeId,VARIANT *pRetVal) {
    return This->lpVtbl->GetAttributeValue(This,attributeId,pRetVal);
}
static inline HRESULT ITextRangeProvider_GetBoundingRectangles(ITextRangeProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetBoundingRectangles(This,pRetVal);
}
static inline HRESULT ITextRangeProvider_GetEnclosingElement(ITextRangeProvider* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->GetEnclosingElement(This,pRetVal);
}
static inline HRESULT ITextRangeProvider_GetText(ITextRangeProvider* This,int maxLength,BSTR *pRetVal) {
    return This->lpVtbl->GetText(This,maxLength,pRetVal);
}
static inline HRESULT ITextRangeProvider_Move(ITextRangeProvider* This,enum TextUnit unit,int count,int *pRetVal) {
    return This->lpVtbl->Move(This,unit,count,pRetVal);
}
static inline HRESULT ITextRangeProvider_MoveEndpointByUnit(ITextRangeProvider* This,enum TextPatternRangeEndpoint endpoint,enum TextUnit unit,int count,int *pRetVal) {
    return This->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,pRetVal);
}
static inline HRESULT ITextRangeProvider_MoveEndpointByRange(ITextRangeProvider* This,enum TextPatternRangeEndpoint endpoint,ITextRangeProvider *targetRange,enum TextPatternRangeEndpoint targetEndpoint) {
    return This->lpVtbl->MoveEndpointByRange(This,endpoint,targetRange,targetEndpoint);
}
static inline HRESULT ITextRangeProvider_Select(ITextRangeProvider* This) {
    return This->lpVtbl->Select(This);
}
static inline HRESULT ITextRangeProvider_AddToSelection(ITextRangeProvider* This) {
    return This->lpVtbl->AddToSelection(This);
}
static inline HRESULT ITextRangeProvider_RemoveFromSelection(ITextRangeProvider* This) {
    return This->lpVtbl->RemoveFromSelection(This);
}
static inline HRESULT ITextRangeProvider_ScrollIntoView(ITextRangeProvider* This,WINBOOL alignToTop) {
    return This->lpVtbl->ScrollIntoView(This,alignToTop);
}
static inline HRESULT ITextRangeProvider_GetChildren(ITextRangeProvider* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetChildren(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITextRangeProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITextRangeProvider2 interface
 */
#ifndef __ITextRangeProvider2_INTERFACE_DEFINED__
#define __ITextRangeProvider2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextRangeProvider2, 0x9bbce42c, 0x1921, 0x4f18, 0x89,0xca, 0xdb,0xa1,0x91,0x0a,0x03,0x86);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9bbce42c-1921-4f18-89ca-dba1910a0386")
ITextRangeProvider2 : public ITextRangeProvider
{
    virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextRangeProvider2, 0x9bbce42c, 0x1921, 0x4f18, 0x89,0xca, 0xdb,0xa1,0x91,0x0a,0x03,0x86)
#endif
#else
typedef struct ITextRangeProvider2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITextRangeProvider2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITextRangeProvider2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITextRangeProvider2 *This);

    /*** ITextRangeProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        ITextRangeProvider2 *This,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *Compare)(
        ITextRangeProvider2 *This,
        ITextRangeProvider *range,
        WINBOOL *pRetVal);

    HRESULT (STDMETHODCALLTYPE *CompareEndpoints)(
        ITextRangeProvider2 *This,
        enum TextPatternRangeEndpoint endpoint,
        ITextRangeProvider *targetRange,
        enum TextPatternRangeEndpoint targetEndpoint,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *ExpandToEnclosingUnit)(
        ITextRangeProvider2 *This,
        enum TextUnit unit);

    HRESULT (STDMETHODCALLTYPE *FindAttribute)(
        ITextRangeProvider2 *This,
        TEXTATTRIBUTEID attributeId,
        VARIANT val,
        WINBOOL backward,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *FindText)(
        ITextRangeProvider2 *This,
        BSTR text,
        WINBOOL backward,
        WINBOOL ignoreCase,
        ITextRangeProvider **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetAttributeValue)(
        ITextRangeProvider2 *This,
        TEXTATTRIBUTEID attributeId,
        VARIANT *pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetBoundingRectangles)(
        ITextRangeProvider2 *This,
        SAFEARRAY **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetEnclosingElement)(
        ITextRangeProvider2 *This,
        IRawElementProviderSimple **pRetVal);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        ITextRangeProvider2 *This,
        int maxLength,
        BSTR *pRetVal);

    HRESULT (STDMETHODCALLTYPE *Move)(
        ITextRangeProvider2 *This,
        enum TextUnit unit,
        int count,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByUnit)(
        ITextRangeProvider2 *This,
        enum TextPatternRangeEndpoint endpoint,
        enum TextUnit unit,
        int count,
        int *pRetVal);

    HRESULT (STDMETHODCALLTYPE *MoveEndpointByRange)(
        ITextRangeProvider2 *This,
        enum TextPatternRangeEndpoint endpoint,
        ITextRangeProvider *targetRange,
        enum TextPatternRangeEndpoint targetEndpoint);

    HRESULT (STDMETHODCALLTYPE *Select)(
        ITextRangeProvider2 *This);

    HRESULT (STDMETHODCALLTYPE *AddToSelection)(
        ITextRangeProvider2 *This);

    HRESULT (STDMETHODCALLTYPE *RemoveFromSelection)(
        ITextRangeProvider2 *This);

    HRESULT (STDMETHODCALLTYPE *ScrollIntoView)(
        ITextRangeProvider2 *This,
        WINBOOL alignToTop);

    HRESULT (STDMETHODCALLTYPE *GetChildren)(
        ITextRangeProvider2 *This,
        SAFEARRAY **pRetVal);

    /*** ITextRangeProvider2 methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowContextMenu)(
        ITextRangeProvider2 *This);

    END_INTERFACE
} ITextRangeProvider2Vtbl;

interface ITextRangeProvider2 {
    CONST_VTBL ITextRangeProvider2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextRangeProvider2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextRangeProvider2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextRangeProvider2_Release(This) (This)->lpVtbl->Release(This)
/*** ITextRangeProvider methods ***/
#define ITextRangeProvider2_Clone(This,pRetVal) (This)->lpVtbl->Clone(This,pRetVal)
#define ITextRangeProvider2_Compare(This,range,pRetVal) (This)->lpVtbl->Compare(This,range,pRetVal)
#define ITextRangeProvider2_CompareEndpoints(This,endpoint,targetRange,targetEndpoint,pRetVal) (This)->lpVtbl->CompareEndpoints(This,endpoint,targetRange,targetEndpoint,pRetVal)
#define ITextRangeProvider2_ExpandToEnclosingUnit(This,unit) (This)->lpVtbl->ExpandToEnclosingUnit(This,unit)
#define ITextRangeProvider2_FindAttribute(This,attributeId,val,backward,pRetVal) (This)->lpVtbl->FindAttribute(This,attributeId,val,backward,pRetVal)
#define ITextRangeProvider2_FindText(This,text,backward,ignoreCase,pRetVal) (This)->lpVtbl->FindText(This,text,backward,ignoreCase,pRetVal)
#define ITextRangeProvider2_GetAttributeValue(This,attributeId,pRetVal) (This)->lpVtbl->GetAttributeValue(This,attributeId,pRetVal)
#define ITextRangeProvider2_GetBoundingRectangles(This,pRetVal) (This)->lpVtbl->GetBoundingRectangles(This,pRetVal)
#define ITextRangeProvider2_GetEnclosingElement(This,pRetVal) (This)->lpVtbl->GetEnclosingElement(This,pRetVal)
#define ITextRangeProvider2_GetText(This,maxLength,pRetVal) (This)->lpVtbl->GetText(This,maxLength,pRetVal)
#define ITextRangeProvider2_Move(This,unit,count,pRetVal) (This)->lpVtbl->Move(This,unit,count,pRetVal)
#define ITextRangeProvider2_MoveEndpointByUnit(This,endpoint,unit,count,pRetVal) (This)->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,pRetVal)
#define ITextRangeProvider2_MoveEndpointByRange(This,endpoint,targetRange,targetEndpoint) (This)->lpVtbl->MoveEndpointByRange(This,endpoint,targetRange,targetEndpoint)
#define ITextRangeProvider2_Select(This) (This)->lpVtbl->Select(This)
#define ITextRangeProvider2_AddToSelection(This) (This)->lpVtbl->AddToSelection(This)
#define ITextRangeProvider2_RemoveFromSelection(This) (This)->lpVtbl->RemoveFromSelection(This)
#define ITextRangeProvider2_ScrollIntoView(This,alignToTop) (This)->lpVtbl->ScrollIntoView(This,alignToTop)
#define ITextRangeProvider2_GetChildren(This,pRetVal) (This)->lpVtbl->GetChildren(This,pRetVal)
/*** ITextRangeProvider2 methods ***/
#define ITextRangeProvider2_ShowContextMenu(This) (This)->lpVtbl->ShowContextMenu(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextRangeProvider2_QueryInterface(ITextRangeProvider2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextRangeProvider2_AddRef(ITextRangeProvider2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextRangeProvider2_Release(ITextRangeProvider2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextRangeProvider methods ***/
static inline HRESULT ITextRangeProvider2_Clone(ITextRangeProvider2* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->Clone(This,pRetVal);
}
static inline HRESULT ITextRangeProvider2_Compare(ITextRangeProvider2* This,ITextRangeProvider *range,WINBOOL *pRetVal) {
    return This->lpVtbl->Compare(This,range,pRetVal);
}
static inline HRESULT ITextRangeProvider2_CompareEndpoints(ITextRangeProvider2* This,enum TextPatternRangeEndpoint endpoint,ITextRangeProvider *targetRange,enum TextPatternRangeEndpoint targetEndpoint,int *pRetVal) {
    return This->lpVtbl->CompareEndpoints(This,endpoint,targetRange,targetEndpoint,pRetVal);
}
static inline HRESULT ITextRangeProvider2_ExpandToEnclosingUnit(ITextRangeProvider2* This,enum TextUnit unit) {
    return This->lpVtbl->ExpandToEnclosingUnit(This,unit);
}
static inline HRESULT ITextRangeProvider2_FindAttribute(ITextRangeProvider2* This,TEXTATTRIBUTEID attributeId,VARIANT val,WINBOOL backward,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->FindAttribute(This,attributeId,val,backward,pRetVal);
}
static inline HRESULT ITextRangeProvider2_FindText(ITextRangeProvider2* This,BSTR text,WINBOOL backward,WINBOOL ignoreCase,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->FindText(This,text,backward,ignoreCase,pRetVal);
}
static inline HRESULT ITextRangeProvider2_GetAttributeValue(ITextRangeProvider2* This,TEXTATTRIBUTEID attributeId,VARIANT *pRetVal) {
    return This->lpVtbl->GetAttributeValue(This,attributeId,pRetVal);
}
static inline HRESULT ITextRangeProvider2_GetBoundingRectangles(ITextRangeProvider2* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetBoundingRectangles(This,pRetVal);
}
static inline HRESULT ITextRangeProvider2_GetEnclosingElement(ITextRangeProvider2* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->GetEnclosingElement(This,pRetVal);
}
static inline HRESULT ITextRangeProvider2_GetText(ITextRangeProvider2* This,int maxLength,BSTR *pRetVal) {
    return This->lpVtbl->GetText(This,maxLength,pRetVal);
}
static inline HRESULT ITextRangeProvider2_Move(ITextRangeProvider2* This,enum TextUnit unit,int count,int *pRetVal) {
    return This->lpVtbl->Move(This,unit,count,pRetVal);
}
static inline HRESULT ITextRangeProvider2_MoveEndpointByUnit(ITextRangeProvider2* This,enum TextPatternRangeEndpoint endpoint,enum TextUnit unit,int count,int *pRetVal) {
    return This->lpVtbl->MoveEndpointByUnit(This,endpoint,unit,count,pRetVal);
}
static inline HRESULT ITextRangeProvider2_MoveEndpointByRange(ITextRangeProvider2* This,enum TextPatternRangeEndpoint endpoint,ITextRangeProvider *targetRange,enum TextPatternRangeEndpoint targetEndpoint) {
    return This->lpVtbl->MoveEndpointByRange(This,endpoint,targetRange,targetEndpoint);
}
static inline HRESULT ITextRangeProvider2_Select(ITextRangeProvider2* This) {
    return This->lpVtbl->Select(This);
}
static inline HRESULT ITextRangeProvider2_AddToSelection(ITextRangeProvider2* This) {
    return This->lpVtbl->AddToSelection(This);
}
static inline HRESULT ITextRangeProvider2_RemoveFromSelection(ITextRangeProvider2* This) {
    return This->lpVtbl->RemoveFromSelection(This);
}
static inline HRESULT ITextRangeProvider2_ScrollIntoView(ITextRangeProvider2* This,WINBOOL alignToTop) {
    return This->lpVtbl->ScrollIntoView(This,alignToTop);
}
static inline HRESULT ITextRangeProvider2_GetChildren(ITextRangeProvider2* This,SAFEARRAY **pRetVal) {
    return This->lpVtbl->GetChildren(This,pRetVal);
}
/*** ITextRangeProvider2 methods ***/
static inline HRESULT ITextRangeProvider2_ShowContextMenu(ITextRangeProvider2* This) {
    return This->lpVtbl->ShowContextMenu(This);
}
#endif
#endif

#endif


#endif  /* __ITextRangeProvider2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITextChildProvider interface
 */
#ifndef __ITextChildProvider_INTERFACE_DEFINED__
#define __ITextChildProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextChildProvider, 0x4c2de2b9, 0xc88f, 0x4f88, 0xa1,0x11, 0xf1,0xd3,0x36,0xb7,0xd1,0xa9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4c2de2b9-c88f-4f88-a111-f1d336b7d1a9")
ITextChildProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_TextContainer(
        IRawElementProviderSimple **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TextRange(
        ITextRangeProvider **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextChildProvider, 0x4c2de2b9, 0xc88f, 0x4f88, 0xa1,0x11, 0xf1,0xd3,0x36,0xb7,0xd1,0xa9)
#endif
#else
typedef struct ITextChildProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ITextChildProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ITextChildProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ITextChildProvider *This);

    /*** ITextChildProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *get_TextContainer)(
        ITextChildProvider *This,
        IRawElementProviderSimple **pRetVal);

    HRESULT (STDMETHODCALLTYPE *get_TextRange)(
        ITextChildProvider *This,
        ITextRangeProvider **pRetVal);

    END_INTERFACE
} ITextChildProviderVtbl;

interface ITextChildProvider {
    CONST_VTBL ITextChildProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextChildProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextChildProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextChildProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ITextChildProvider methods ***/
#define ITextChildProvider_get_TextContainer(This,pRetVal) (This)->lpVtbl->get_TextContainer(This,pRetVal)
#define ITextChildProvider_get_TextRange(This,pRetVal) (This)->lpVtbl->get_TextRange(This,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextChildProvider_QueryInterface(ITextChildProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextChildProvider_AddRef(ITextChildProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextChildProvider_Release(ITextChildProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextChildProvider methods ***/
static inline HRESULT ITextChildProvider_get_TextContainer(ITextChildProvider* This,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->get_TextContainer(This,pRetVal);
}
static inline HRESULT ITextChildProvider_get_TextRange(ITextChildProvider* This,ITextRangeProvider **pRetVal) {
    return This->lpVtbl->get_TextRange(This,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ITextChildProvider_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICustomNavigationProvider interface
 */
#ifndef __ICustomNavigationProvider_INTERFACE_DEFINED__
#define __ICustomNavigationProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICustomNavigationProvider, 0x2062a28a, 0x8c07, 0x4b94, 0x8e,0x12, 0x70,0x37,0xc6,0x22,0xae,0xb8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2062a28a-8c07-4b94-8e12-7037c622aeb8")
ICustomNavigationProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Navigate(
        enum NavigateDirection direction,
        IRawElementProviderSimple **pRetVal) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICustomNavigationProvider, 0x2062a28a, 0x8c07, 0x4b94, 0x8e,0x12, 0x70,0x37,0xc6,0x22,0xae,0xb8)
#endif
#else
typedef struct ICustomNavigationProviderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICustomNavigationProvider *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICustomNavigationProvider *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICustomNavigationProvider *This);

    /*** ICustomNavigationProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *Navigate)(
        ICustomNavigationProvider *This,
        enum NavigateDirection direction,
        IRawElementProviderSimple **pRetVal);

    END_INTERFACE
} ICustomNavigationProviderVtbl;

interface ICustomNavigationProvider {
    CONST_VTBL ICustomNavigationProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICustomNavigationProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICustomNavigationProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICustomNavigationProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ICustomNavigationProvider methods ***/
#define ICustomNavigationProvider_Navigate(This,direction,pRetVal) (This)->lpVtbl->Navigate(This,direction,pRetVal)
#else
/*** IUnknown methods ***/
static inline HRESULT ICustomNavigationProvider_QueryInterface(ICustomNavigationProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICustomNavigationProvider_AddRef(ICustomNavigationProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICustomNavigationProvider_Release(ICustomNavigationProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ICustomNavigationProvider methods ***/
static inline HRESULT ICustomNavigationProvider_Navigate(ICustomNavigationProvider* This,enum NavigateDirection direction,IRawElementProviderSimple **pRetVal) {
    return This->lpVtbl->Navigate(This,direction,pRetVal);
}
#endif
#endif

#endif


#endif  /* __ICustomNavigationProvider_INTERFACE_DEFINED__ */

enum UIAutomationType {
    UIAutomationType_Int = 0x1,
    UIAutomationType_Bool = 0x2,
    UIAutomationType_String = 0x3,
    UIAutomationType_Double = 0x4,
    UIAutomationType_Point = 0x5,
    UIAutomationType_Rect = 0x6,
    UIAutomationType_Element = 0x7,
    UIAutomationType_Array = 0x10000,
    UIAutomationType_Out = 0x20000,
    UIAutomationType_IntArray = UIAutomationType_Int | UIAutomationType_Array,
    UIAutomationType_BoolArray = UIAutomationType_Bool | UIAutomationType_Array,
    UIAutomationType_StringArray = UIAutomationType_String | UIAutomationType_Array,
    UIAutomationType_DoubleArray = UIAutomationType_Double | UIAutomationType_Array,
    UIAutomationType_PointArray = UIAutomationType_Point | UIAutomationType_Array,
    UIAutomationType_RectArray = UIAutomationType_Rect | UIAutomationType_Array,
    UIAutomationType_ElementArray = UIAutomationType_Element | UIAutomationType_Array,
    UIAutomationType_OutInt = UIAutomationType_Int | UIAutomationType_Out,
    UIAutomationType_OutBool = UIAutomationType_Bool | UIAutomationType_Out,
    UIAutomationType_OutString = UIAutomationType_String | UIAutomationType_Out,
    UIAutomationType_OutDouble = UIAutomationType_Double | UIAutomationType_Out,
    UIAutomationType_OutPoint = UIAutomationType_Point | UIAutomationType_Out,
    UIAutomationType_OutRect = UIAutomationType_Rect | UIAutomationType_Out,
    UIAutomationType_OutElement = UIAutomationType_Element | UIAutomationType_Out,
    UIAutomationType_OutIntArray = (UIAutomationType_Int | UIAutomationType_Array) | UIAutomationType_Out,
    UIAutomationType_OutBoolArray = (UIAutomationType_Bool | UIAutomationType_Array) | UIAutomationType_Out,
    UIAutomationType_OutStringArray = (UIAutomationType_String | UIAutomationType_Array) | UIAutomationType_Out,
    UIAutomationType_OutDoubleArray = (UIAutomationType_Double | UIAutomationType_Array) | UIAutomationType_Out,
    UIAutomationType_OutPointArray = (UIAutomationType_Point | UIAutomationType_Array) | UIAutomationType_Out,
    UIAutomationType_OutRectArray = (UIAutomationType_Rect | UIAutomationType_Array) | UIAutomationType_Out,
    UIAutomationType_OutElementArray = (UIAutomationType_Element | UIAutomationType_Array) | UIAutomationType_Out
};
DEFINE_ENUM_FLAG_OPERATORS(UIAutomationType)
struct UIAutomationParameter {
    enum UIAutomationType type;
    void *pData;
};
struct UIAutomationPropertyInfo {
    GUID guid;
    LPCWSTR pProgrammaticName;
    enum UIAutomationType type;
};
struct UIAutomationEventInfo {
    GUID guid;
    LPCWSTR pProgrammaticName;
};
struct UIAutomationMethodInfo {
    LPCWSTR pProgrammaticName;
    WINBOOL doSetFocus;
    UINT cInParameters;
    UINT cOutParameters;
    enum UIAutomationType *pParameterTypes;
    LPCWSTR *pParameterNames;
};
/*****************************************************************************
 * IUIAutomationPatternInstance interface
 */
#ifndef __IUIAutomationPatternInstance_INTERFACE_DEFINED__
#define __IUIAutomationPatternInstance_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationPatternInstance, 0xc03a7fe4, 0x9431, 0x409f, 0xbe,0xd8, 0xae,0x7c,0x22,0x99,0xbc,0x8d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c03a7fe4-9431-409f-bed8-ae7c2299bc8d")
IUIAutomationPatternInstance : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProperty(
        UINT index,
        WINBOOL cached,
        enum UIAutomationType type,
        void *pPtr) = 0;

    virtual HRESULT STDMETHODCALLTYPE CallMethod(
        UINT index,
        const struct UIAutomationParameter *pParams,
        UINT cParams) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationPatternInstance, 0xc03a7fe4, 0x9431, 0x409f, 0xbe,0xd8, 0xae,0x7c,0x22,0x99,0xbc,0x8d)
#endif
#else
typedef struct IUIAutomationPatternInstanceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationPatternInstance *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationPatternInstance *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationPatternInstance *This);

    /*** IUIAutomationPatternInstance methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProperty)(
        IUIAutomationPatternInstance *This,
        UINT index,
        WINBOOL cached,
        enum UIAutomationType type,
        void *pPtr);

    HRESULT (STDMETHODCALLTYPE *CallMethod)(
        IUIAutomationPatternInstance *This,
        UINT index,
        const struct UIAutomationParameter *pParams,
        UINT cParams);

    END_INTERFACE
} IUIAutomationPatternInstanceVtbl;

interface IUIAutomationPatternInstance {
    CONST_VTBL IUIAutomationPatternInstanceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationPatternInstance_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationPatternInstance_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationPatternInstance_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationPatternInstance methods ***/
#define IUIAutomationPatternInstance_GetProperty(This,index,cached,type,pPtr) (This)->lpVtbl->GetProperty(This,index,cached,type,pPtr)
#define IUIAutomationPatternInstance_CallMethod(This,index,pParams,cParams) (This)->lpVtbl->CallMethod(This,index,pParams,cParams)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationPatternInstance_QueryInterface(IUIAutomationPatternInstance* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationPatternInstance_AddRef(IUIAutomationPatternInstance* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationPatternInstance_Release(IUIAutomationPatternInstance* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationPatternInstance methods ***/
static inline HRESULT IUIAutomationPatternInstance_GetProperty(IUIAutomationPatternInstance* This,UINT index,WINBOOL cached,enum UIAutomationType type,void *pPtr) {
    return This->lpVtbl->GetProperty(This,index,cached,type,pPtr);
}
static inline HRESULT IUIAutomationPatternInstance_CallMethod(IUIAutomationPatternInstance* This,UINT index,const struct UIAutomationParameter *pParams,UINT cParams) {
    return This->lpVtbl->CallMethod(This,index,pParams,cParams);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationPatternInstance_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUIAutomationPatternHandler interface
 */
#ifndef __IUIAutomationPatternHandler_INTERFACE_DEFINED__
#define __IUIAutomationPatternHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationPatternHandler, 0xd97022f3, 0xa947, 0x465e, 0x8b,0x2a, 0xac,0x43,0x15,0xfa,0x54,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d97022f3-a947-465e-8b2a-ac4315fa54e8")
IUIAutomationPatternHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateClientWrapper(
        IUIAutomationPatternInstance *pPatternInstance,
        IUnknown **pClientWrapper) = 0;

    virtual HRESULT STDMETHODCALLTYPE Dispatch(
        IUnknown *pTarget,
        UINT index,
        const struct UIAutomationParameter *pParams,
        UINT cParams) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationPatternHandler, 0xd97022f3, 0xa947, 0x465e, 0x8b,0x2a, 0xac,0x43,0x15,0xfa,0x54,0xe8)
#endif
#else
typedef struct IUIAutomationPatternHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationPatternHandler *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationPatternHandler *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationPatternHandler *This);

    /*** IUIAutomationPatternHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateClientWrapper)(
        IUIAutomationPatternHandler *This,
        IUIAutomationPatternInstance *pPatternInstance,
        IUnknown **pClientWrapper);

    HRESULT (STDMETHODCALLTYPE *Dispatch)(
        IUIAutomationPatternHandler *This,
        IUnknown *pTarget,
        UINT index,
        const struct UIAutomationParameter *pParams,
        UINT cParams);

    END_INTERFACE
} IUIAutomationPatternHandlerVtbl;

interface IUIAutomationPatternHandler {
    CONST_VTBL IUIAutomationPatternHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationPatternHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationPatternHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationPatternHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationPatternHandler methods ***/
#define IUIAutomationPatternHandler_CreateClientWrapper(This,pPatternInstance,pClientWrapper) (This)->lpVtbl->CreateClientWrapper(This,pPatternInstance,pClientWrapper)
#define IUIAutomationPatternHandler_Dispatch(This,pTarget,index,pParams,cParams) (This)->lpVtbl->Dispatch(This,pTarget,index,pParams,cParams)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationPatternHandler_QueryInterface(IUIAutomationPatternHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationPatternHandler_AddRef(IUIAutomationPatternHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationPatternHandler_Release(IUIAutomationPatternHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationPatternHandler methods ***/
static inline HRESULT IUIAutomationPatternHandler_CreateClientWrapper(IUIAutomationPatternHandler* This,IUIAutomationPatternInstance *pPatternInstance,IUnknown **pClientWrapper) {
    return This->lpVtbl->CreateClientWrapper(This,pPatternInstance,pClientWrapper);
}
static inline HRESULT IUIAutomationPatternHandler_Dispatch(IUIAutomationPatternHandler* This,IUnknown *pTarget,UINT index,const struct UIAutomationParameter *pParams,UINT cParams) {
    return This->lpVtbl->Dispatch(This,pTarget,index,pParams,cParams);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationPatternHandler_INTERFACE_DEFINED__ */

struct UIAutomationPatternInfo {
    GUID guid;
    LPCWSTR pProgrammaticName;
    GUID providerInterfaceId;
    GUID clientInterfaceId;
    UINT cProperties;
    struct UIAutomationPropertyInfo *pProperties;
    UINT cMethods;
    struct UIAutomationMethodInfo *pMethods;
    UINT cEvents;
    struct UIAutomationEventInfo *pEvents;
    IUIAutomationPatternHandler *pPatternHandler;
};
/*****************************************************************************
 * IUIAutomationRegistrar interface
 */
#ifndef __IUIAutomationRegistrar_INTERFACE_DEFINED__
#define __IUIAutomationRegistrar_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUIAutomationRegistrar, 0x8609c4ec, 0x4a1a, 0x4d88, 0xa3,0x57, 0x5a,0x66,0xe0,0x60,0xe1,0xcf);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8609c4ec-4a1a-4d88-a357-5a66e060e1cf")
IUIAutomationRegistrar : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RegisterProperty(
        const struct UIAutomationPropertyInfo *property,
        PROPERTYID *propertyId) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterEvent(
        const struct UIAutomationEventInfo *event,
        EVENTID *eventId) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterPattern(
        const struct UIAutomationPatternInfo *pattern,
        PATTERNID *pPatternId,
        PROPERTYID *pPatternAvailablePropertyId,
        UINT propertyIdCount,
        PROPERTYID *pPropertyIds,
        UINT eventIdCount,
        EVENTID *pEventIds) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUIAutomationRegistrar, 0x8609c4ec, 0x4a1a, 0x4d88, 0xa3,0x57, 0x5a,0x66,0xe0,0x60,0xe1,0xcf)
#endif
#else
typedef struct IUIAutomationRegistrarVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IUIAutomationRegistrar *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IUIAutomationRegistrar *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IUIAutomationRegistrar *This);

    /*** IUIAutomationRegistrar methods ***/
    HRESULT (STDMETHODCALLTYPE *RegisterProperty)(
        IUIAutomationRegistrar *This,
        const struct UIAutomationPropertyInfo *property,
        PROPERTYID *propertyId);

    HRESULT (STDMETHODCALLTYPE *RegisterEvent)(
        IUIAutomationRegistrar *This,
        const struct UIAutomationEventInfo *event,
        EVENTID *eventId);

    HRESULT (STDMETHODCALLTYPE *RegisterPattern)(
        IUIAutomationRegistrar *This,
        const struct UIAutomationPatternInfo *pattern,
        PATTERNID *pPatternId,
        PROPERTYID *pPatternAvailablePropertyId,
        UINT propertyIdCount,
        PROPERTYID *pPropertyIds,
        UINT eventIdCount,
        EVENTID *pEventIds);

    END_INTERFACE
} IUIAutomationRegistrarVtbl;

interface IUIAutomationRegistrar {
    CONST_VTBL IUIAutomationRegistrarVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUIAutomationRegistrar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUIAutomationRegistrar_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUIAutomationRegistrar_Release(This) (This)->lpVtbl->Release(This)
/*** IUIAutomationRegistrar methods ***/
#define IUIAutomationRegistrar_RegisterProperty(This,property,propertyId) (This)->lpVtbl->RegisterProperty(This,property,propertyId)
#define IUIAutomationRegistrar_RegisterEvent(This,event,eventId) (This)->lpVtbl->RegisterEvent(This,event,eventId)
#define IUIAutomationRegistrar_RegisterPattern(This,pattern,pPatternId,pPatternAvailablePropertyId,propertyIdCount,pPropertyIds,eventIdCount,pEventIds) (This)->lpVtbl->RegisterPattern(This,pattern,pPatternId,pPatternAvailablePropertyId,propertyIdCount,pPropertyIds,eventIdCount,pEventIds)
#else
/*** IUnknown methods ***/
static inline HRESULT IUIAutomationRegistrar_QueryInterface(IUIAutomationRegistrar* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUIAutomationRegistrar_AddRef(IUIAutomationRegistrar* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUIAutomationRegistrar_Release(IUIAutomationRegistrar* This) {
    return This->lpVtbl->Release(This);
}
/*** IUIAutomationRegistrar methods ***/
static inline HRESULT IUIAutomationRegistrar_RegisterProperty(IUIAutomationRegistrar* This,const struct UIAutomationPropertyInfo *property,PROPERTYID *propertyId) {
    return This->lpVtbl->RegisterProperty(This,property,propertyId);
}
static inline HRESULT IUIAutomationRegistrar_RegisterEvent(IUIAutomationRegistrar* This,const struct UIAutomationEventInfo *event,EVENTID *eventId) {
    return This->lpVtbl->RegisterEvent(This,event,eventId);
}
static inline HRESULT IUIAutomationRegistrar_RegisterPattern(IUIAutomationRegistrar* This,const struct UIAutomationPatternInfo *pattern,PATTERNID *pPatternId,PROPERTYID *pPatternAvailablePropertyId,UINT propertyIdCount,PROPERTYID *pPropertyIds,UINT eventIdCount,EVENTID *pEventIds) {
    return This->lpVtbl->RegisterPattern(This,pattern,pPatternId,pPatternAvailablePropertyId,propertyIdCount,pPropertyIds,eventIdCount,pEventIds);
}
#endif
#endif

#endif


#endif  /* __IUIAutomationRegistrar_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CUIAutomationRegistrar coclass
 */

DEFINE_GUID(CLSID_CUIAutomationRegistrar, 0x6e29fabf, 0x9977, 0x42d1, 0x8d,0x0e, 0xca,0x7e,0x61,0xad,0x87,0xe6);

#ifdef __cplusplus
class DECLSPEC_UUID("6e29fabf-9977-42d1-8d0e-ca7e61ad87e6") CUIAutomationRegistrar;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CUIAutomationRegistrar, 0x6e29fabf, 0x9977, 0x42d1, 0x8d,0x0e, 0xca,0x7e,0x61,0xad,0x87,0xe6)
#endif
#endif

#endif /* __UIA_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */

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 *);
ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
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 *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __uiautomationcore_h__ */
