/*** Autogenerated by WIDL 11.0 from ../ValveSoftware-winegit/include/wine/iaccessible2.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 __iaccessible2_h__
#define __iaccessible2_h__

/* Forward declarations */

#ifndef __IAccessibleRelation_FWD_DEFINED__
#define __IAccessibleRelation_FWD_DEFINED__
typedef interface IAccessibleRelation IAccessibleRelation;
#ifdef __cplusplus
interface IAccessibleRelation;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleAction_FWD_DEFINED__
#define __IAccessibleAction_FWD_DEFINED__
typedef interface IAccessibleAction IAccessibleAction;
#ifdef __cplusplus
interface IAccessibleAction;
#endif /* __cplusplus */
#endif

#ifndef __IAccessible2_FWD_DEFINED__
#define __IAccessible2_FWD_DEFINED__
typedef interface IAccessible2 IAccessible2;
#ifdef __cplusplus
interface IAccessible2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessible2_2_FWD_DEFINED__
#define __IAccessible2_2_FWD_DEFINED__
typedef interface IAccessible2_2 IAccessible2_2;
#ifdef __cplusplus
interface IAccessible2_2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleComponent_FWD_DEFINED__
#define __IAccessibleComponent_FWD_DEFINED__
typedef interface IAccessibleComponent IAccessibleComponent;
#ifdef __cplusplus
interface IAccessibleComponent;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleValue_FWD_DEFINED__
#define __IAccessibleValue_FWD_DEFINED__
typedef interface IAccessibleValue IAccessibleValue;
#ifdef __cplusplus
interface IAccessibleValue;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleText_FWD_DEFINED__
#define __IAccessibleText_FWD_DEFINED__
typedef interface IAccessibleText IAccessibleText;
#ifdef __cplusplus
interface IAccessibleText;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleText2_FWD_DEFINED__
#define __IAccessibleText2_FWD_DEFINED__
typedef interface IAccessibleText2 IAccessibleText2;
#ifdef __cplusplus
interface IAccessibleText2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleEditableText_FWD_DEFINED__
#define __IAccessibleEditableText_FWD_DEFINED__
typedef interface IAccessibleEditableText IAccessibleEditableText;
#ifdef __cplusplus
interface IAccessibleEditableText;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleHyperlink_FWD_DEFINED__
#define __IAccessibleHyperlink_FWD_DEFINED__
typedef interface IAccessibleHyperlink IAccessibleHyperlink;
#ifdef __cplusplus
interface IAccessibleHyperlink;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleHypertext_FWD_DEFINED__
#define __IAccessibleHypertext_FWD_DEFINED__
typedef interface IAccessibleHypertext IAccessibleHypertext;
#ifdef __cplusplus
interface IAccessibleHypertext;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleHypertext2_FWD_DEFINED__
#define __IAccessibleHypertext2_FWD_DEFINED__
typedef interface IAccessibleHypertext2 IAccessibleHypertext2;
#ifdef __cplusplus
interface IAccessibleHypertext2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleTable_FWD_DEFINED__
#define __IAccessibleTable_FWD_DEFINED__
typedef interface IAccessibleTable IAccessibleTable;
#ifdef __cplusplus
interface IAccessibleTable;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleTable2_FWD_DEFINED__
#define __IAccessibleTable2_FWD_DEFINED__
typedef interface IAccessibleTable2 IAccessibleTable2;
#ifdef __cplusplus
interface IAccessibleTable2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleTableCell_FWD_DEFINED__
#define __IAccessibleTableCell_FWD_DEFINED__
typedef interface IAccessibleTableCell IAccessibleTableCell;
#ifdef __cplusplus
interface IAccessibleTableCell;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleImage_FWD_DEFINED__
#define __IAccessibleImage_FWD_DEFINED__
typedef interface IAccessibleImage IAccessibleImage;
#ifdef __cplusplus
interface IAccessibleImage;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleApplication_FWD_DEFINED__
#define __IAccessibleApplication_FWD_DEFINED__
typedef interface IAccessibleApplication IAccessibleApplication;
#ifdef __cplusplus
interface IAccessibleApplication;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleDocument_FWD_DEFINED__
#define __IAccessibleDocument_FWD_DEFINED__
typedef interface IAccessibleDocument IAccessibleDocument;
#ifdef __cplusplus
interface IAccessibleDocument;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

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

#ifdef __cplusplus
extern "C" {
#endif

enum IA2ScrollType {
    IA2_SCROLL_TYPE_TOP_LEFT = 0,
    IA2_SCROLL_TYPE_BOTTOM_RIGHT = 1,
    IA2_SCROLL_TYPE_TOP_EDGE = 2,
    IA2_SCROLL_TYPE_BOTTOM_EDGE = 3,
    IA2_SCROLL_TYPE_LEFT_EDGE = 4,
    IA2_SCROLL_TYPE_RIGHT_EDGE = 5,
    IA2_SCROLL_TYPE_ANYWHERE = 6
};
enum IA2CoordinateType {
    IA2_COORDTYPE_SCREEN_RELATIVE = 0,
    IA2_COORDTYPE_PARENT_RELATIVE = 1
};
enum IA2TextSpecialOffsets {
    IA2_TEXT_OFFSET_LENGTH = -1,
    IA2_TEXT_OFFSET_CARET = -2
};
enum IA2TableModelChangeType {
    IA2_TABLE_MODEL_CHANGE_INSERT = 0,
    IA2_TABLE_MODEL_CHANGE_DELETE = 1,
    IA2_TABLE_MODEL_CHANGE_UPDATE = 2
};
typedef struct IA2TableModelChange {
    enum IA2TableModelChangeType type;
    LONG firstRow;
    LONG lastRow;
    LONG firstColumn;
    LONG lastColumn;
} IA2TableModelChange;
#define IA2_RELATION_CONTAINING_APPLICATION (L"containingApplication")

#define IA2_RELATION_CONTAINING_DOCUMENT (L"containingDocument")

#define IA2_RELATION_CONTAINING_TAB_PANE (L"containingTabPane")

#define IA2_RELATION_CONTAINING_WINDOW (L"containingWindow")

#define IA2_RELATION_CONTROLLED_BY (L"controlledBy")

#define IA2_RELATION_CONTROLLER_FOR (L"controllerFor")

#define IA2_RELATION_DESCRIBED_BY (L"describedBy")

#define IA2_RELATION_DESCRIPTION_FOR (L"descriptionFor")

#define IA2_RELATION_EMBEDDED_BY (L"embeddedBy")

#define IA2_RELATION_EMBEDS (L"embeds")

#define IA2_RELATION_FLOWS_FROM (L"flowsFrom")

#define IA2_RELATION_FLOWS_TO (L"flowsTo")

#define IA2_RELATION_LABEL_FOR (L"labelFor")

#define IA2_RELATION_LABELED_BY (L"labelledBy")

#define IA2_RELATION_LABELLED_BY (L"labelledBy")

#define IA2_RELATION_MEMBER_OF (L"memberOf")

#define IA2_RELATION_NEXT_TABBABLE (L"nextTabbable")

#define IA2_RELATION_NODE_CHILD_OF (L"nodeChildOf")

#define IA2_RELATION_NODE_PARENT_OF (L"nodeParentOf")

#define IA2_RELATION_PARENT_WINDOW_OF (L"parentWindowOf")

#define IA2_RELATION_POPUP_FOR (L"popupFor")

#define IA2_RELATION_PREVIOUS_TABBABLE (L"previousTabbable")

#define IA2_RELATION_SUBWINDOW_OF (L"subwindowOf")

/*****************************************************************************
 * IAccessibleRelation interface
 */
#ifndef __IAccessibleRelation_INTERFACE_DEFINED__
#define __IAccessibleRelation_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleRelation, 0x7cdf86ee, 0xc3da, 0x496a, 0xbd,0xa4, 0x28,0x1b,0x33,0x6e,0x1f,0xdc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7cdf86ee-c3da-496a-bda4-281b336e1fdc")
IAccessibleRelation : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_relationType(
        BSTR *relationType) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_localizedRelationType(
        BSTR *localizedRelationType) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nTargets(
        LONG *nTargets) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_target(
        LONG targetIndex,
        IUnknown **target) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_targets(
        LONG maxTargets,
        IUnknown **targets,
        LONG *nTargets) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleRelation, 0x7cdf86ee, 0xc3da, 0x496a, 0xbd,0xa4, 0x28,0x1b,0x33,0x6e,0x1f,0xdc)
#endif
#else
typedef struct IAccessibleRelationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleRelation methods ***/
    HRESULT (STDMETHODCALLTYPE *get_relationType)(
        IAccessibleRelation *This,
        BSTR *relationType);

    HRESULT (STDMETHODCALLTYPE *get_localizedRelationType)(
        IAccessibleRelation *This,
        BSTR *localizedRelationType);

    HRESULT (STDMETHODCALLTYPE *get_nTargets)(
        IAccessibleRelation *This,
        LONG *nTargets);

    HRESULT (STDMETHODCALLTYPE *get_target)(
        IAccessibleRelation *This,
        LONG targetIndex,
        IUnknown **target);

    HRESULT (STDMETHODCALLTYPE *get_targets)(
        IAccessibleRelation *This,
        LONG maxTargets,
        IUnknown **targets,
        LONG *nTargets);

    END_INTERFACE
} IAccessibleRelationVtbl;

interface IAccessibleRelation {
    CONST_VTBL IAccessibleRelationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleRelation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleRelation_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleRelation_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleRelation methods ***/
#define IAccessibleRelation_get_relationType(This,relationType) (This)->lpVtbl->get_relationType(This,relationType)
#define IAccessibleRelation_get_localizedRelationType(This,localizedRelationType) (This)->lpVtbl->get_localizedRelationType(This,localizedRelationType)
#define IAccessibleRelation_get_nTargets(This,nTargets) (This)->lpVtbl->get_nTargets(This,nTargets)
#define IAccessibleRelation_get_target(This,targetIndex,target) (This)->lpVtbl->get_target(This,targetIndex,target)
#define IAccessibleRelation_get_targets(This,maxTargets,targets,nTargets) (This)->lpVtbl->get_targets(This,maxTargets,targets,nTargets)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleRelation_QueryInterface(IAccessibleRelation* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleRelation_AddRef(IAccessibleRelation* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleRelation_Release(IAccessibleRelation* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleRelation methods ***/
static inline HRESULT IAccessibleRelation_get_relationType(IAccessibleRelation* This,BSTR *relationType) {
    return This->lpVtbl->get_relationType(This,relationType);
}
static inline HRESULT IAccessibleRelation_get_localizedRelationType(IAccessibleRelation* This,BSTR *localizedRelationType) {
    return This->lpVtbl->get_localizedRelationType(This,localizedRelationType);
}
static inline HRESULT IAccessibleRelation_get_nTargets(IAccessibleRelation* This,LONG *nTargets) {
    return This->lpVtbl->get_nTargets(This,nTargets);
}
static inline HRESULT IAccessibleRelation_get_target(IAccessibleRelation* This,LONG targetIndex,IUnknown **target) {
    return This->lpVtbl->get_target(This,targetIndex,target);
}
static inline HRESULT IAccessibleRelation_get_targets(IAccessibleRelation* This,LONG maxTargets,IUnknown **targets,LONG *nTargets) {
    return This->lpVtbl->get_targets(This,maxTargets,targets,nTargets);
}
#endif
#endif

#endif


#endif  /* __IAccessibleRelation_INTERFACE_DEFINED__ */

enum IA2Actions {
    IA2_ACTION_OPEN = -1,
    IA2_ACTION_COMPLETE = -2,
    IA2_ACTION_CLOSE = -3
};
/*****************************************************************************
 * IAccessibleAction interface
 */
#ifndef __IAccessibleAction_INTERFACE_DEFINED__
#define __IAccessibleAction_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleAction, 0xb70d9f59, 0x3b5a, 0x4dba, 0xab,0x9e, 0x22,0x01,0x2f,0x60,0x7d,0xf5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b70d9f59-3b5a-4dba-ab9e-22012f607df5")
IAccessibleAction : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE nActions(
        LONG *nActions) = 0;

    virtual HRESULT STDMETHODCALLTYPE doAction(
        LONG actionIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_description(
        LONG actionIndex,
        BSTR *description) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_keyBinding(
        LONG actionIndex,
        LONG nMaxBindings,
        BSTR **keyBindings,
        LONG *nBindings) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_name(
        LONG actionIndex,
        BSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_localizedName(
        LONG actionIndex,
        BSTR *localizedName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleAction, 0xb70d9f59, 0x3b5a, 0x4dba, 0xab,0x9e, 0x22,0x01,0x2f,0x60,0x7d,0xf5)
#endif
#else
typedef struct IAccessibleActionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleAction methods ***/
    HRESULT (STDMETHODCALLTYPE *nActions)(
        IAccessibleAction *This,
        LONG *nActions);

    HRESULT (STDMETHODCALLTYPE *doAction)(
        IAccessibleAction *This,
        LONG actionIndex);

    HRESULT (STDMETHODCALLTYPE *get_description)(
        IAccessibleAction *This,
        LONG actionIndex,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_keyBinding)(
        IAccessibleAction *This,
        LONG actionIndex,
        LONG nMaxBindings,
        BSTR **keyBindings,
        LONG *nBindings);

    HRESULT (STDMETHODCALLTYPE *get_name)(
        IAccessibleAction *This,
        LONG actionIndex,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *get_localizedName)(
        IAccessibleAction *This,
        LONG actionIndex,
        BSTR *localizedName);

    END_INTERFACE
} IAccessibleActionVtbl;

interface IAccessibleAction {
    CONST_VTBL IAccessibleActionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleAction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleAction_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleAction_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleAction methods ***/
#define IAccessibleAction_nActions(This,nActions) (This)->lpVtbl->nActions(This,nActions)
#define IAccessibleAction_doAction(This,actionIndex) (This)->lpVtbl->doAction(This,actionIndex)
#define IAccessibleAction_get_description(This,actionIndex,description) (This)->lpVtbl->get_description(This,actionIndex,description)
#define IAccessibleAction_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) (This)->lpVtbl->get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings)
#define IAccessibleAction_get_name(This,actionIndex,name) (This)->lpVtbl->get_name(This,actionIndex,name)
#define IAccessibleAction_get_localizedName(This,actionIndex,localizedName) (This)->lpVtbl->get_localizedName(This,actionIndex,localizedName)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleAction_QueryInterface(IAccessibleAction* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleAction_AddRef(IAccessibleAction* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleAction_Release(IAccessibleAction* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleAction methods ***/
static inline HRESULT IAccessibleAction_nActions(IAccessibleAction* This,LONG *nActions) {
    return This->lpVtbl->nActions(This,nActions);
}
static inline HRESULT IAccessibleAction_doAction(IAccessibleAction* This,LONG actionIndex) {
    return This->lpVtbl->doAction(This,actionIndex);
}
static inline HRESULT IAccessibleAction_get_description(IAccessibleAction* This,LONG actionIndex,BSTR *description) {
    return This->lpVtbl->get_description(This,actionIndex,description);
}
static inline HRESULT IAccessibleAction_get_keyBinding(IAccessibleAction* This,LONG actionIndex,LONG nMaxBindings,BSTR **keyBindings,LONG *nBindings) {
    return This->lpVtbl->get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings);
}
static inline HRESULT IAccessibleAction_get_name(IAccessibleAction* This,LONG actionIndex,BSTR *name) {
    return This->lpVtbl->get_name(This,actionIndex,name);
}
static inline HRESULT IAccessibleAction_get_localizedName(IAccessibleAction* This,LONG actionIndex,BSTR *localizedName) {
    return This->lpVtbl->get_localizedName(This,actionIndex,localizedName);
}
#endif
#endif

#endif


#endif  /* __IAccessibleAction_INTERFACE_DEFINED__ */

enum IA2Role {
    IA2_ROLE_UNKNOWN = 0,
    IA2_ROLE_CANVAS = 0x401,
    IA2_ROLE_CAPTION = 0x402,
    IA2_ROLE_CHECK_MENU_ITEM = 0x403,
    IA2_ROLE_COLOR_CHOOSER = 0x404,
    IA2_ROLE_DATE_EDITOR = 0x405,
    IA2_ROLE_DESKTOP_ICON = 0x406,
    IA2_ROLE_DESKTOP_PANE = 0x407,
    IA2_ROLE_DIRECTORY_PANE = 0x408,
    IA2_ROLE_EDITBAR = 0x409,
    IA2_ROLE_EMBEDDED_OBJECT = 0x40a,
    IA2_ROLE_ENDNOTE = 0x40b,
    IA2_ROLE_FILE_CHOOSER = 0x40c,
    IA2_ROLE_FONT_CHOOSER = 0x40d,
    IA2_ROLE_FOOTER = 0x40e,
    IA2_ROLE_FOOTNOTE = 0x40f,
    IA2_ROLE_FORM = 0x410,
    IA2_ROLE_FRAME = 0x411,
    IA2_ROLE_GLASS_PANE = 0x412,
    IA2_ROLE_HEADER = 0x413,
    IA2_ROLE_HEADING = 0x414,
    IA2_ROLE_ICON = 0x415,
    IA2_ROLE_IMAGE_MAP = 0x416,
    IA2_ROLE_INPUT_METHOD_WINDOW = 0x417,
    IA2_ROLE_INTERNAL_FRAME = 0x418,
    IA2_ROLE_LABEL = 0x419,
    IA2_ROLE_LAYERED_PANE = 0x41a,
    IA2_ROLE_NOTE = 0x41b,
    IA2_ROLE_OPTION_PANE = 0x41c,
    IA2_ROLE_PAGE = 0x41d,
    IA2_ROLE_PARAGRAPH = 0x41e,
    IA2_ROLE_RADIO_MENU_ITEM = 0x41f,
    IA2_ROLE_REDUNDANT_OBJECT = 0x420,
    IA2_ROLE_ROOT_PANE = 0x421,
    IA2_ROLE_RULER = 0x422,
    IA2_ROLE_SCROLL_PANE = 0x423,
    IA2_ROLE_SECTION = 0x424,
    IA2_ROLE_SHAPE = 0x425,
    IA2_ROLE_SPLIT_PANE = 0x426,
    IA2_ROLE_TEAR_OFF_MENU = 0x427,
    IA2_ROLE_TERMINAL = 0x428,
    IA2_ROLE_TEXT_FRAME = 0x429,
    IA2_ROLE_TOGGLE_BUTTON = 0x42a,
    IA2_ROLE_VIEW_PORT = 0x42b,
    IA2_ROLE_COMPLEMENTARY_CONTENT = 0x42c
};
typedef LONG AccessibleStates;
enum IA2States {
    IA2_STATE_ACTIVE = 0x1,
    IA2_STATE_ARMED = 0x2,
    IA2_STATE_DEFUNCT = 0x4,
    IA2_STATE_EDITABLE = 0x8,
    IA2_STATE_HORIZONTAL = 0x10,
    IA2_STATE_ICONIFIED = 0x20,
    IA2_STATE_INVALID_ENTRY = 0x40,
    IA2_STATE_MANAGES_DESCENDANTS = 0x80,
    IA2_STATE_MODAL = 0x100,
    IA2_STATE_MULTI_LINE = 0x200,
    IA2_STATE_OPAQUE = 0x400,
    IA2_STATE_REQUIRED = 0x800,
    IA2_STATE_SELECTABLE_TEXT = 0x1000,
    IA2_STATE_SINGLE_LINE = 0x2000,
    IA2_STATE_STALE = 0x4000,
    IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
    IA2_STATE_TRANSIENT = 0x10000,
    IA2_STATE_VERTICAL = 0x20000,
    IA2_STATE_CHECKABLE = 0x40000,
    IA2_STATE_PINNED = 0x80000
};
typedef struct IA2Locale {
    BSTR language;
    BSTR country;
    BSTR variant;
} IA2Locale;
/*****************************************************************************
 * IAccessible2 interface
 */
#ifndef __IAccessible2_INTERFACE_DEFINED__
#define __IAccessible2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessible2, 0xe89f726e, 0xc4f4, 0x4c19, 0xbb,0x19, 0xb6,0x47,0xd7,0xfa,0x84,0x78);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e89f726e-c4f4-4c19-bb19-b647d7fa8478")
IAccessible2 : public IAccessible
{
    virtual HRESULT STDMETHODCALLTYPE get_nRelations(
        LONG *nRelations) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_relation(
        LONG relationIndex,
        IAccessibleRelation **relation) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_relations(
        LONG maxRelations,
        IAccessibleRelation **relations,
        LONG *nRelations) = 0;

    virtual HRESULT STDMETHODCALLTYPE role(
        LONG *role) = 0;

    virtual HRESULT STDMETHODCALLTYPE scrollTo(
        enum IA2ScrollType scrollType) = 0;

    virtual HRESULT STDMETHODCALLTYPE scrollToPoint(
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_groupPosition(
        LONG *groupLevel,
        LONG *similarItemsInGroup,
        LONG *positionInGroup) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_states(
        AccessibleStates *states) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_extendedRole(
        BSTR *extendedRole) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_localizedExtendedRole(
        BSTR *localizedExtendedRole) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nExtendedStates(
        LONG *nExtendedStates) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_extendedStates(
        LONG maxExtendedStates,
        BSTR **extendedStates,
        LONG *nExtendedStates) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_localizedExtendedStates(
        LONG maxLocalizedExtendedStates,
        BSTR **localizedExtendedStates,
        LONG *nLocalizedExtendedStates) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_uniqueID(
        LONG *uniqueID) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_windowHandle(
        HWND *windowHandle) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_indexInParent(
        LONG *indexInParent) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_locale(
        IA2Locale *locale) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_attributes(
        BSTR *attributes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessible2, 0xe89f726e, 0xc4f4, 0x4c19, 0xbb,0x19, 0xb6,0x47,0xd7,0xfa,0x84,0x78)
#endif
#else
typedef struct IAccessible2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IAccessible2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IAccessible2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IAccessible2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IAccessible2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IAccessible methods ***/
    HRESULT (STDMETHODCALLTYPE *get_accParent)(
        IAccessible2 *This,
        IDispatch **ppdispParent);

    HRESULT (STDMETHODCALLTYPE *get_accChildCount)(
        IAccessible2 *This,
        LONG *pcountChildren);

    HRESULT (STDMETHODCALLTYPE *get_accChild)(
        IAccessible2 *This,
        VARIANT varChildID,
        IDispatch **ppdispChild);

    HRESULT (STDMETHODCALLTYPE *get_accName)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *get_accValue)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR *pszValue);

    HRESULT (STDMETHODCALLTYPE *get_accDescription)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_accRole)(
        IAccessible2 *This,
        VARIANT varID,
        VARIANT *role);

    HRESULT (STDMETHODCALLTYPE *get_accState)(
        IAccessible2 *This,
        VARIANT varID,
        VARIANT *state);

    HRESULT (STDMETHODCALLTYPE *get_accHelp)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR *help);

    HRESULT (STDMETHODCALLTYPE *get_accHelpTopic)(
        IAccessible2 *This,
        BSTR *helpfile,
        VARIANT varID,
        LONG *pidTopic);

    HRESULT (STDMETHODCALLTYPE *get_accKeyboardShortcut)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR *shortcut);

    HRESULT (STDMETHODCALLTYPE *get_accFocus)(
        IAccessible2 *This,
        VARIANT *pvarID);

    HRESULT (STDMETHODCALLTYPE *get_accSelection)(
        IAccessible2 *This,
        VARIANT *pvarID);

    HRESULT (STDMETHODCALLTYPE *get_accDefaultAction)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR *action);

    HRESULT (STDMETHODCALLTYPE *accSelect)(
        IAccessible2 *This,
        LONG flagsSelect,
        VARIANT varID);

    HRESULT (STDMETHODCALLTYPE *accLocation)(
        IAccessible2 *This,
        LONG *left,
        LONG *top,
        LONG *width,
        LONG *height,
        VARIANT varID);

    HRESULT (STDMETHODCALLTYPE *accNavigate)(
        IAccessible2 *This,
        LONG dir,
        VARIANT varStart,
        VARIANT *pvarEnd);

    HRESULT (STDMETHODCALLTYPE *accHitTest)(
        IAccessible2 *This,
        LONG left,
        LONG top,
        VARIANT *pvarID);

    HRESULT (STDMETHODCALLTYPE *accDoDefaultAction)(
        IAccessible2 *This,
        VARIANT varID);

    HRESULT (STDMETHODCALLTYPE *put_accName)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR name);

    HRESULT (STDMETHODCALLTYPE *put_accValue)(
        IAccessible2 *This,
        VARIANT varID,
        BSTR value);

    /*** IAccessible2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_nRelations)(
        IAccessible2 *This,
        LONG *nRelations);

    HRESULT (STDMETHODCALLTYPE *get_relation)(
        IAccessible2 *This,
        LONG relationIndex,
        IAccessibleRelation **relation);

    HRESULT (STDMETHODCALLTYPE *get_relations)(
        IAccessible2 *This,
        LONG maxRelations,
        IAccessibleRelation **relations,
        LONG *nRelations);

    HRESULT (STDMETHODCALLTYPE *role)(
        IAccessible2 *This,
        LONG *role);

    HRESULT (STDMETHODCALLTYPE *scrollTo)(
        IAccessible2 *This,
        enum IA2ScrollType scrollType);

    HRESULT (STDMETHODCALLTYPE *scrollToPoint)(
        IAccessible2 *This,
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y);

    HRESULT (STDMETHODCALLTYPE *get_groupPosition)(
        IAccessible2 *This,
        LONG *groupLevel,
        LONG *similarItemsInGroup,
        LONG *positionInGroup);

    HRESULT (STDMETHODCALLTYPE *get_states)(
        IAccessible2 *This,
        AccessibleStates *states);

    HRESULT (STDMETHODCALLTYPE *get_extendedRole)(
        IAccessible2 *This,
        BSTR *extendedRole);

    HRESULT (STDMETHODCALLTYPE *get_localizedExtendedRole)(
        IAccessible2 *This,
        BSTR *localizedExtendedRole);

    HRESULT (STDMETHODCALLTYPE *get_nExtendedStates)(
        IAccessible2 *This,
        LONG *nExtendedStates);

    HRESULT (STDMETHODCALLTYPE *get_extendedStates)(
        IAccessible2 *This,
        LONG maxExtendedStates,
        BSTR **extendedStates,
        LONG *nExtendedStates);

    HRESULT (STDMETHODCALLTYPE *get_localizedExtendedStates)(
        IAccessible2 *This,
        LONG maxLocalizedExtendedStates,
        BSTR **localizedExtendedStates,
        LONG *nLocalizedExtendedStates);

    HRESULT (STDMETHODCALLTYPE *get_uniqueID)(
        IAccessible2 *This,
        LONG *uniqueID);

    HRESULT (STDMETHODCALLTYPE *get_windowHandle)(
        IAccessible2 *This,
        HWND *windowHandle);

    HRESULT (STDMETHODCALLTYPE *get_indexInParent)(
        IAccessible2 *This,
        LONG *indexInParent);

    HRESULT (STDMETHODCALLTYPE *get_locale)(
        IAccessible2 *This,
        IA2Locale *locale);

    HRESULT (STDMETHODCALLTYPE *get_attributes)(
        IAccessible2 *This,
        BSTR *attributes);

    END_INTERFACE
} IAccessible2Vtbl;

interface IAccessible2 {
    CONST_VTBL IAccessible2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessible2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessible2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessible2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IAccessible2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IAccessible2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IAccessible2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IAccessible2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IAccessible methods ***/
#define IAccessible2_get_accParent(This,ppdispParent) (This)->lpVtbl->get_accParent(This,ppdispParent)
#define IAccessible2_get_accChildCount(This,pcountChildren) (This)->lpVtbl->get_accChildCount(This,pcountChildren)
#define IAccessible2_get_accChild(This,varChildID,ppdispChild) (This)->lpVtbl->get_accChild(This,varChildID,ppdispChild)
#define IAccessible2_get_accName(This,varID,pszName) (This)->lpVtbl->get_accName(This,varID,pszName)
#define IAccessible2_get_accValue(This,varID,pszValue) (This)->lpVtbl->get_accValue(This,varID,pszValue)
#define IAccessible2_get_accDescription(This,varID,description) (This)->lpVtbl->get_accDescription(This,varID,description)
#define IAccessible2_get_accRole(This,varID,role) (This)->lpVtbl->get_accRole(This,varID,role)
#define IAccessible2_get_accState(This,varID,state) (This)->lpVtbl->get_accState(This,varID,state)
#define IAccessible2_get_accHelp(This,varID,help) (This)->lpVtbl->get_accHelp(This,varID,help)
#define IAccessible2_get_accHelpTopic(This,helpfile,varID,pidTopic) (This)->lpVtbl->get_accHelpTopic(This,helpfile,varID,pidTopic)
#define IAccessible2_get_accKeyboardShortcut(This,varID,shortcut) (This)->lpVtbl->get_accKeyboardShortcut(This,varID,shortcut)
#define IAccessible2_get_accFocus(This,pvarID) (This)->lpVtbl->get_accFocus(This,pvarID)
#define IAccessible2_get_accSelection(This,pvarID) (This)->lpVtbl->get_accSelection(This,pvarID)
#define IAccessible2_get_accDefaultAction(This,varID,action) (This)->lpVtbl->get_accDefaultAction(This,varID,action)
#define IAccessible2_accSelect(This,flagsSelect,varID) (This)->lpVtbl->accSelect(This,flagsSelect,varID)
#define IAccessible2_accLocation(This,left,top,width,height,varID) (This)->lpVtbl->accLocation(This,left,top,width,height,varID)
#define IAccessible2_accNavigate(This,dir,varStart,pvarEnd) (This)->lpVtbl->accNavigate(This,dir,varStart,pvarEnd)
#define IAccessible2_accHitTest(This,left,top,pvarID) (This)->lpVtbl->accHitTest(This,left,top,pvarID)
#define IAccessible2_accDoDefaultAction(This,varID) (This)->lpVtbl->accDoDefaultAction(This,varID)
#define IAccessible2_put_accName(This,varID,name) (This)->lpVtbl->put_accName(This,varID,name)
#define IAccessible2_put_accValue(This,varID,value) (This)->lpVtbl->put_accValue(This,varID,value)
/*** IAccessible2 methods ***/
#define IAccessible2_get_nRelations(This,nRelations) (This)->lpVtbl->get_nRelations(This,nRelations)
#define IAccessible2_get_relation(This,relationIndex,relation) (This)->lpVtbl->get_relation(This,relationIndex,relation)
#define IAccessible2_get_relations(This,maxRelations,relations,nRelations) (This)->lpVtbl->get_relations(This,maxRelations,relations,nRelations)
#define IAccessible2_role(This,role) (This)->lpVtbl->role(This,role)
#define IAccessible2_scrollTo(This,scrollType) (This)->lpVtbl->scrollTo(This,scrollType)
#define IAccessible2_scrollToPoint(This,coordinateType,x,y) (This)->lpVtbl->scrollToPoint(This,coordinateType,x,y)
#define IAccessible2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) (This)->lpVtbl->get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup)
#define IAccessible2_get_states(This,states) (This)->lpVtbl->get_states(This,states)
#define IAccessible2_get_extendedRole(This,extendedRole) (This)->lpVtbl->get_extendedRole(This,extendedRole)
#define IAccessible2_get_localizedExtendedRole(This,localizedExtendedRole) (This)->lpVtbl->get_localizedExtendedRole(This,localizedExtendedRole)
#define IAccessible2_get_nExtendedStates(This,nExtendedStates) (This)->lpVtbl->get_nExtendedStates(This,nExtendedStates)
#define IAccessible2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) (This)->lpVtbl->get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates)
#define IAccessible2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) (This)->lpVtbl->get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates)
#define IAccessible2_get_uniqueID(This,uniqueID) (This)->lpVtbl->get_uniqueID(This,uniqueID)
#define IAccessible2_get_windowHandle(This,windowHandle) (This)->lpVtbl->get_windowHandle(This,windowHandle)
#define IAccessible2_get_indexInParent(This,indexInParent) (This)->lpVtbl->get_indexInParent(This,indexInParent)
#define IAccessible2_get_locale(This,locale) (This)->lpVtbl->get_locale(This,locale)
#define IAccessible2_get_attributes(This,attributes) (This)->lpVtbl->get_attributes(This,attributes)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessible2_QueryInterface(IAccessible2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessible2_AddRef(IAccessible2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessible2_Release(IAccessible2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IAccessible2_GetTypeInfoCount(IAccessible2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IAccessible2_GetTypeInfo(IAccessible2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IAccessible2_GetIDsOfNames(IAccessible2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IAccessible2_Invoke(IAccessible2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IAccessible methods ***/
static inline HRESULT IAccessible2_get_accParent(IAccessible2* This,IDispatch **ppdispParent) {
    return This->lpVtbl->get_accParent(This,ppdispParent);
}
static inline HRESULT IAccessible2_get_accChildCount(IAccessible2* This,LONG *pcountChildren) {
    return This->lpVtbl->get_accChildCount(This,pcountChildren);
}
static inline HRESULT IAccessible2_get_accChild(IAccessible2* This,VARIANT varChildID,IDispatch **ppdispChild) {
    return This->lpVtbl->get_accChild(This,varChildID,ppdispChild);
}
static inline HRESULT IAccessible2_get_accName(IAccessible2* This,VARIANT varID,BSTR *pszName) {
    return This->lpVtbl->get_accName(This,varID,pszName);
}
static inline HRESULT IAccessible2_get_accValue(IAccessible2* This,VARIANT varID,BSTR *pszValue) {
    return This->lpVtbl->get_accValue(This,varID,pszValue);
}
static inline HRESULT IAccessible2_get_accDescription(IAccessible2* This,VARIANT varID,BSTR *description) {
    return This->lpVtbl->get_accDescription(This,varID,description);
}
static inline HRESULT IAccessible2_get_accRole(IAccessible2* This,VARIANT varID,VARIANT *role) {
    return This->lpVtbl->get_accRole(This,varID,role);
}
static inline HRESULT IAccessible2_get_accState(IAccessible2* This,VARIANT varID,VARIANT *state) {
    return This->lpVtbl->get_accState(This,varID,state);
}
static inline HRESULT IAccessible2_get_accHelp(IAccessible2* This,VARIANT varID,BSTR *help) {
    return This->lpVtbl->get_accHelp(This,varID,help);
}
static inline HRESULT IAccessible2_get_accHelpTopic(IAccessible2* This,BSTR *helpfile,VARIANT varID,LONG *pidTopic) {
    return This->lpVtbl->get_accHelpTopic(This,helpfile,varID,pidTopic);
}
static inline HRESULT IAccessible2_get_accKeyboardShortcut(IAccessible2* This,VARIANT varID,BSTR *shortcut) {
    return This->lpVtbl->get_accKeyboardShortcut(This,varID,shortcut);
}
static inline HRESULT IAccessible2_get_accFocus(IAccessible2* This,VARIANT *pvarID) {
    return This->lpVtbl->get_accFocus(This,pvarID);
}
static inline HRESULT IAccessible2_get_accSelection(IAccessible2* This,VARIANT *pvarID) {
    return This->lpVtbl->get_accSelection(This,pvarID);
}
static inline HRESULT IAccessible2_get_accDefaultAction(IAccessible2* This,VARIANT varID,BSTR *action) {
    return This->lpVtbl->get_accDefaultAction(This,varID,action);
}
static inline HRESULT IAccessible2_accSelect(IAccessible2* This,LONG flagsSelect,VARIANT varID) {
    return This->lpVtbl->accSelect(This,flagsSelect,varID);
}
static inline HRESULT IAccessible2_accLocation(IAccessible2* This,LONG *left,LONG *top,LONG *width,LONG *height,VARIANT varID) {
    return This->lpVtbl->accLocation(This,left,top,width,height,varID);
}
static inline HRESULT IAccessible2_accNavigate(IAccessible2* This,LONG dir,VARIANT varStart,VARIANT *pvarEnd) {
    return This->lpVtbl->accNavigate(This,dir,varStart,pvarEnd);
}
static inline HRESULT IAccessible2_accHitTest(IAccessible2* This,LONG left,LONG top,VARIANT *pvarID) {
    return This->lpVtbl->accHitTest(This,left,top,pvarID);
}
static inline HRESULT IAccessible2_accDoDefaultAction(IAccessible2* This,VARIANT varID) {
    return This->lpVtbl->accDoDefaultAction(This,varID);
}
static inline HRESULT IAccessible2_put_accName(IAccessible2* This,VARIANT varID,BSTR name) {
    return This->lpVtbl->put_accName(This,varID,name);
}
static inline HRESULT IAccessible2_put_accValue(IAccessible2* This,VARIANT varID,BSTR value) {
    return This->lpVtbl->put_accValue(This,varID,value);
}
/*** IAccessible2 methods ***/
static inline HRESULT IAccessible2_get_nRelations(IAccessible2* This,LONG *nRelations) {
    return This->lpVtbl->get_nRelations(This,nRelations);
}
static inline HRESULT IAccessible2_get_relation(IAccessible2* This,LONG relationIndex,IAccessibleRelation **relation) {
    return This->lpVtbl->get_relation(This,relationIndex,relation);
}
static inline HRESULT IAccessible2_get_relations(IAccessible2* This,LONG maxRelations,IAccessibleRelation **relations,LONG *nRelations) {
    return This->lpVtbl->get_relations(This,maxRelations,relations,nRelations);
}
static inline HRESULT IAccessible2_role(IAccessible2* This,LONG *role) {
    return This->lpVtbl->role(This,role);
}
static inline HRESULT IAccessible2_scrollTo(IAccessible2* This,enum IA2ScrollType scrollType) {
    return This->lpVtbl->scrollTo(This,scrollType);
}
static inline HRESULT IAccessible2_scrollToPoint(IAccessible2* This,enum IA2CoordinateType coordinateType,LONG x,LONG y) {
    return This->lpVtbl->scrollToPoint(This,coordinateType,x,y);
}
static inline HRESULT IAccessible2_get_groupPosition(IAccessible2* This,LONG *groupLevel,LONG *similarItemsInGroup,LONG *positionInGroup) {
    return This->lpVtbl->get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup);
}
static inline HRESULT IAccessible2_get_states(IAccessible2* This,AccessibleStates *states) {
    return This->lpVtbl->get_states(This,states);
}
static inline HRESULT IAccessible2_get_extendedRole(IAccessible2* This,BSTR *extendedRole) {
    return This->lpVtbl->get_extendedRole(This,extendedRole);
}
static inline HRESULT IAccessible2_get_localizedExtendedRole(IAccessible2* This,BSTR *localizedExtendedRole) {
    return This->lpVtbl->get_localizedExtendedRole(This,localizedExtendedRole);
}
static inline HRESULT IAccessible2_get_nExtendedStates(IAccessible2* This,LONG *nExtendedStates) {
    return This->lpVtbl->get_nExtendedStates(This,nExtendedStates);
}
static inline HRESULT IAccessible2_get_extendedStates(IAccessible2* This,LONG maxExtendedStates,BSTR **extendedStates,LONG *nExtendedStates) {
    return This->lpVtbl->get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates);
}
static inline HRESULT IAccessible2_get_localizedExtendedStates(IAccessible2* This,LONG maxLocalizedExtendedStates,BSTR **localizedExtendedStates,LONG *nLocalizedExtendedStates) {
    return This->lpVtbl->get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates);
}
static inline HRESULT IAccessible2_get_uniqueID(IAccessible2* This,LONG *uniqueID) {
    return This->lpVtbl->get_uniqueID(This,uniqueID);
}
static inline HRESULT IAccessible2_get_windowHandle(IAccessible2* This,HWND *windowHandle) {
    return This->lpVtbl->get_windowHandle(This,windowHandle);
}
static inline HRESULT IAccessible2_get_indexInParent(IAccessible2* This,LONG *indexInParent) {
    return This->lpVtbl->get_indexInParent(This,indexInParent);
}
static inline HRESULT IAccessible2_get_locale(IAccessible2* This,IA2Locale *locale) {
    return This->lpVtbl->get_locale(This,locale);
}
static inline HRESULT IAccessible2_get_attributes(IAccessible2* This,BSTR *attributes) {
    return This->lpVtbl->get_attributes(This,attributes);
}
#endif
#endif

#endif


#endif  /* __IAccessible2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessible2_2 interface
 */
#ifndef __IAccessible2_2_INTERFACE_DEFINED__
#define __IAccessible2_2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessible2_2, 0x6c9430e9, 0x299d, 0x4e6f, 0xbd,0x01, 0xa8,0x2a,0x1e,0x88,0xd3,0xff);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6c9430e9-299d-4e6f-bd01-a82a1e88d3ff")
IAccessible2_2 : public IAccessible2
{
    virtual HRESULT STDMETHODCALLTYPE get_attribute(
        BSTR name,
        VARIANT *attribute) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_accessibleWithCaret(
        IUnknown **accessible,
        LONG *caretOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_relationTargetsOfType(
        BSTR type,
        LONG maxTargets,
        IUnknown ***targets,
        LONG *nTargets) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessible2_2, 0x6c9430e9, 0x299d, 0x4e6f, 0xbd,0x01, 0xa8,0x2a,0x1e,0x88,0xd3,0xff)
#endif
#else
typedef struct IAccessible2_2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IAccessible2_2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IAccessible2_2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IAccessible2_2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IAccessible2_2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IAccessible methods ***/
    HRESULT (STDMETHODCALLTYPE *get_accParent)(
        IAccessible2_2 *This,
        IDispatch **ppdispParent);

    HRESULT (STDMETHODCALLTYPE *get_accChildCount)(
        IAccessible2_2 *This,
        LONG *pcountChildren);

    HRESULT (STDMETHODCALLTYPE *get_accChild)(
        IAccessible2_2 *This,
        VARIANT varChildID,
        IDispatch **ppdispChild);

    HRESULT (STDMETHODCALLTYPE *get_accName)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *get_accValue)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR *pszValue);

    HRESULT (STDMETHODCALLTYPE *get_accDescription)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_accRole)(
        IAccessible2_2 *This,
        VARIANT varID,
        VARIANT *role);

    HRESULT (STDMETHODCALLTYPE *get_accState)(
        IAccessible2_2 *This,
        VARIANT varID,
        VARIANT *state);

    HRESULT (STDMETHODCALLTYPE *get_accHelp)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR *help);

    HRESULT (STDMETHODCALLTYPE *get_accHelpTopic)(
        IAccessible2_2 *This,
        BSTR *helpfile,
        VARIANT varID,
        LONG *pidTopic);

    HRESULT (STDMETHODCALLTYPE *get_accKeyboardShortcut)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR *shortcut);

    HRESULT (STDMETHODCALLTYPE *get_accFocus)(
        IAccessible2_2 *This,
        VARIANT *pvarID);

    HRESULT (STDMETHODCALLTYPE *get_accSelection)(
        IAccessible2_2 *This,
        VARIANT *pvarID);

    HRESULT (STDMETHODCALLTYPE *get_accDefaultAction)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR *action);

    HRESULT (STDMETHODCALLTYPE *accSelect)(
        IAccessible2_2 *This,
        LONG flagsSelect,
        VARIANT varID);

    HRESULT (STDMETHODCALLTYPE *accLocation)(
        IAccessible2_2 *This,
        LONG *left,
        LONG *top,
        LONG *width,
        LONG *height,
        VARIANT varID);

    HRESULT (STDMETHODCALLTYPE *accNavigate)(
        IAccessible2_2 *This,
        LONG dir,
        VARIANT varStart,
        VARIANT *pvarEnd);

    HRESULT (STDMETHODCALLTYPE *accHitTest)(
        IAccessible2_2 *This,
        LONG left,
        LONG top,
        VARIANT *pvarID);

    HRESULT (STDMETHODCALLTYPE *accDoDefaultAction)(
        IAccessible2_2 *This,
        VARIANT varID);

    HRESULT (STDMETHODCALLTYPE *put_accName)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR name);

    HRESULT (STDMETHODCALLTYPE *put_accValue)(
        IAccessible2_2 *This,
        VARIANT varID,
        BSTR value);

    /*** IAccessible2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_nRelations)(
        IAccessible2_2 *This,
        LONG *nRelations);

    HRESULT (STDMETHODCALLTYPE *get_relation)(
        IAccessible2_2 *This,
        LONG relationIndex,
        IAccessibleRelation **relation);

    HRESULT (STDMETHODCALLTYPE *get_relations)(
        IAccessible2_2 *This,
        LONG maxRelations,
        IAccessibleRelation **relations,
        LONG *nRelations);

    HRESULT (STDMETHODCALLTYPE *role)(
        IAccessible2_2 *This,
        LONG *role);

    HRESULT (STDMETHODCALLTYPE *scrollTo)(
        IAccessible2_2 *This,
        enum IA2ScrollType scrollType);

    HRESULT (STDMETHODCALLTYPE *scrollToPoint)(
        IAccessible2_2 *This,
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y);

    HRESULT (STDMETHODCALLTYPE *get_groupPosition)(
        IAccessible2_2 *This,
        LONG *groupLevel,
        LONG *similarItemsInGroup,
        LONG *positionInGroup);

    HRESULT (STDMETHODCALLTYPE *get_states)(
        IAccessible2_2 *This,
        AccessibleStates *states);

    HRESULT (STDMETHODCALLTYPE *get_extendedRole)(
        IAccessible2_2 *This,
        BSTR *extendedRole);

    HRESULT (STDMETHODCALLTYPE *get_localizedExtendedRole)(
        IAccessible2_2 *This,
        BSTR *localizedExtendedRole);

    HRESULT (STDMETHODCALLTYPE *get_nExtendedStates)(
        IAccessible2_2 *This,
        LONG *nExtendedStates);

    HRESULT (STDMETHODCALLTYPE *get_extendedStates)(
        IAccessible2_2 *This,
        LONG maxExtendedStates,
        BSTR **extendedStates,
        LONG *nExtendedStates);

    HRESULT (STDMETHODCALLTYPE *get_localizedExtendedStates)(
        IAccessible2_2 *This,
        LONG maxLocalizedExtendedStates,
        BSTR **localizedExtendedStates,
        LONG *nLocalizedExtendedStates);

    HRESULT (STDMETHODCALLTYPE *get_uniqueID)(
        IAccessible2_2 *This,
        LONG *uniqueID);

    HRESULT (STDMETHODCALLTYPE *get_windowHandle)(
        IAccessible2_2 *This,
        HWND *windowHandle);

    HRESULT (STDMETHODCALLTYPE *get_indexInParent)(
        IAccessible2_2 *This,
        LONG *indexInParent);

    HRESULT (STDMETHODCALLTYPE *get_locale)(
        IAccessible2_2 *This,
        IA2Locale *locale);

    HRESULT (STDMETHODCALLTYPE *get_attributes)(
        IAccessible2_2 *This,
        BSTR *attributes);

    /*** IAccessible2_2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_attribute)(
        IAccessible2_2 *This,
        BSTR name,
        VARIANT *attribute);

    HRESULT (STDMETHODCALLTYPE *get_accessibleWithCaret)(
        IAccessible2_2 *This,
        IUnknown **accessible,
        LONG *caretOffset);

    HRESULT (STDMETHODCALLTYPE *get_relationTargetsOfType)(
        IAccessible2_2 *This,
        BSTR type,
        LONG maxTargets,
        IUnknown ***targets,
        LONG *nTargets);

    END_INTERFACE
} IAccessible2_2Vtbl;

interface IAccessible2_2 {
    CONST_VTBL IAccessible2_2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessible2_2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessible2_2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessible2_2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IAccessible2_2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IAccessible2_2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IAccessible2_2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IAccessible2_2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IAccessible methods ***/
#define IAccessible2_2_get_accParent(This,ppdispParent) (This)->lpVtbl->get_accParent(This,ppdispParent)
#define IAccessible2_2_get_accChildCount(This,pcountChildren) (This)->lpVtbl->get_accChildCount(This,pcountChildren)
#define IAccessible2_2_get_accChild(This,varChildID,ppdispChild) (This)->lpVtbl->get_accChild(This,varChildID,ppdispChild)
#define IAccessible2_2_get_accName(This,varID,pszName) (This)->lpVtbl->get_accName(This,varID,pszName)
#define IAccessible2_2_get_accValue(This,varID,pszValue) (This)->lpVtbl->get_accValue(This,varID,pszValue)
#define IAccessible2_2_get_accDescription(This,varID,description) (This)->lpVtbl->get_accDescription(This,varID,description)
#define IAccessible2_2_get_accRole(This,varID,role) (This)->lpVtbl->get_accRole(This,varID,role)
#define IAccessible2_2_get_accState(This,varID,state) (This)->lpVtbl->get_accState(This,varID,state)
#define IAccessible2_2_get_accHelp(This,varID,help) (This)->lpVtbl->get_accHelp(This,varID,help)
#define IAccessible2_2_get_accHelpTopic(This,helpfile,varID,pidTopic) (This)->lpVtbl->get_accHelpTopic(This,helpfile,varID,pidTopic)
#define IAccessible2_2_get_accKeyboardShortcut(This,varID,shortcut) (This)->lpVtbl->get_accKeyboardShortcut(This,varID,shortcut)
#define IAccessible2_2_get_accFocus(This,pvarID) (This)->lpVtbl->get_accFocus(This,pvarID)
#define IAccessible2_2_get_accSelection(This,pvarID) (This)->lpVtbl->get_accSelection(This,pvarID)
#define IAccessible2_2_get_accDefaultAction(This,varID,action) (This)->lpVtbl->get_accDefaultAction(This,varID,action)
#define IAccessible2_2_accSelect(This,flagsSelect,varID) (This)->lpVtbl->accSelect(This,flagsSelect,varID)
#define IAccessible2_2_accLocation(This,left,top,width,height,varID) (This)->lpVtbl->accLocation(This,left,top,width,height,varID)
#define IAccessible2_2_accNavigate(This,dir,varStart,pvarEnd) (This)->lpVtbl->accNavigate(This,dir,varStart,pvarEnd)
#define IAccessible2_2_accHitTest(This,left,top,pvarID) (This)->lpVtbl->accHitTest(This,left,top,pvarID)
#define IAccessible2_2_accDoDefaultAction(This,varID) (This)->lpVtbl->accDoDefaultAction(This,varID)
#define IAccessible2_2_put_accName(This,varID,name) (This)->lpVtbl->put_accName(This,varID,name)
#define IAccessible2_2_put_accValue(This,varID,value) (This)->lpVtbl->put_accValue(This,varID,value)
/*** IAccessible2 methods ***/
#define IAccessible2_2_get_nRelations(This,nRelations) (This)->lpVtbl->get_nRelations(This,nRelations)
#define IAccessible2_2_get_relation(This,relationIndex,relation) (This)->lpVtbl->get_relation(This,relationIndex,relation)
#define IAccessible2_2_get_relations(This,maxRelations,relations,nRelations) (This)->lpVtbl->get_relations(This,maxRelations,relations,nRelations)
#define IAccessible2_2_role(This,role) (This)->lpVtbl->role(This,role)
#define IAccessible2_2_scrollTo(This,scrollType) (This)->lpVtbl->scrollTo(This,scrollType)
#define IAccessible2_2_scrollToPoint(This,coordinateType,x,y) (This)->lpVtbl->scrollToPoint(This,coordinateType,x,y)
#define IAccessible2_2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) (This)->lpVtbl->get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup)
#define IAccessible2_2_get_states(This,states) (This)->lpVtbl->get_states(This,states)
#define IAccessible2_2_get_extendedRole(This,extendedRole) (This)->lpVtbl->get_extendedRole(This,extendedRole)
#define IAccessible2_2_get_localizedExtendedRole(This,localizedExtendedRole) (This)->lpVtbl->get_localizedExtendedRole(This,localizedExtendedRole)
#define IAccessible2_2_get_nExtendedStates(This,nExtendedStates) (This)->lpVtbl->get_nExtendedStates(This,nExtendedStates)
#define IAccessible2_2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) (This)->lpVtbl->get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates)
#define IAccessible2_2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) (This)->lpVtbl->get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates)
#define IAccessible2_2_get_uniqueID(This,uniqueID) (This)->lpVtbl->get_uniqueID(This,uniqueID)
#define IAccessible2_2_get_windowHandle(This,windowHandle) (This)->lpVtbl->get_windowHandle(This,windowHandle)
#define IAccessible2_2_get_indexInParent(This,indexInParent) (This)->lpVtbl->get_indexInParent(This,indexInParent)
#define IAccessible2_2_get_locale(This,locale) (This)->lpVtbl->get_locale(This,locale)
#define IAccessible2_2_get_attributes(This,attributes) (This)->lpVtbl->get_attributes(This,attributes)
/*** IAccessible2_2 methods ***/
#define IAccessible2_2_get_attribute(This,name,attribute) (This)->lpVtbl->get_attribute(This,name,attribute)
#define IAccessible2_2_get_accessibleWithCaret(This,accessible,caretOffset) (This)->lpVtbl->get_accessibleWithCaret(This,accessible,caretOffset)
#define IAccessible2_2_get_relationTargetsOfType(This,type,maxTargets,targets,nTargets) (This)->lpVtbl->get_relationTargetsOfType(This,type,maxTargets,targets,nTargets)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessible2_2_QueryInterface(IAccessible2_2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessible2_2_AddRef(IAccessible2_2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessible2_2_Release(IAccessible2_2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IAccessible2_2_GetTypeInfoCount(IAccessible2_2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IAccessible2_2_GetTypeInfo(IAccessible2_2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IAccessible2_2_GetIDsOfNames(IAccessible2_2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IAccessible2_2_Invoke(IAccessible2_2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IAccessible methods ***/
static inline HRESULT IAccessible2_2_get_accParent(IAccessible2_2* This,IDispatch **ppdispParent) {
    return This->lpVtbl->get_accParent(This,ppdispParent);
}
static inline HRESULT IAccessible2_2_get_accChildCount(IAccessible2_2* This,LONG *pcountChildren) {
    return This->lpVtbl->get_accChildCount(This,pcountChildren);
}
static inline HRESULT IAccessible2_2_get_accChild(IAccessible2_2* This,VARIANT varChildID,IDispatch **ppdispChild) {
    return This->lpVtbl->get_accChild(This,varChildID,ppdispChild);
}
static inline HRESULT IAccessible2_2_get_accName(IAccessible2_2* This,VARIANT varID,BSTR *pszName) {
    return This->lpVtbl->get_accName(This,varID,pszName);
}
static inline HRESULT IAccessible2_2_get_accValue(IAccessible2_2* This,VARIANT varID,BSTR *pszValue) {
    return This->lpVtbl->get_accValue(This,varID,pszValue);
}
static inline HRESULT IAccessible2_2_get_accDescription(IAccessible2_2* This,VARIANT varID,BSTR *description) {
    return This->lpVtbl->get_accDescription(This,varID,description);
}
static inline HRESULT IAccessible2_2_get_accRole(IAccessible2_2* This,VARIANT varID,VARIANT *role) {
    return This->lpVtbl->get_accRole(This,varID,role);
}
static inline HRESULT IAccessible2_2_get_accState(IAccessible2_2* This,VARIANT varID,VARIANT *state) {
    return This->lpVtbl->get_accState(This,varID,state);
}
static inline HRESULT IAccessible2_2_get_accHelp(IAccessible2_2* This,VARIANT varID,BSTR *help) {
    return This->lpVtbl->get_accHelp(This,varID,help);
}
static inline HRESULT IAccessible2_2_get_accHelpTopic(IAccessible2_2* This,BSTR *helpfile,VARIANT varID,LONG *pidTopic) {
    return This->lpVtbl->get_accHelpTopic(This,helpfile,varID,pidTopic);
}
static inline HRESULT IAccessible2_2_get_accKeyboardShortcut(IAccessible2_2* This,VARIANT varID,BSTR *shortcut) {
    return This->lpVtbl->get_accKeyboardShortcut(This,varID,shortcut);
}
static inline HRESULT IAccessible2_2_get_accFocus(IAccessible2_2* This,VARIANT *pvarID) {
    return This->lpVtbl->get_accFocus(This,pvarID);
}
static inline HRESULT IAccessible2_2_get_accSelection(IAccessible2_2* This,VARIANT *pvarID) {
    return This->lpVtbl->get_accSelection(This,pvarID);
}
static inline HRESULT IAccessible2_2_get_accDefaultAction(IAccessible2_2* This,VARIANT varID,BSTR *action) {
    return This->lpVtbl->get_accDefaultAction(This,varID,action);
}
static inline HRESULT IAccessible2_2_accSelect(IAccessible2_2* This,LONG flagsSelect,VARIANT varID) {
    return This->lpVtbl->accSelect(This,flagsSelect,varID);
}
static inline HRESULT IAccessible2_2_accLocation(IAccessible2_2* This,LONG *left,LONG *top,LONG *width,LONG *height,VARIANT varID) {
    return This->lpVtbl->accLocation(This,left,top,width,height,varID);
}
static inline HRESULT IAccessible2_2_accNavigate(IAccessible2_2* This,LONG dir,VARIANT varStart,VARIANT *pvarEnd) {
    return This->lpVtbl->accNavigate(This,dir,varStart,pvarEnd);
}
static inline HRESULT IAccessible2_2_accHitTest(IAccessible2_2* This,LONG left,LONG top,VARIANT *pvarID) {
    return This->lpVtbl->accHitTest(This,left,top,pvarID);
}
static inline HRESULT IAccessible2_2_accDoDefaultAction(IAccessible2_2* This,VARIANT varID) {
    return This->lpVtbl->accDoDefaultAction(This,varID);
}
static inline HRESULT IAccessible2_2_put_accName(IAccessible2_2* This,VARIANT varID,BSTR name) {
    return This->lpVtbl->put_accName(This,varID,name);
}
static inline HRESULT IAccessible2_2_put_accValue(IAccessible2_2* This,VARIANT varID,BSTR value) {
    return This->lpVtbl->put_accValue(This,varID,value);
}
/*** IAccessible2 methods ***/
static inline HRESULT IAccessible2_2_get_nRelations(IAccessible2_2* This,LONG *nRelations) {
    return This->lpVtbl->get_nRelations(This,nRelations);
}
static inline HRESULT IAccessible2_2_get_relation(IAccessible2_2* This,LONG relationIndex,IAccessibleRelation **relation) {
    return This->lpVtbl->get_relation(This,relationIndex,relation);
}
static inline HRESULT IAccessible2_2_get_relations(IAccessible2_2* This,LONG maxRelations,IAccessibleRelation **relations,LONG *nRelations) {
    return This->lpVtbl->get_relations(This,maxRelations,relations,nRelations);
}
static inline HRESULT IAccessible2_2_role(IAccessible2_2* This,LONG *role) {
    return This->lpVtbl->role(This,role);
}
static inline HRESULT IAccessible2_2_scrollTo(IAccessible2_2* This,enum IA2ScrollType scrollType) {
    return This->lpVtbl->scrollTo(This,scrollType);
}
static inline HRESULT IAccessible2_2_scrollToPoint(IAccessible2_2* This,enum IA2CoordinateType coordinateType,LONG x,LONG y) {
    return This->lpVtbl->scrollToPoint(This,coordinateType,x,y);
}
static inline HRESULT IAccessible2_2_get_groupPosition(IAccessible2_2* This,LONG *groupLevel,LONG *similarItemsInGroup,LONG *positionInGroup) {
    return This->lpVtbl->get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup);
}
static inline HRESULT IAccessible2_2_get_states(IAccessible2_2* This,AccessibleStates *states) {
    return This->lpVtbl->get_states(This,states);
}
static inline HRESULT IAccessible2_2_get_extendedRole(IAccessible2_2* This,BSTR *extendedRole) {
    return This->lpVtbl->get_extendedRole(This,extendedRole);
}
static inline HRESULT IAccessible2_2_get_localizedExtendedRole(IAccessible2_2* This,BSTR *localizedExtendedRole) {
    return This->lpVtbl->get_localizedExtendedRole(This,localizedExtendedRole);
}
static inline HRESULT IAccessible2_2_get_nExtendedStates(IAccessible2_2* This,LONG *nExtendedStates) {
    return This->lpVtbl->get_nExtendedStates(This,nExtendedStates);
}
static inline HRESULT IAccessible2_2_get_extendedStates(IAccessible2_2* This,LONG maxExtendedStates,BSTR **extendedStates,LONG *nExtendedStates) {
    return This->lpVtbl->get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates);
}
static inline HRESULT IAccessible2_2_get_localizedExtendedStates(IAccessible2_2* This,LONG maxLocalizedExtendedStates,BSTR **localizedExtendedStates,LONG *nLocalizedExtendedStates) {
    return This->lpVtbl->get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates);
}
static inline HRESULT IAccessible2_2_get_uniqueID(IAccessible2_2* This,LONG *uniqueID) {
    return This->lpVtbl->get_uniqueID(This,uniqueID);
}
static inline HRESULT IAccessible2_2_get_windowHandle(IAccessible2_2* This,HWND *windowHandle) {
    return This->lpVtbl->get_windowHandle(This,windowHandle);
}
static inline HRESULT IAccessible2_2_get_indexInParent(IAccessible2_2* This,LONG *indexInParent) {
    return This->lpVtbl->get_indexInParent(This,indexInParent);
}
static inline HRESULT IAccessible2_2_get_locale(IAccessible2_2* This,IA2Locale *locale) {
    return This->lpVtbl->get_locale(This,locale);
}
static inline HRESULT IAccessible2_2_get_attributes(IAccessible2_2* This,BSTR *attributes) {
    return This->lpVtbl->get_attributes(This,attributes);
}
/*** IAccessible2_2 methods ***/
static inline HRESULT IAccessible2_2_get_attribute(IAccessible2_2* This,BSTR name,VARIANT *attribute) {
    return This->lpVtbl->get_attribute(This,name,attribute);
}
static inline HRESULT IAccessible2_2_get_accessibleWithCaret(IAccessible2_2* This,IUnknown **accessible,LONG *caretOffset) {
    return This->lpVtbl->get_accessibleWithCaret(This,accessible,caretOffset);
}
static inline HRESULT IAccessible2_2_get_relationTargetsOfType(IAccessible2_2* This,BSTR type,LONG maxTargets,IUnknown ***targets,LONG *nTargets) {
    return This->lpVtbl->get_relationTargetsOfType(This,type,maxTargets,targets,nTargets);
}
#endif
#endif

#endif


#endif  /* __IAccessible2_2_INTERFACE_DEFINED__ */

typedef LONG IA2Color;
/*****************************************************************************
 * IAccessibleComponent interface
 */
#ifndef __IAccessibleComponent_INTERFACE_DEFINED__
#define __IAccessibleComponent_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleComponent, 0x1546d4b0, 0x4c98, 0x4bda, 0x89,0xae, 0x9a,0x64,0x74,0x8b,0xdd,0xe4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1546d4b0-4c98-4bda-89ae-9a64748bdde4")
IAccessibleComponent : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_locationInParent(
        LONG *x,
        LONG *y) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_foreground(
        IA2Color *foreground) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_background(
        IA2Color *background) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleComponent, 0x1546d4b0, 0x4c98, 0x4bda, 0x89,0xae, 0x9a,0x64,0x74,0x8b,0xdd,0xe4)
#endif
#else
typedef struct IAccessibleComponentVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleComponent methods ***/
    HRESULT (STDMETHODCALLTYPE *get_locationInParent)(
        IAccessibleComponent *This,
        LONG *x,
        LONG *y);

    HRESULT (STDMETHODCALLTYPE *get_foreground)(
        IAccessibleComponent *This,
        IA2Color *foreground);

    HRESULT (STDMETHODCALLTYPE *get_background)(
        IAccessibleComponent *This,
        IA2Color *background);

    END_INTERFACE
} IAccessibleComponentVtbl;

interface IAccessibleComponent {
    CONST_VTBL IAccessibleComponentVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleComponent_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleComponent_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleComponent methods ***/
#define IAccessibleComponent_get_locationInParent(This,x,y) (This)->lpVtbl->get_locationInParent(This,x,y)
#define IAccessibleComponent_get_foreground(This,foreground) (This)->lpVtbl->get_foreground(This,foreground)
#define IAccessibleComponent_get_background(This,background) (This)->lpVtbl->get_background(This,background)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleComponent_QueryInterface(IAccessibleComponent* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleComponent_AddRef(IAccessibleComponent* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleComponent_Release(IAccessibleComponent* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleComponent methods ***/
static inline HRESULT IAccessibleComponent_get_locationInParent(IAccessibleComponent* This,LONG *x,LONG *y) {
    return This->lpVtbl->get_locationInParent(This,x,y);
}
static inline HRESULT IAccessibleComponent_get_foreground(IAccessibleComponent* This,IA2Color *foreground) {
    return This->lpVtbl->get_foreground(This,foreground);
}
static inline HRESULT IAccessibleComponent_get_background(IAccessibleComponent* This,IA2Color *background) {
    return This->lpVtbl->get_background(This,background);
}
#endif
#endif

#endif


#endif  /* __IAccessibleComponent_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleValue interface
 */
#ifndef __IAccessibleValue_INTERFACE_DEFINED__
#define __IAccessibleValue_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleValue, 0x35855b5b, 0xc566, 0x4fd0, 0xa7,0xb1, 0xe6,0x54,0x65,0x60,0x03,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("35855b5b-c566-4fd0-a7b1-e65465600394")
IAccessibleValue : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_currentValue(
        VARIANT *currentValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE setCurrentValue(
        VARIANT value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_maximumValue(
        VARIANT *maximumValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_minimumValue(
        VARIANT *minimumValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleValue, 0x35855b5b, 0xc566, 0x4fd0, 0xa7,0xb1, 0xe6,0x54,0x65,0x60,0x03,0x94)
#endif
#else
typedef struct IAccessibleValueVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleValue methods ***/
    HRESULT (STDMETHODCALLTYPE *get_currentValue)(
        IAccessibleValue *This,
        VARIANT *currentValue);

    HRESULT (STDMETHODCALLTYPE *setCurrentValue)(
        IAccessibleValue *This,
        VARIANT value);

    HRESULT (STDMETHODCALLTYPE *get_maximumValue)(
        IAccessibleValue *This,
        VARIANT *maximumValue);

    HRESULT (STDMETHODCALLTYPE *get_minimumValue)(
        IAccessibleValue *This,
        VARIANT *minimumValue);

    END_INTERFACE
} IAccessibleValueVtbl;

interface IAccessibleValue {
    CONST_VTBL IAccessibleValueVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleValue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleValue_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleValue_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleValue methods ***/
#define IAccessibleValue_get_currentValue(This,currentValue) (This)->lpVtbl->get_currentValue(This,currentValue)
#define IAccessibleValue_setCurrentValue(This,value) (This)->lpVtbl->setCurrentValue(This,value)
#define IAccessibleValue_get_maximumValue(This,maximumValue) (This)->lpVtbl->get_maximumValue(This,maximumValue)
#define IAccessibleValue_get_minimumValue(This,minimumValue) (This)->lpVtbl->get_minimumValue(This,minimumValue)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleValue_QueryInterface(IAccessibleValue* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleValue_AddRef(IAccessibleValue* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleValue_Release(IAccessibleValue* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleValue methods ***/
static inline HRESULT IAccessibleValue_get_currentValue(IAccessibleValue* This,VARIANT *currentValue) {
    return This->lpVtbl->get_currentValue(This,currentValue);
}
static inline HRESULT IAccessibleValue_setCurrentValue(IAccessibleValue* This,VARIANT value) {
    return This->lpVtbl->setCurrentValue(This,value);
}
static inline HRESULT IAccessibleValue_get_maximumValue(IAccessibleValue* This,VARIANT *maximumValue) {
    return This->lpVtbl->get_maximumValue(This,maximumValue);
}
static inline HRESULT IAccessibleValue_get_minimumValue(IAccessibleValue* This,VARIANT *minimumValue) {
    return This->lpVtbl->get_minimumValue(This,minimumValue);
}
#endif
#endif

#endif


#endif  /* __IAccessibleValue_INTERFACE_DEFINED__ */

typedef struct IA2TextSegment {
    BSTR text;
    LONG start;
    LONG end;
} IA2TextSegment;
enum IA2TextBoundaryType {
    IA2_TEXT_BOUNDARY_CHAR = 0,
    IA2_TEXT_BOUNDARY_WORD = 1,
    IA2_TEXT_BOUNDARY_SENTENCE = 2,
    IA2_TEXT_BOUNDARY_PARAGRAPH = 3,
    IA2_TEXT_BOUNDARY_LINE = 4,
    IA2_TEXT_BOUNDARY_ALL = 5
};
/*****************************************************************************
 * IAccessibleText interface
 */
#ifndef __IAccessibleText_INTERFACE_DEFINED__
#define __IAccessibleText_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleText, 0x24fd2ffb, 0x3aad, 0x4a08, 0x83,0x35, 0xa3,0xad,0x89,0xc0,0xfb,0x4b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("24fd2ffb-3aad-4a08-8335-a3ad89c0fb4b")
IAccessibleText : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE addSelection(
        LONG startOffset,
        LONG endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_attributes(
        LONG offset,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *textAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_caretOffset(
        LONG *offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_characterExtents(
        LONG offset,
        enum IA2CoordinateType coordType,
        LONG *x,
        LONG *y,
        LONG *width,
        LONG *height) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nSelections(
        LONG *nSelections) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_offsetAtPoint(
        LONG x,
        LONG y,
        enum IA2CoordinateType coordType,
        LONG *offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_selection(
        LONG selectionIndex,
        LONG *startOffset,
        LONG *endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_text(
        LONG startOffset,
        LONG endOffset,
        BSTR *text) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_textBeforeOffset(
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_textAfterOffset(
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_textAtOffset(
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text) = 0;

    virtual HRESULT STDMETHODCALLTYPE removeSelection(
        LONG selectionIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE setCaretOffset(
        LONG offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE setSelection(
        LONG selectionIndex,
        LONG startOffset,
        LONG endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nCharacters(
        LONG *nCharacters) = 0;

    virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(
        LONG startIndex,
        LONG endIndex,
        enum IA2ScrollType scrollType) = 0;

    virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(
        LONG startIndex,
        LONG endIndex,
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_newText(
        IA2TextSegment *newText) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_oldText(
        IA2TextSegment *oldText) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleText, 0x24fd2ffb, 0x3aad, 0x4a08, 0x83,0x35, 0xa3,0xad,0x89,0xc0,0xfb,0x4b)
#endif
#else
typedef struct IAccessibleTextVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleText methods ***/
    HRESULT (STDMETHODCALLTYPE *addSelection)(
        IAccessibleText *This,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_attributes)(
        IAccessibleText *This,
        LONG offset,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *textAttributes);

    HRESULT (STDMETHODCALLTYPE *get_caretOffset)(
        IAccessibleText *This,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_characterExtents)(
        IAccessibleText *This,
        LONG offset,
        enum IA2CoordinateType coordType,
        LONG *x,
        LONG *y,
        LONG *width,
        LONG *height);

    HRESULT (STDMETHODCALLTYPE *get_nSelections)(
        IAccessibleText *This,
        LONG *nSelections);

    HRESULT (STDMETHODCALLTYPE *get_offsetAtPoint)(
        IAccessibleText *This,
        LONG x,
        LONG y,
        enum IA2CoordinateType coordType,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_selection)(
        IAccessibleText *This,
        LONG selectionIndex,
        LONG *startOffset,
        LONG *endOffset);

    HRESULT (STDMETHODCALLTYPE *get_text)(
        IAccessibleText *This,
        LONG startOffset,
        LONG endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textBeforeOffset)(
        IAccessibleText *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAfterOffset)(
        IAccessibleText *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAtOffset)(
        IAccessibleText *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *removeSelection)(
        IAccessibleText *This,
        LONG selectionIndex);

    HRESULT (STDMETHODCALLTYPE *setCaretOffset)(
        IAccessibleText *This,
        LONG offset);

    HRESULT (STDMETHODCALLTYPE *setSelection)(
        IAccessibleText *This,
        LONG selectionIndex,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_nCharacters)(
        IAccessibleText *This,
        LONG *nCharacters);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringTo)(
        IAccessibleText *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2ScrollType scrollType);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringToPoint)(
        IAccessibleText *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y);

    HRESULT (STDMETHODCALLTYPE *get_newText)(
        IAccessibleText *This,
        IA2TextSegment *newText);

    HRESULT (STDMETHODCALLTYPE *get_oldText)(
        IAccessibleText *This,
        IA2TextSegment *oldText);

    END_INTERFACE
} IAccessibleTextVtbl;

interface IAccessibleText {
    CONST_VTBL IAccessibleTextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleText_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleText_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleText_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleText methods ***/
#define IAccessibleText_addSelection(This,startOffset,endOffset) (This)->lpVtbl->addSelection(This,startOffset,endOffset)
#define IAccessibleText_get_attributes(This,offset,startOffset,endOffset,textAttributes) (This)->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes)
#define IAccessibleText_get_caretOffset(This,offset) (This)->lpVtbl->get_caretOffset(This,offset)
#define IAccessibleText_get_characterExtents(This,offset,coordType,x,y,width,height) (This)->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height)
#define IAccessibleText_get_nSelections(This,nSelections) (This)->lpVtbl->get_nSelections(This,nSelections)
#define IAccessibleText_get_offsetAtPoint(This,x,y,coordType,offset) (This)->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset)
#define IAccessibleText_get_selection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleText_get_text(This,startOffset,endOffset,text) (This)->lpVtbl->get_text(This,startOffset,endOffset,text)
#define IAccessibleText_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleText_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleText_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleText_removeSelection(This,selectionIndex) (This)->lpVtbl->removeSelection(This,selectionIndex)
#define IAccessibleText_setCaretOffset(This,offset) (This)->lpVtbl->setCaretOffset(This,offset)
#define IAccessibleText_setSelection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleText_get_nCharacters(This,nCharacters) (This)->lpVtbl->get_nCharacters(This,nCharacters)
#define IAccessibleText_scrollSubstringTo(This,startIndex,endIndex,scrollType) (This)->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType)
#define IAccessibleText_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) (This)->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y)
#define IAccessibleText_get_newText(This,newText) (This)->lpVtbl->get_newText(This,newText)
#define IAccessibleText_get_oldText(This,oldText) (This)->lpVtbl->get_oldText(This,oldText)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleText_QueryInterface(IAccessibleText* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleText_AddRef(IAccessibleText* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleText_Release(IAccessibleText* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleText methods ***/
static inline HRESULT IAccessibleText_addSelection(IAccessibleText* This,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->addSelection(This,startOffset,endOffset);
}
static inline HRESULT IAccessibleText_get_attributes(IAccessibleText* This,LONG offset,LONG *startOffset,LONG *endOffset,BSTR *textAttributes) {
    return This->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes);
}
static inline HRESULT IAccessibleText_get_caretOffset(IAccessibleText* This,LONG *offset) {
    return This->lpVtbl->get_caretOffset(This,offset);
}
static inline HRESULT IAccessibleText_get_characterExtents(IAccessibleText* This,LONG offset,enum IA2CoordinateType coordType,LONG *x,LONG *y,LONG *width,LONG *height) {
    return This->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height);
}
static inline HRESULT IAccessibleText_get_nSelections(IAccessibleText* This,LONG *nSelections) {
    return This->lpVtbl->get_nSelections(This,nSelections);
}
static inline HRESULT IAccessibleText_get_offsetAtPoint(IAccessibleText* This,LONG x,LONG y,enum IA2CoordinateType coordType,LONG *offset) {
    return This->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset);
}
static inline HRESULT IAccessibleText_get_selection(IAccessibleText* This,LONG selectionIndex,LONG *startOffset,LONG *endOffset) {
    return This->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleText_get_text(IAccessibleText* This,LONG startOffset,LONG endOffset,BSTR *text) {
    return This->lpVtbl->get_text(This,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText_get_textBeforeOffset(IAccessibleText* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText_get_textAfterOffset(IAccessibleText* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText_get_textAtOffset(IAccessibleText* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText_removeSelection(IAccessibleText* This,LONG selectionIndex) {
    return This->lpVtbl->removeSelection(This,selectionIndex);
}
static inline HRESULT IAccessibleText_setCaretOffset(IAccessibleText* This,LONG offset) {
    return This->lpVtbl->setCaretOffset(This,offset);
}
static inline HRESULT IAccessibleText_setSelection(IAccessibleText* This,LONG selectionIndex,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleText_get_nCharacters(IAccessibleText* This,LONG *nCharacters) {
    return This->lpVtbl->get_nCharacters(This,nCharacters);
}
static inline HRESULT IAccessibleText_scrollSubstringTo(IAccessibleText* This,LONG startIndex,LONG endIndex,enum IA2ScrollType scrollType) {
    return This->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType);
}
static inline HRESULT IAccessibleText_scrollSubstringToPoint(IAccessibleText* This,LONG startIndex,LONG endIndex,enum IA2CoordinateType coordinateType,LONG x,LONG y) {
    return This->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y);
}
static inline HRESULT IAccessibleText_get_newText(IAccessibleText* This,IA2TextSegment *newText) {
    return This->lpVtbl->get_newText(This,newText);
}
static inline HRESULT IAccessibleText_get_oldText(IAccessibleText* This,IA2TextSegment *oldText) {
    return This->lpVtbl->get_oldText(This,oldText);
}
#endif
#endif

#endif


#endif  /* __IAccessibleText_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleText2 interface
 */
#ifndef __IAccessibleText2_INTERFACE_DEFINED__
#define __IAccessibleText2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleText2, 0x9690a9cc, 0x5c80, 0x4df5, 0x85,0x2e, 0x2d,0x5a,0xe4,0x18,0x9a,0x54);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9690a9cc-5c80-4df5-852e-2d5ae4189a54")
IAccessibleText2 : public IAccessibleText
{
    virtual HRESULT STDMETHODCALLTYPE get_attributeRange(
        LONG offset,
        BSTR filter_tmp,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *attributeValues) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleText2, 0x9690a9cc, 0x5c80, 0x4df5, 0x85,0x2e, 0x2d,0x5a,0xe4,0x18,0x9a,0x54)
#endif
#else
typedef struct IAccessibleText2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleText methods ***/
    HRESULT (STDMETHODCALLTYPE *addSelection)(
        IAccessibleText2 *This,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_attributes)(
        IAccessibleText2 *This,
        LONG offset,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *textAttributes);

    HRESULT (STDMETHODCALLTYPE *get_caretOffset)(
        IAccessibleText2 *This,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_characterExtents)(
        IAccessibleText2 *This,
        LONG offset,
        enum IA2CoordinateType coordType,
        LONG *x,
        LONG *y,
        LONG *width,
        LONG *height);

    HRESULT (STDMETHODCALLTYPE *get_nSelections)(
        IAccessibleText2 *This,
        LONG *nSelections);

    HRESULT (STDMETHODCALLTYPE *get_offsetAtPoint)(
        IAccessibleText2 *This,
        LONG x,
        LONG y,
        enum IA2CoordinateType coordType,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_selection)(
        IAccessibleText2 *This,
        LONG selectionIndex,
        LONG *startOffset,
        LONG *endOffset);

    HRESULT (STDMETHODCALLTYPE *get_text)(
        IAccessibleText2 *This,
        LONG startOffset,
        LONG endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textBeforeOffset)(
        IAccessibleText2 *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAfterOffset)(
        IAccessibleText2 *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAtOffset)(
        IAccessibleText2 *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *removeSelection)(
        IAccessibleText2 *This,
        LONG selectionIndex);

    HRESULT (STDMETHODCALLTYPE *setCaretOffset)(
        IAccessibleText2 *This,
        LONG offset);

    HRESULT (STDMETHODCALLTYPE *setSelection)(
        IAccessibleText2 *This,
        LONG selectionIndex,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_nCharacters)(
        IAccessibleText2 *This,
        LONG *nCharacters);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringTo)(
        IAccessibleText2 *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2ScrollType scrollType);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringToPoint)(
        IAccessibleText2 *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y);

    HRESULT (STDMETHODCALLTYPE *get_newText)(
        IAccessibleText2 *This,
        IA2TextSegment *newText);

    HRESULT (STDMETHODCALLTYPE *get_oldText)(
        IAccessibleText2 *This,
        IA2TextSegment *oldText);

    /*** IAccessibleText2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_attributeRange)(
        IAccessibleText2 *This,
        LONG offset,
        BSTR filter_tmp,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *attributeValues);

    END_INTERFACE
} IAccessibleText2Vtbl;

interface IAccessibleText2 {
    CONST_VTBL IAccessibleText2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleText2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleText2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleText2_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleText methods ***/
#define IAccessibleText2_addSelection(This,startOffset,endOffset) (This)->lpVtbl->addSelection(This,startOffset,endOffset)
#define IAccessibleText2_get_attributes(This,offset,startOffset,endOffset,textAttributes) (This)->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes)
#define IAccessibleText2_get_caretOffset(This,offset) (This)->lpVtbl->get_caretOffset(This,offset)
#define IAccessibleText2_get_characterExtents(This,offset,coordType,x,y,width,height) (This)->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height)
#define IAccessibleText2_get_nSelections(This,nSelections) (This)->lpVtbl->get_nSelections(This,nSelections)
#define IAccessibleText2_get_offsetAtPoint(This,x,y,coordType,offset) (This)->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset)
#define IAccessibleText2_get_selection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleText2_get_text(This,startOffset,endOffset,text) (This)->lpVtbl->get_text(This,startOffset,endOffset,text)
#define IAccessibleText2_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleText2_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleText2_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleText2_removeSelection(This,selectionIndex) (This)->lpVtbl->removeSelection(This,selectionIndex)
#define IAccessibleText2_setCaretOffset(This,offset) (This)->lpVtbl->setCaretOffset(This,offset)
#define IAccessibleText2_setSelection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleText2_get_nCharacters(This,nCharacters) (This)->lpVtbl->get_nCharacters(This,nCharacters)
#define IAccessibleText2_scrollSubstringTo(This,startIndex,endIndex,scrollType) (This)->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType)
#define IAccessibleText2_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) (This)->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y)
#define IAccessibleText2_get_newText(This,newText) (This)->lpVtbl->get_newText(This,newText)
#define IAccessibleText2_get_oldText(This,oldText) (This)->lpVtbl->get_oldText(This,oldText)
/*** IAccessibleText2 methods ***/
#define IAccessibleText2_get_attributeRange(This,offset,filter_tmp,startOffset,endOffset,attributeValues) (This)->lpVtbl->get_attributeRange(This,offset,filter_tmp,startOffset,endOffset,attributeValues)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleText2_QueryInterface(IAccessibleText2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleText2_AddRef(IAccessibleText2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleText2_Release(IAccessibleText2* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleText methods ***/
static inline HRESULT IAccessibleText2_addSelection(IAccessibleText2* This,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->addSelection(This,startOffset,endOffset);
}
static inline HRESULT IAccessibleText2_get_attributes(IAccessibleText2* This,LONG offset,LONG *startOffset,LONG *endOffset,BSTR *textAttributes) {
    return This->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes);
}
static inline HRESULT IAccessibleText2_get_caretOffset(IAccessibleText2* This,LONG *offset) {
    return This->lpVtbl->get_caretOffset(This,offset);
}
static inline HRESULT IAccessibleText2_get_characterExtents(IAccessibleText2* This,LONG offset,enum IA2CoordinateType coordType,LONG *x,LONG *y,LONG *width,LONG *height) {
    return This->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height);
}
static inline HRESULT IAccessibleText2_get_nSelections(IAccessibleText2* This,LONG *nSelections) {
    return This->lpVtbl->get_nSelections(This,nSelections);
}
static inline HRESULT IAccessibleText2_get_offsetAtPoint(IAccessibleText2* This,LONG x,LONG y,enum IA2CoordinateType coordType,LONG *offset) {
    return This->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset);
}
static inline HRESULT IAccessibleText2_get_selection(IAccessibleText2* This,LONG selectionIndex,LONG *startOffset,LONG *endOffset) {
    return This->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleText2_get_text(IAccessibleText2* This,LONG startOffset,LONG endOffset,BSTR *text) {
    return This->lpVtbl->get_text(This,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText2_get_textBeforeOffset(IAccessibleText2* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText2_get_textAfterOffset(IAccessibleText2* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText2_get_textAtOffset(IAccessibleText2* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleText2_removeSelection(IAccessibleText2* This,LONG selectionIndex) {
    return This->lpVtbl->removeSelection(This,selectionIndex);
}
static inline HRESULT IAccessibleText2_setCaretOffset(IAccessibleText2* This,LONG offset) {
    return This->lpVtbl->setCaretOffset(This,offset);
}
static inline HRESULT IAccessibleText2_setSelection(IAccessibleText2* This,LONG selectionIndex,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleText2_get_nCharacters(IAccessibleText2* This,LONG *nCharacters) {
    return This->lpVtbl->get_nCharacters(This,nCharacters);
}
static inline HRESULT IAccessibleText2_scrollSubstringTo(IAccessibleText2* This,LONG startIndex,LONG endIndex,enum IA2ScrollType scrollType) {
    return This->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType);
}
static inline HRESULT IAccessibleText2_scrollSubstringToPoint(IAccessibleText2* This,LONG startIndex,LONG endIndex,enum IA2CoordinateType coordinateType,LONG x,LONG y) {
    return This->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y);
}
static inline HRESULT IAccessibleText2_get_newText(IAccessibleText2* This,IA2TextSegment *newText) {
    return This->lpVtbl->get_newText(This,newText);
}
static inline HRESULT IAccessibleText2_get_oldText(IAccessibleText2* This,IA2TextSegment *oldText) {
    return This->lpVtbl->get_oldText(This,oldText);
}
/*** IAccessibleText2 methods ***/
static inline HRESULT IAccessibleText2_get_attributeRange(IAccessibleText2* This,LONG offset,BSTR filter_tmp,LONG *startOffset,LONG *endOffset,BSTR *attributeValues) {
    return This->lpVtbl->get_attributeRange(This,offset,filter_tmp,startOffset,endOffset,attributeValues);
}
#endif
#endif

#endif


#endif  /* __IAccessibleText2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleEditableText interface
 */
#ifndef __IAccessibleEditableText_INTERFACE_DEFINED__
#define __IAccessibleEditableText_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleEditableText, 0xa59aa09a, 0x7011, 0x4b65, 0x93,0x9d, 0x32,0xb1,0xfb,0x55,0x47,0xe3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a59aa09a-7011-4b65-939d-32b1fb5547e3")
IAccessibleEditableText : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE copyText(
        LONG startOffset,
        LONG endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE deleteText(
        LONG startOffset,
        LONG endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE insertText(
        LONG offset,
        BSTR *text) = 0;

    virtual HRESULT STDMETHODCALLTYPE cutText(
        LONG startOffset,
        LONG endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE pasteText(
        LONG offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE replaceText(
        LONG startOffset,
        LONG endOffset,
        BSTR *text) = 0;

    virtual HRESULT STDMETHODCALLTYPE setAttributes(
        LONG startOffset,
        LONG endOffset,
        BSTR *attributes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleEditableText, 0xa59aa09a, 0x7011, 0x4b65, 0x93,0x9d, 0x32,0xb1,0xfb,0x55,0x47,0xe3)
#endif
#else
typedef struct IAccessibleEditableTextVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleEditableText methods ***/
    HRESULT (STDMETHODCALLTYPE *copyText)(
        IAccessibleEditableText *This,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *deleteText)(
        IAccessibleEditableText *This,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *insertText)(
        IAccessibleEditableText *This,
        LONG offset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *cutText)(
        IAccessibleEditableText *This,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *pasteText)(
        IAccessibleEditableText *This,
        LONG offset);

    HRESULT (STDMETHODCALLTYPE *replaceText)(
        IAccessibleEditableText *This,
        LONG startOffset,
        LONG endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *setAttributes)(
        IAccessibleEditableText *This,
        LONG startOffset,
        LONG endOffset,
        BSTR *attributes);

    END_INTERFACE
} IAccessibleEditableTextVtbl;

interface IAccessibleEditableText {
    CONST_VTBL IAccessibleEditableTextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleEditableText_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleEditableText_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleEditableText_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleEditableText methods ***/
#define IAccessibleEditableText_copyText(This,startOffset,endOffset) (This)->lpVtbl->copyText(This,startOffset,endOffset)
#define IAccessibleEditableText_deleteText(This,startOffset,endOffset) (This)->lpVtbl->deleteText(This,startOffset,endOffset)
#define IAccessibleEditableText_insertText(This,offset,text) (This)->lpVtbl->insertText(This,offset,text)
#define IAccessibleEditableText_cutText(This,startOffset,endOffset) (This)->lpVtbl->cutText(This,startOffset,endOffset)
#define IAccessibleEditableText_pasteText(This,offset) (This)->lpVtbl->pasteText(This,offset)
#define IAccessibleEditableText_replaceText(This,startOffset,endOffset,text) (This)->lpVtbl->replaceText(This,startOffset,endOffset,text)
#define IAccessibleEditableText_setAttributes(This,startOffset,endOffset,attributes) (This)->lpVtbl->setAttributes(This,startOffset,endOffset,attributes)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleEditableText_QueryInterface(IAccessibleEditableText* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleEditableText_AddRef(IAccessibleEditableText* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleEditableText_Release(IAccessibleEditableText* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleEditableText methods ***/
static inline HRESULT IAccessibleEditableText_copyText(IAccessibleEditableText* This,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->copyText(This,startOffset,endOffset);
}
static inline HRESULT IAccessibleEditableText_deleteText(IAccessibleEditableText* This,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->deleteText(This,startOffset,endOffset);
}
static inline HRESULT IAccessibleEditableText_insertText(IAccessibleEditableText* This,LONG offset,BSTR *text) {
    return This->lpVtbl->insertText(This,offset,text);
}
static inline HRESULT IAccessibleEditableText_cutText(IAccessibleEditableText* This,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->cutText(This,startOffset,endOffset);
}
static inline HRESULT IAccessibleEditableText_pasteText(IAccessibleEditableText* This,LONG offset) {
    return This->lpVtbl->pasteText(This,offset);
}
static inline HRESULT IAccessibleEditableText_replaceText(IAccessibleEditableText* This,LONG startOffset,LONG endOffset,BSTR *text) {
    return This->lpVtbl->replaceText(This,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleEditableText_setAttributes(IAccessibleEditableText* This,LONG startOffset,LONG endOffset,BSTR *attributes) {
    return This->lpVtbl->setAttributes(This,startOffset,endOffset,attributes);
}
#endif
#endif

#endif


#endif  /* __IAccessibleEditableText_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleHyperlink interface
 */
#ifndef __IAccessibleHyperlink_INTERFACE_DEFINED__
#define __IAccessibleHyperlink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleHyperlink, 0x01c20f2b, 0x3dd2, 0x400f, 0x94,0x9f, 0xad,0x00,0xbd,0xab,0x1d,0x41);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("01c20f2b-3dd2-400f-949f-ad00bdab1d41")
IAccessibleHyperlink : public IAccessibleAction
{
    virtual HRESULT STDMETHODCALLTYPE get_anchor(
        LONG index,
        VARIANT *anchor) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_anchorTarget(
        LONG index,
        VARIANT *anchorTarget) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_startIndex(
        LONG *index) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_endIndex(
        LONG *index) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_valid(
        boolean *valid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleHyperlink, 0x01c20f2b, 0x3dd2, 0x400f, 0x94,0x9f, 0xad,0x00,0xbd,0xab,0x1d,0x41)
#endif
#else
typedef struct IAccessibleHyperlinkVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleAction methods ***/
    HRESULT (STDMETHODCALLTYPE *nActions)(
        IAccessibleHyperlink *This,
        LONG *nActions);

    HRESULT (STDMETHODCALLTYPE *doAction)(
        IAccessibleHyperlink *This,
        LONG actionIndex);

    HRESULT (STDMETHODCALLTYPE *get_description)(
        IAccessibleHyperlink *This,
        LONG actionIndex,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_keyBinding)(
        IAccessibleHyperlink *This,
        LONG actionIndex,
        LONG nMaxBindings,
        BSTR **keyBindings,
        LONG *nBindings);

    HRESULT (STDMETHODCALLTYPE *get_name)(
        IAccessibleHyperlink *This,
        LONG actionIndex,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *get_localizedName)(
        IAccessibleHyperlink *This,
        LONG actionIndex,
        BSTR *localizedName);

    /*** IAccessibleHyperlink methods ***/
    HRESULT (STDMETHODCALLTYPE *get_anchor)(
        IAccessibleHyperlink *This,
        LONG index,
        VARIANT *anchor);

    HRESULT (STDMETHODCALLTYPE *get_anchorTarget)(
        IAccessibleHyperlink *This,
        LONG index,
        VARIANT *anchorTarget);

    HRESULT (STDMETHODCALLTYPE *get_startIndex)(
        IAccessibleHyperlink *This,
        LONG *index);

    HRESULT (STDMETHODCALLTYPE *get_endIndex)(
        IAccessibleHyperlink *This,
        LONG *index);

    HRESULT (STDMETHODCALLTYPE *get_valid)(
        IAccessibleHyperlink *This,
        boolean *valid);

    END_INTERFACE
} IAccessibleHyperlinkVtbl;

interface IAccessibleHyperlink {
    CONST_VTBL IAccessibleHyperlinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleHyperlink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleHyperlink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleHyperlink_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleAction methods ***/
#define IAccessibleHyperlink_nActions(This,nActions) (This)->lpVtbl->nActions(This,nActions)
#define IAccessibleHyperlink_doAction(This,actionIndex) (This)->lpVtbl->doAction(This,actionIndex)
#define IAccessibleHyperlink_get_description(This,actionIndex,description) (This)->lpVtbl->get_description(This,actionIndex,description)
#define IAccessibleHyperlink_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) (This)->lpVtbl->get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings)
#define IAccessibleHyperlink_get_name(This,actionIndex,name) (This)->lpVtbl->get_name(This,actionIndex,name)
#define IAccessibleHyperlink_get_localizedName(This,actionIndex,localizedName) (This)->lpVtbl->get_localizedName(This,actionIndex,localizedName)
/*** IAccessibleHyperlink methods ***/
#define IAccessibleHyperlink_get_anchor(This,index,anchor) (This)->lpVtbl->get_anchor(This,index,anchor)
#define IAccessibleHyperlink_get_anchorTarget(This,index,anchorTarget) (This)->lpVtbl->get_anchorTarget(This,index,anchorTarget)
#define IAccessibleHyperlink_get_startIndex(This,index) (This)->lpVtbl->get_startIndex(This,index)
#define IAccessibleHyperlink_get_endIndex(This,index) (This)->lpVtbl->get_endIndex(This,index)
#define IAccessibleHyperlink_get_valid(This,valid) (This)->lpVtbl->get_valid(This,valid)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleHyperlink_QueryInterface(IAccessibleHyperlink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleHyperlink_AddRef(IAccessibleHyperlink* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleHyperlink_Release(IAccessibleHyperlink* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleAction methods ***/
static inline HRESULT IAccessibleHyperlink_nActions(IAccessibleHyperlink* This,LONG *nActions) {
    return This->lpVtbl->nActions(This,nActions);
}
static inline HRESULT IAccessibleHyperlink_doAction(IAccessibleHyperlink* This,LONG actionIndex) {
    return This->lpVtbl->doAction(This,actionIndex);
}
static inline HRESULT IAccessibleHyperlink_get_description(IAccessibleHyperlink* This,LONG actionIndex,BSTR *description) {
    return This->lpVtbl->get_description(This,actionIndex,description);
}
static inline HRESULT IAccessibleHyperlink_get_keyBinding(IAccessibleHyperlink* This,LONG actionIndex,LONG nMaxBindings,BSTR **keyBindings,LONG *nBindings) {
    return This->lpVtbl->get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings);
}
static inline HRESULT IAccessibleHyperlink_get_name(IAccessibleHyperlink* This,LONG actionIndex,BSTR *name) {
    return This->lpVtbl->get_name(This,actionIndex,name);
}
static inline HRESULT IAccessibleHyperlink_get_localizedName(IAccessibleHyperlink* This,LONG actionIndex,BSTR *localizedName) {
    return This->lpVtbl->get_localizedName(This,actionIndex,localizedName);
}
/*** IAccessibleHyperlink methods ***/
static inline HRESULT IAccessibleHyperlink_get_anchor(IAccessibleHyperlink* This,LONG index,VARIANT *anchor) {
    return This->lpVtbl->get_anchor(This,index,anchor);
}
static inline HRESULT IAccessibleHyperlink_get_anchorTarget(IAccessibleHyperlink* This,LONG index,VARIANT *anchorTarget) {
    return This->lpVtbl->get_anchorTarget(This,index,anchorTarget);
}
static inline HRESULT IAccessibleHyperlink_get_startIndex(IAccessibleHyperlink* This,LONG *index) {
    return This->lpVtbl->get_startIndex(This,index);
}
static inline HRESULT IAccessibleHyperlink_get_endIndex(IAccessibleHyperlink* This,LONG *index) {
    return This->lpVtbl->get_endIndex(This,index);
}
static inline HRESULT IAccessibleHyperlink_get_valid(IAccessibleHyperlink* This,boolean *valid) {
    return This->lpVtbl->get_valid(This,valid);
}
#endif
#endif

#endif


#endif  /* __IAccessibleHyperlink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleHypertext interface
 */
#ifndef __IAccessibleHypertext_INTERFACE_DEFINED__
#define __IAccessibleHypertext_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleHypertext, 0x6b4f8bbf, 0xf1f2, 0x418a, 0xb3,0x5e, 0xa1,0x95,0xbc,0x41,0x03,0xb9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6b4f8bbf-f1f2-418a-b35e-a195bc4103b9")
IAccessibleHypertext : public IAccessibleText
{
    virtual HRESULT STDMETHODCALLTYPE get_nHyperlinks(
        LONG *hyperlinkCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_hyperlink(
        LONG index,
        IAccessibleHyperlink **hyperlink) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_hyperlinkIndex(
        LONG charIndex,
        LONG *hyperlinkIndex) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleHypertext, 0x6b4f8bbf, 0xf1f2, 0x418a, 0xb3,0x5e, 0xa1,0x95,0xbc,0x41,0x03,0xb9)
#endif
#else
typedef struct IAccessibleHypertextVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleText methods ***/
    HRESULT (STDMETHODCALLTYPE *addSelection)(
        IAccessibleHypertext *This,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_attributes)(
        IAccessibleHypertext *This,
        LONG offset,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *textAttributes);

    HRESULT (STDMETHODCALLTYPE *get_caretOffset)(
        IAccessibleHypertext *This,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_characterExtents)(
        IAccessibleHypertext *This,
        LONG offset,
        enum IA2CoordinateType coordType,
        LONG *x,
        LONG *y,
        LONG *width,
        LONG *height);

    HRESULT (STDMETHODCALLTYPE *get_nSelections)(
        IAccessibleHypertext *This,
        LONG *nSelections);

    HRESULT (STDMETHODCALLTYPE *get_offsetAtPoint)(
        IAccessibleHypertext *This,
        LONG x,
        LONG y,
        enum IA2CoordinateType coordType,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_selection)(
        IAccessibleHypertext *This,
        LONG selectionIndex,
        LONG *startOffset,
        LONG *endOffset);

    HRESULT (STDMETHODCALLTYPE *get_text)(
        IAccessibleHypertext *This,
        LONG startOffset,
        LONG endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textBeforeOffset)(
        IAccessibleHypertext *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAfterOffset)(
        IAccessibleHypertext *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAtOffset)(
        IAccessibleHypertext *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *removeSelection)(
        IAccessibleHypertext *This,
        LONG selectionIndex);

    HRESULT (STDMETHODCALLTYPE *setCaretOffset)(
        IAccessibleHypertext *This,
        LONG offset);

    HRESULT (STDMETHODCALLTYPE *setSelection)(
        IAccessibleHypertext *This,
        LONG selectionIndex,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_nCharacters)(
        IAccessibleHypertext *This,
        LONG *nCharacters);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringTo)(
        IAccessibleHypertext *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2ScrollType scrollType);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringToPoint)(
        IAccessibleHypertext *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y);

    HRESULT (STDMETHODCALLTYPE *get_newText)(
        IAccessibleHypertext *This,
        IA2TextSegment *newText);

    HRESULT (STDMETHODCALLTYPE *get_oldText)(
        IAccessibleHypertext *This,
        IA2TextSegment *oldText);

    /*** IAccessibleHypertext methods ***/
    HRESULT (STDMETHODCALLTYPE *get_nHyperlinks)(
        IAccessibleHypertext *This,
        LONG *hyperlinkCount);

    HRESULT (STDMETHODCALLTYPE *get_hyperlink)(
        IAccessibleHypertext *This,
        LONG index,
        IAccessibleHyperlink **hyperlink);

    HRESULT (STDMETHODCALLTYPE *get_hyperlinkIndex)(
        IAccessibleHypertext *This,
        LONG charIndex,
        LONG *hyperlinkIndex);

    END_INTERFACE
} IAccessibleHypertextVtbl;

interface IAccessibleHypertext {
    CONST_VTBL IAccessibleHypertextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleHypertext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleHypertext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleHypertext_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleText methods ***/
#define IAccessibleHypertext_addSelection(This,startOffset,endOffset) (This)->lpVtbl->addSelection(This,startOffset,endOffset)
#define IAccessibleHypertext_get_attributes(This,offset,startOffset,endOffset,textAttributes) (This)->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes)
#define IAccessibleHypertext_get_caretOffset(This,offset) (This)->lpVtbl->get_caretOffset(This,offset)
#define IAccessibleHypertext_get_characterExtents(This,offset,coordType,x,y,width,height) (This)->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height)
#define IAccessibleHypertext_get_nSelections(This,nSelections) (This)->lpVtbl->get_nSelections(This,nSelections)
#define IAccessibleHypertext_get_offsetAtPoint(This,x,y,coordType,offset) (This)->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset)
#define IAccessibleHypertext_get_selection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleHypertext_get_text(This,startOffset,endOffset,text) (This)->lpVtbl->get_text(This,startOffset,endOffset,text)
#define IAccessibleHypertext_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleHypertext_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleHypertext_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleHypertext_removeSelection(This,selectionIndex) (This)->lpVtbl->removeSelection(This,selectionIndex)
#define IAccessibleHypertext_setCaretOffset(This,offset) (This)->lpVtbl->setCaretOffset(This,offset)
#define IAccessibleHypertext_setSelection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleHypertext_get_nCharacters(This,nCharacters) (This)->lpVtbl->get_nCharacters(This,nCharacters)
#define IAccessibleHypertext_scrollSubstringTo(This,startIndex,endIndex,scrollType) (This)->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType)
#define IAccessibleHypertext_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) (This)->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y)
#define IAccessibleHypertext_get_newText(This,newText) (This)->lpVtbl->get_newText(This,newText)
#define IAccessibleHypertext_get_oldText(This,oldText) (This)->lpVtbl->get_oldText(This,oldText)
/*** IAccessibleHypertext methods ***/
#define IAccessibleHypertext_get_nHyperlinks(This,hyperlinkCount) (This)->lpVtbl->get_nHyperlinks(This,hyperlinkCount)
#define IAccessibleHypertext_get_hyperlink(This,index,hyperlink) (This)->lpVtbl->get_hyperlink(This,index,hyperlink)
#define IAccessibleHypertext_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) (This)->lpVtbl->get_hyperlinkIndex(This,charIndex,hyperlinkIndex)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleHypertext_QueryInterface(IAccessibleHypertext* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleHypertext_AddRef(IAccessibleHypertext* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleHypertext_Release(IAccessibleHypertext* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleText methods ***/
static inline HRESULT IAccessibleHypertext_addSelection(IAccessibleHypertext* This,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->addSelection(This,startOffset,endOffset);
}
static inline HRESULT IAccessibleHypertext_get_attributes(IAccessibleHypertext* This,LONG offset,LONG *startOffset,LONG *endOffset,BSTR *textAttributes) {
    return This->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes);
}
static inline HRESULT IAccessibleHypertext_get_caretOffset(IAccessibleHypertext* This,LONG *offset) {
    return This->lpVtbl->get_caretOffset(This,offset);
}
static inline HRESULT IAccessibleHypertext_get_characterExtents(IAccessibleHypertext* This,LONG offset,enum IA2CoordinateType coordType,LONG *x,LONG *y,LONG *width,LONG *height) {
    return This->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height);
}
static inline HRESULT IAccessibleHypertext_get_nSelections(IAccessibleHypertext* This,LONG *nSelections) {
    return This->lpVtbl->get_nSelections(This,nSelections);
}
static inline HRESULT IAccessibleHypertext_get_offsetAtPoint(IAccessibleHypertext* This,LONG x,LONG y,enum IA2CoordinateType coordType,LONG *offset) {
    return This->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset);
}
static inline HRESULT IAccessibleHypertext_get_selection(IAccessibleHypertext* This,LONG selectionIndex,LONG *startOffset,LONG *endOffset) {
    return This->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleHypertext_get_text(IAccessibleHypertext* This,LONG startOffset,LONG endOffset,BSTR *text) {
    return This->lpVtbl->get_text(This,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext_get_textBeforeOffset(IAccessibleHypertext* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext_get_textAfterOffset(IAccessibleHypertext* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext_get_textAtOffset(IAccessibleHypertext* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext_removeSelection(IAccessibleHypertext* This,LONG selectionIndex) {
    return This->lpVtbl->removeSelection(This,selectionIndex);
}
static inline HRESULT IAccessibleHypertext_setCaretOffset(IAccessibleHypertext* This,LONG offset) {
    return This->lpVtbl->setCaretOffset(This,offset);
}
static inline HRESULT IAccessibleHypertext_setSelection(IAccessibleHypertext* This,LONG selectionIndex,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleHypertext_get_nCharacters(IAccessibleHypertext* This,LONG *nCharacters) {
    return This->lpVtbl->get_nCharacters(This,nCharacters);
}
static inline HRESULT IAccessibleHypertext_scrollSubstringTo(IAccessibleHypertext* This,LONG startIndex,LONG endIndex,enum IA2ScrollType scrollType) {
    return This->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType);
}
static inline HRESULT IAccessibleHypertext_scrollSubstringToPoint(IAccessibleHypertext* This,LONG startIndex,LONG endIndex,enum IA2CoordinateType coordinateType,LONG x,LONG y) {
    return This->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y);
}
static inline HRESULT IAccessibleHypertext_get_newText(IAccessibleHypertext* This,IA2TextSegment *newText) {
    return This->lpVtbl->get_newText(This,newText);
}
static inline HRESULT IAccessibleHypertext_get_oldText(IAccessibleHypertext* This,IA2TextSegment *oldText) {
    return This->lpVtbl->get_oldText(This,oldText);
}
/*** IAccessibleHypertext methods ***/
static inline HRESULT IAccessibleHypertext_get_nHyperlinks(IAccessibleHypertext* This,LONG *hyperlinkCount) {
    return This->lpVtbl->get_nHyperlinks(This,hyperlinkCount);
}
static inline HRESULT IAccessibleHypertext_get_hyperlink(IAccessibleHypertext* This,LONG index,IAccessibleHyperlink **hyperlink) {
    return This->lpVtbl->get_hyperlink(This,index,hyperlink);
}
static inline HRESULT IAccessibleHypertext_get_hyperlinkIndex(IAccessibleHypertext* This,LONG charIndex,LONG *hyperlinkIndex) {
    return This->lpVtbl->get_hyperlinkIndex(This,charIndex,hyperlinkIndex);
}
#endif
#endif

#endif


#endif  /* __IAccessibleHypertext_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleHypertext2 interface
 */
#ifndef __IAccessibleHypertext2_INTERFACE_DEFINED__
#define __IAccessibleHypertext2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleHypertext2, 0xcf64d89f, 0x8287, 0x4b44, 0x85,0x01, 0xa8,0x27,0x45,0x3a,0x60,0x77);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cf64d89f-8287-4b44-8501-a827453a6077")
IAccessibleHypertext2 : public IAccessibleHypertext
{
    virtual HRESULT STDMETHODCALLTYPE get_hyperlinks(
        IAccessibleHyperlink ***hyperlinks,
        LONG *nHyperlinks) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleHypertext2, 0xcf64d89f, 0x8287, 0x4b44, 0x85,0x01, 0xa8,0x27,0x45,0x3a,0x60,0x77)
#endif
#else
typedef struct IAccessibleHypertext2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleText methods ***/
    HRESULT (STDMETHODCALLTYPE *addSelection)(
        IAccessibleHypertext2 *This,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_attributes)(
        IAccessibleHypertext2 *This,
        LONG offset,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *textAttributes);

    HRESULT (STDMETHODCALLTYPE *get_caretOffset)(
        IAccessibleHypertext2 *This,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_characterExtents)(
        IAccessibleHypertext2 *This,
        LONG offset,
        enum IA2CoordinateType coordType,
        LONG *x,
        LONG *y,
        LONG *width,
        LONG *height);

    HRESULT (STDMETHODCALLTYPE *get_nSelections)(
        IAccessibleHypertext2 *This,
        LONG *nSelections);

    HRESULT (STDMETHODCALLTYPE *get_offsetAtPoint)(
        IAccessibleHypertext2 *This,
        LONG x,
        LONG y,
        enum IA2CoordinateType coordType,
        LONG *offset);

    HRESULT (STDMETHODCALLTYPE *get_selection)(
        IAccessibleHypertext2 *This,
        LONG selectionIndex,
        LONG *startOffset,
        LONG *endOffset);

    HRESULT (STDMETHODCALLTYPE *get_text)(
        IAccessibleHypertext2 *This,
        LONG startOffset,
        LONG endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textBeforeOffset)(
        IAccessibleHypertext2 *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAfterOffset)(
        IAccessibleHypertext2 *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *get_textAtOffset)(
        IAccessibleHypertext2 *This,
        LONG offset,
        enum IA2TextBoundaryType boundaryType,
        LONG *startOffset,
        LONG *endOffset,
        BSTR *text);

    HRESULT (STDMETHODCALLTYPE *removeSelection)(
        IAccessibleHypertext2 *This,
        LONG selectionIndex);

    HRESULT (STDMETHODCALLTYPE *setCaretOffset)(
        IAccessibleHypertext2 *This,
        LONG offset);

    HRESULT (STDMETHODCALLTYPE *setSelection)(
        IAccessibleHypertext2 *This,
        LONG selectionIndex,
        LONG startOffset,
        LONG endOffset);

    HRESULT (STDMETHODCALLTYPE *get_nCharacters)(
        IAccessibleHypertext2 *This,
        LONG *nCharacters);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringTo)(
        IAccessibleHypertext2 *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2ScrollType scrollType);

    HRESULT (STDMETHODCALLTYPE *scrollSubstringToPoint)(
        IAccessibleHypertext2 *This,
        LONG startIndex,
        LONG endIndex,
        enum IA2CoordinateType coordinateType,
        LONG x,
        LONG y);

    HRESULT (STDMETHODCALLTYPE *get_newText)(
        IAccessibleHypertext2 *This,
        IA2TextSegment *newText);

    HRESULT (STDMETHODCALLTYPE *get_oldText)(
        IAccessibleHypertext2 *This,
        IA2TextSegment *oldText);

    /*** IAccessibleHypertext methods ***/
    HRESULT (STDMETHODCALLTYPE *get_nHyperlinks)(
        IAccessibleHypertext2 *This,
        LONG *hyperlinkCount);

    HRESULT (STDMETHODCALLTYPE *get_hyperlink)(
        IAccessibleHypertext2 *This,
        LONG index,
        IAccessibleHyperlink **hyperlink);

    HRESULT (STDMETHODCALLTYPE *get_hyperlinkIndex)(
        IAccessibleHypertext2 *This,
        LONG charIndex,
        LONG *hyperlinkIndex);

    /*** IAccessibleHypertext2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_hyperlinks)(
        IAccessibleHypertext2 *This,
        IAccessibleHyperlink ***hyperlinks,
        LONG *nHyperlinks);

    END_INTERFACE
} IAccessibleHypertext2Vtbl;

interface IAccessibleHypertext2 {
    CONST_VTBL IAccessibleHypertext2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleHypertext2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleHypertext2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleHypertext2_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleText methods ***/
#define IAccessibleHypertext2_addSelection(This,startOffset,endOffset) (This)->lpVtbl->addSelection(This,startOffset,endOffset)
#define IAccessibleHypertext2_get_attributes(This,offset,startOffset,endOffset,textAttributes) (This)->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes)
#define IAccessibleHypertext2_get_caretOffset(This,offset) (This)->lpVtbl->get_caretOffset(This,offset)
#define IAccessibleHypertext2_get_characterExtents(This,offset,coordType,x,y,width,height) (This)->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height)
#define IAccessibleHypertext2_get_nSelections(This,nSelections) (This)->lpVtbl->get_nSelections(This,nSelections)
#define IAccessibleHypertext2_get_offsetAtPoint(This,x,y,coordType,offset) (This)->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset)
#define IAccessibleHypertext2_get_selection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleHypertext2_get_text(This,startOffset,endOffset,text) (This)->lpVtbl->get_text(This,startOffset,endOffset,text)
#define IAccessibleHypertext2_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleHypertext2_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleHypertext2_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) (This)->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text)
#define IAccessibleHypertext2_removeSelection(This,selectionIndex) (This)->lpVtbl->removeSelection(This,selectionIndex)
#define IAccessibleHypertext2_setCaretOffset(This,offset) (This)->lpVtbl->setCaretOffset(This,offset)
#define IAccessibleHypertext2_setSelection(This,selectionIndex,startOffset,endOffset) (This)->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset)
#define IAccessibleHypertext2_get_nCharacters(This,nCharacters) (This)->lpVtbl->get_nCharacters(This,nCharacters)
#define IAccessibleHypertext2_scrollSubstringTo(This,startIndex,endIndex,scrollType) (This)->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType)
#define IAccessibleHypertext2_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) (This)->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y)
#define IAccessibleHypertext2_get_newText(This,newText) (This)->lpVtbl->get_newText(This,newText)
#define IAccessibleHypertext2_get_oldText(This,oldText) (This)->lpVtbl->get_oldText(This,oldText)
/*** IAccessibleHypertext methods ***/
#define IAccessibleHypertext2_get_nHyperlinks(This,hyperlinkCount) (This)->lpVtbl->get_nHyperlinks(This,hyperlinkCount)
#define IAccessibleHypertext2_get_hyperlink(This,index,hyperlink) (This)->lpVtbl->get_hyperlink(This,index,hyperlink)
#define IAccessibleHypertext2_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) (This)->lpVtbl->get_hyperlinkIndex(This,charIndex,hyperlinkIndex)
/*** IAccessibleHypertext2 methods ***/
#define IAccessibleHypertext2_get_hyperlinks(This,hyperlinks,nHyperlinks) (This)->lpVtbl->get_hyperlinks(This,hyperlinks,nHyperlinks)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleHypertext2_QueryInterface(IAccessibleHypertext2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleHypertext2_AddRef(IAccessibleHypertext2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleHypertext2_Release(IAccessibleHypertext2* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleText methods ***/
static inline HRESULT IAccessibleHypertext2_addSelection(IAccessibleHypertext2* This,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->addSelection(This,startOffset,endOffset);
}
static inline HRESULT IAccessibleHypertext2_get_attributes(IAccessibleHypertext2* This,LONG offset,LONG *startOffset,LONG *endOffset,BSTR *textAttributes) {
    return This->lpVtbl->get_attributes(This,offset,startOffset,endOffset,textAttributes);
}
static inline HRESULT IAccessibleHypertext2_get_caretOffset(IAccessibleHypertext2* This,LONG *offset) {
    return This->lpVtbl->get_caretOffset(This,offset);
}
static inline HRESULT IAccessibleHypertext2_get_characterExtents(IAccessibleHypertext2* This,LONG offset,enum IA2CoordinateType coordType,LONG *x,LONG *y,LONG *width,LONG *height) {
    return This->lpVtbl->get_characterExtents(This,offset,coordType,x,y,width,height);
}
static inline HRESULT IAccessibleHypertext2_get_nSelections(IAccessibleHypertext2* This,LONG *nSelections) {
    return This->lpVtbl->get_nSelections(This,nSelections);
}
static inline HRESULT IAccessibleHypertext2_get_offsetAtPoint(IAccessibleHypertext2* This,LONG x,LONG y,enum IA2CoordinateType coordType,LONG *offset) {
    return This->lpVtbl->get_offsetAtPoint(This,x,y,coordType,offset);
}
static inline HRESULT IAccessibleHypertext2_get_selection(IAccessibleHypertext2* This,LONG selectionIndex,LONG *startOffset,LONG *endOffset) {
    return This->lpVtbl->get_selection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleHypertext2_get_text(IAccessibleHypertext2* This,LONG startOffset,LONG endOffset,BSTR *text) {
    return This->lpVtbl->get_text(This,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext2_get_textBeforeOffset(IAccessibleHypertext2* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext2_get_textAfterOffset(IAccessibleHypertext2* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext2_get_textAtOffset(IAccessibleHypertext2* This,LONG offset,enum IA2TextBoundaryType boundaryType,LONG *startOffset,LONG *endOffset,BSTR *text) {
    return This->lpVtbl->get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text);
}
static inline HRESULT IAccessibleHypertext2_removeSelection(IAccessibleHypertext2* This,LONG selectionIndex) {
    return This->lpVtbl->removeSelection(This,selectionIndex);
}
static inline HRESULT IAccessibleHypertext2_setCaretOffset(IAccessibleHypertext2* This,LONG offset) {
    return This->lpVtbl->setCaretOffset(This,offset);
}
static inline HRESULT IAccessibleHypertext2_setSelection(IAccessibleHypertext2* This,LONG selectionIndex,LONG startOffset,LONG endOffset) {
    return This->lpVtbl->setSelection(This,selectionIndex,startOffset,endOffset);
}
static inline HRESULT IAccessibleHypertext2_get_nCharacters(IAccessibleHypertext2* This,LONG *nCharacters) {
    return This->lpVtbl->get_nCharacters(This,nCharacters);
}
static inline HRESULT IAccessibleHypertext2_scrollSubstringTo(IAccessibleHypertext2* This,LONG startIndex,LONG endIndex,enum IA2ScrollType scrollType) {
    return This->lpVtbl->scrollSubstringTo(This,startIndex,endIndex,scrollType);
}
static inline HRESULT IAccessibleHypertext2_scrollSubstringToPoint(IAccessibleHypertext2* This,LONG startIndex,LONG endIndex,enum IA2CoordinateType coordinateType,LONG x,LONG y) {
    return This->lpVtbl->scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y);
}
static inline HRESULT IAccessibleHypertext2_get_newText(IAccessibleHypertext2* This,IA2TextSegment *newText) {
    return This->lpVtbl->get_newText(This,newText);
}
static inline HRESULT IAccessibleHypertext2_get_oldText(IAccessibleHypertext2* This,IA2TextSegment *oldText) {
    return This->lpVtbl->get_oldText(This,oldText);
}
/*** IAccessibleHypertext methods ***/
static inline HRESULT IAccessibleHypertext2_get_nHyperlinks(IAccessibleHypertext2* This,LONG *hyperlinkCount) {
    return This->lpVtbl->get_nHyperlinks(This,hyperlinkCount);
}
static inline HRESULT IAccessibleHypertext2_get_hyperlink(IAccessibleHypertext2* This,LONG index,IAccessibleHyperlink **hyperlink) {
    return This->lpVtbl->get_hyperlink(This,index,hyperlink);
}
static inline HRESULT IAccessibleHypertext2_get_hyperlinkIndex(IAccessibleHypertext2* This,LONG charIndex,LONG *hyperlinkIndex) {
    return This->lpVtbl->get_hyperlinkIndex(This,charIndex,hyperlinkIndex);
}
/*** IAccessibleHypertext2 methods ***/
static inline HRESULT IAccessibleHypertext2_get_hyperlinks(IAccessibleHypertext2* This,IAccessibleHyperlink ***hyperlinks,LONG *nHyperlinks) {
    return This->lpVtbl->get_hyperlinks(This,hyperlinks,nHyperlinks);
}
#endif
#endif

#endif


#endif  /* __IAccessibleHypertext2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleTable interface
 */
#ifndef __IAccessibleTable_INTERFACE_DEFINED__
#define __IAccessibleTable_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleTable, 0x35ad8070, 0xc20c, 0x4fb4, 0xb0,0x94, 0xf4,0xf7,0x27,0x5d,0xd4,0x69);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("35ad8070-c20c-4fb4-b094-f4f7275dd469")
IAccessibleTable : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_accessibleAt(
        LONG row,
        LONG column,
        IUnknown **accessible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_caption(
        IUnknown **accessible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_childIndex(
        LONG rowIndex,
        LONG columnIndex,
        LONG *cellIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_columnDescription(
        LONG column,
        BSTR *description) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_columnExtentAt(
        LONG row,
        LONG column,
        LONG *nColumnsSpanned) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_columnHeader(
        IAccessibleTable **accessibleTable,
        LONG *startingRowIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_columnIndex(
        LONG cellIndex,
        LONG *columnIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nColumns(
        LONG *columnCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nRows(
        LONG *rowCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nSelectedChildren(
        LONG *cellCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
        LONG *columnCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nSelectedRows(
        LONG *rowCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowDescription(
        LONG row,
        BSTR *description) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowExtentAt(
        LONG row,
        LONG column,
        LONG *nRowsSpanned) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowHeader(
        IAccessibleTable **accessibleTable,
        LONG *startingColumnIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowIndex(
        LONG cellIndex,
        LONG *rowIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_selectedChildren(
        LONG maxChildren,
        LONG **children,
        LONG *nChildren) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_selectedColumns(
        LONG maxColumns,
        LONG **columns,
        LONG *nColumns) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_selectedRows(
        LONG maxRows,
        LONG **rows,
        LONG *nRows) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_summary(
        IUnknown **accessible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_isColumnSelected(
        LONG column,
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_isRowSelected(
        LONG row,
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_isSelected(
        LONG row,
        LONG column,
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE selectRow(
        LONG row) = 0;

    virtual HRESULT STDMETHODCALLTYPE selectColumn(
        LONG column) = 0;

    virtual HRESULT STDMETHODCALLTYPE unselectRow(
        LONG row) = 0;

    virtual HRESULT STDMETHODCALLTYPE unselectColumn(
        LONG column) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowColumnExtentsAtIndex(
        LONG index,
        LONG *row,
        LONG *column,
        LONG *rowExtents,
        LONG *columnExtents,
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_modelChange(
        IA2TableModelChange *modelChange) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleTable, 0x35ad8070, 0xc20c, 0x4fb4, 0xb0,0x94, 0xf4,0xf7,0x27,0x5d,0xd4,0x69)
#endif
#else
typedef struct IAccessibleTableVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleTable methods ***/
    HRESULT (STDMETHODCALLTYPE *get_accessibleAt)(
        IAccessibleTable *This,
        LONG row,
        LONG column,
        IUnknown **accessible);

    HRESULT (STDMETHODCALLTYPE *get_caption)(
        IAccessibleTable *This,
        IUnknown **accessible);

    HRESULT (STDMETHODCALLTYPE *get_childIndex)(
        IAccessibleTable *This,
        LONG rowIndex,
        LONG columnIndex,
        LONG *cellIndex);

    HRESULT (STDMETHODCALLTYPE *get_columnDescription)(
        IAccessibleTable *This,
        LONG column,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_columnExtentAt)(
        IAccessibleTable *This,
        LONG row,
        LONG column,
        LONG *nColumnsSpanned);

    HRESULT (STDMETHODCALLTYPE *get_columnHeader)(
        IAccessibleTable *This,
        IAccessibleTable **accessibleTable,
        LONG *startingRowIndex);

    HRESULT (STDMETHODCALLTYPE *get_columnIndex)(
        IAccessibleTable *This,
        LONG cellIndex,
        LONG *columnIndex);

    HRESULT (STDMETHODCALLTYPE *get_nColumns)(
        IAccessibleTable *This,
        LONG *columnCount);

    HRESULT (STDMETHODCALLTYPE *get_nRows)(
        IAccessibleTable *This,
        LONG *rowCount);

    HRESULT (STDMETHODCALLTYPE *get_nSelectedChildren)(
        IAccessibleTable *This,
        LONG *cellCount);

    HRESULT (STDMETHODCALLTYPE *get_nSelectedColumns)(
        IAccessibleTable *This,
        LONG *columnCount);

    HRESULT (STDMETHODCALLTYPE *get_nSelectedRows)(
        IAccessibleTable *This,
        LONG *rowCount);

    HRESULT (STDMETHODCALLTYPE *get_rowDescription)(
        IAccessibleTable *This,
        LONG row,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_rowExtentAt)(
        IAccessibleTable *This,
        LONG row,
        LONG column,
        LONG *nRowsSpanned);

    HRESULT (STDMETHODCALLTYPE *get_rowHeader)(
        IAccessibleTable *This,
        IAccessibleTable **accessibleTable,
        LONG *startingColumnIndex);

    HRESULT (STDMETHODCALLTYPE *get_rowIndex)(
        IAccessibleTable *This,
        LONG cellIndex,
        LONG *rowIndex);

    HRESULT (STDMETHODCALLTYPE *get_selectedChildren)(
        IAccessibleTable *This,
        LONG maxChildren,
        LONG **children,
        LONG *nChildren);

    HRESULT (STDMETHODCALLTYPE *get_selectedColumns)(
        IAccessibleTable *This,
        LONG maxColumns,
        LONG **columns,
        LONG *nColumns);

    HRESULT (STDMETHODCALLTYPE *get_selectedRows)(
        IAccessibleTable *This,
        LONG maxRows,
        LONG **rows,
        LONG *nRows);

    HRESULT (STDMETHODCALLTYPE *get_summary)(
        IAccessibleTable *This,
        IUnknown **accessible);

    HRESULT (STDMETHODCALLTYPE *get_isColumnSelected)(
        IAccessibleTable *This,
        LONG column,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *get_isRowSelected)(
        IAccessibleTable *This,
        LONG row,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *get_isSelected)(
        IAccessibleTable *This,
        LONG row,
        LONG column,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *selectRow)(
        IAccessibleTable *This,
        LONG row);

    HRESULT (STDMETHODCALLTYPE *selectColumn)(
        IAccessibleTable *This,
        LONG column);

    HRESULT (STDMETHODCALLTYPE *unselectRow)(
        IAccessibleTable *This,
        LONG row);

    HRESULT (STDMETHODCALLTYPE *unselectColumn)(
        IAccessibleTable *This,
        LONG column);

    HRESULT (STDMETHODCALLTYPE *get_rowColumnExtentsAtIndex)(
        IAccessibleTable *This,
        LONG index,
        LONG *row,
        LONG *column,
        LONG *rowExtents,
        LONG *columnExtents,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *get_modelChange)(
        IAccessibleTable *This,
        IA2TableModelChange *modelChange);

    END_INTERFACE
} IAccessibleTableVtbl;

interface IAccessibleTable {
    CONST_VTBL IAccessibleTableVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleTable_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleTable_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleTable methods ***/
#define IAccessibleTable_get_accessibleAt(This,row,column,accessible) (This)->lpVtbl->get_accessibleAt(This,row,column,accessible)
#define IAccessibleTable_get_caption(This,accessible) (This)->lpVtbl->get_caption(This,accessible)
#define IAccessibleTable_get_childIndex(This,rowIndex,columnIndex,cellIndex) (This)->lpVtbl->get_childIndex(This,rowIndex,columnIndex,cellIndex)
#define IAccessibleTable_get_columnDescription(This,column,description) (This)->lpVtbl->get_columnDescription(This,column,description)
#define IAccessibleTable_get_columnExtentAt(This,row,column,nColumnsSpanned) (This)->lpVtbl->get_columnExtentAt(This,row,column,nColumnsSpanned)
#define IAccessibleTable_get_columnHeader(This,accessibleTable,startingRowIndex) (This)->lpVtbl->get_columnHeader(This,accessibleTable,startingRowIndex)
#define IAccessibleTable_get_columnIndex(This,cellIndex,columnIndex) (This)->lpVtbl->get_columnIndex(This,cellIndex,columnIndex)
#define IAccessibleTable_get_nColumns(This,columnCount) (This)->lpVtbl->get_nColumns(This,columnCount)
#define IAccessibleTable_get_nRows(This,rowCount) (This)->lpVtbl->get_nRows(This,rowCount)
#define IAccessibleTable_get_nSelectedChildren(This,cellCount) (This)->lpVtbl->get_nSelectedChildren(This,cellCount)
#define IAccessibleTable_get_nSelectedColumns(This,columnCount) (This)->lpVtbl->get_nSelectedColumns(This,columnCount)
#define IAccessibleTable_get_nSelectedRows(This,rowCount) (This)->lpVtbl->get_nSelectedRows(This,rowCount)
#define IAccessibleTable_get_rowDescription(This,row,description) (This)->lpVtbl->get_rowDescription(This,row,description)
#define IAccessibleTable_get_rowExtentAt(This,row,column,nRowsSpanned) (This)->lpVtbl->get_rowExtentAt(This,row,column,nRowsSpanned)
#define IAccessibleTable_get_rowHeader(This,accessibleTable,startingColumnIndex) (This)->lpVtbl->get_rowHeader(This,accessibleTable,startingColumnIndex)
#define IAccessibleTable_get_rowIndex(This,cellIndex,rowIndex) (This)->lpVtbl->get_rowIndex(This,cellIndex,rowIndex)
#define IAccessibleTable_get_selectedChildren(This,maxChildren,children,nChildren) (This)->lpVtbl->get_selectedChildren(This,maxChildren,children,nChildren)
#define IAccessibleTable_get_selectedColumns(This,maxColumns,columns,nColumns) (This)->lpVtbl->get_selectedColumns(This,maxColumns,columns,nColumns)
#define IAccessibleTable_get_selectedRows(This,maxRows,rows,nRows) (This)->lpVtbl->get_selectedRows(This,maxRows,rows,nRows)
#define IAccessibleTable_get_summary(This,accessible) (This)->lpVtbl->get_summary(This,accessible)
#define IAccessibleTable_get_isColumnSelected(This,column,isSelected) (This)->lpVtbl->get_isColumnSelected(This,column,isSelected)
#define IAccessibleTable_get_isRowSelected(This,row,isSelected) (This)->lpVtbl->get_isRowSelected(This,row,isSelected)
#define IAccessibleTable_get_isSelected(This,row,column,isSelected) (This)->lpVtbl->get_isSelected(This,row,column,isSelected)
#define IAccessibleTable_selectRow(This,row) (This)->lpVtbl->selectRow(This,row)
#define IAccessibleTable_selectColumn(This,column) (This)->lpVtbl->selectColumn(This,column)
#define IAccessibleTable_unselectRow(This,row) (This)->lpVtbl->unselectRow(This,row)
#define IAccessibleTable_unselectColumn(This,column) (This)->lpVtbl->unselectColumn(This,column)
#define IAccessibleTable_get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) (This)->lpVtbl->get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected)
#define IAccessibleTable_get_modelChange(This,modelChange) (This)->lpVtbl->get_modelChange(This,modelChange)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleTable_QueryInterface(IAccessibleTable* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleTable_AddRef(IAccessibleTable* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleTable_Release(IAccessibleTable* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleTable methods ***/
static inline HRESULT IAccessibleTable_get_accessibleAt(IAccessibleTable* This,LONG row,LONG column,IUnknown **accessible) {
    return This->lpVtbl->get_accessibleAt(This,row,column,accessible);
}
static inline HRESULT IAccessibleTable_get_caption(IAccessibleTable* This,IUnknown **accessible) {
    return This->lpVtbl->get_caption(This,accessible);
}
static inline HRESULT IAccessibleTable_get_childIndex(IAccessibleTable* This,LONG rowIndex,LONG columnIndex,LONG *cellIndex) {
    return This->lpVtbl->get_childIndex(This,rowIndex,columnIndex,cellIndex);
}
static inline HRESULT IAccessibleTable_get_columnDescription(IAccessibleTable* This,LONG column,BSTR *description) {
    return This->lpVtbl->get_columnDescription(This,column,description);
}
static inline HRESULT IAccessibleTable_get_columnExtentAt(IAccessibleTable* This,LONG row,LONG column,LONG *nColumnsSpanned) {
    return This->lpVtbl->get_columnExtentAt(This,row,column,nColumnsSpanned);
}
static inline HRESULT IAccessibleTable_get_columnHeader(IAccessibleTable* This,IAccessibleTable **accessibleTable,LONG *startingRowIndex) {
    return This->lpVtbl->get_columnHeader(This,accessibleTable,startingRowIndex);
}
static inline HRESULT IAccessibleTable_get_columnIndex(IAccessibleTable* This,LONG cellIndex,LONG *columnIndex) {
    return This->lpVtbl->get_columnIndex(This,cellIndex,columnIndex);
}
static inline HRESULT IAccessibleTable_get_nColumns(IAccessibleTable* This,LONG *columnCount) {
    return This->lpVtbl->get_nColumns(This,columnCount);
}
static inline HRESULT IAccessibleTable_get_nRows(IAccessibleTable* This,LONG *rowCount) {
    return This->lpVtbl->get_nRows(This,rowCount);
}
static inline HRESULT IAccessibleTable_get_nSelectedChildren(IAccessibleTable* This,LONG *cellCount) {
    return This->lpVtbl->get_nSelectedChildren(This,cellCount);
}
static inline HRESULT IAccessibleTable_get_nSelectedColumns(IAccessibleTable* This,LONG *columnCount) {
    return This->lpVtbl->get_nSelectedColumns(This,columnCount);
}
static inline HRESULT IAccessibleTable_get_nSelectedRows(IAccessibleTable* This,LONG *rowCount) {
    return This->lpVtbl->get_nSelectedRows(This,rowCount);
}
static inline HRESULT IAccessibleTable_get_rowDescription(IAccessibleTable* This,LONG row,BSTR *description) {
    return This->lpVtbl->get_rowDescription(This,row,description);
}
static inline HRESULT IAccessibleTable_get_rowExtentAt(IAccessibleTable* This,LONG row,LONG column,LONG *nRowsSpanned) {
    return This->lpVtbl->get_rowExtentAt(This,row,column,nRowsSpanned);
}
static inline HRESULT IAccessibleTable_get_rowHeader(IAccessibleTable* This,IAccessibleTable **accessibleTable,LONG *startingColumnIndex) {
    return This->lpVtbl->get_rowHeader(This,accessibleTable,startingColumnIndex);
}
static inline HRESULT IAccessibleTable_get_rowIndex(IAccessibleTable* This,LONG cellIndex,LONG *rowIndex) {
    return This->lpVtbl->get_rowIndex(This,cellIndex,rowIndex);
}
static inline HRESULT IAccessibleTable_get_selectedChildren(IAccessibleTable* This,LONG maxChildren,LONG **children,LONG *nChildren) {
    return This->lpVtbl->get_selectedChildren(This,maxChildren,children,nChildren);
}
static inline HRESULT IAccessibleTable_get_selectedColumns(IAccessibleTable* This,LONG maxColumns,LONG **columns,LONG *nColumns) {
    return This->lpVtbl->get_selectedColumns(This,maxColumns,columns,nColumns);
}
static inline HRESULT IAccessibleTable_get_selectedRows(IAccessibleTable* This,LONG maxRows,LONG **rows,LONG *nRows) {
    return This->lpVtbl->get_selectedRows(This,maxRows,rows,nRows);
}
static inline HRESULT IAccessibleTable_get_summary(IAccessibleTable* This,IUnknown **accessible) {
    return This->lpVtbl->get_summary(This,accessible);
}
static inline HRESULT IAccessibleTable_get_isColumnSelected(IAccessibleTable* This,LONG column,boolean *isSelected) {
    return This->lpVtbl->get_isColumnSelected(This,column,isSelected);
}
static inline HRESULT IAccessibleTable_get_isRowSelected(IAccessibleTable* This,LONG row,boolean *isSelected) {
    return This->lpVtbl->get_isRowSelected(This,row,isSelected);
}
static inline HRESULT IAccessibleTable_get_isSelected(IAccessibleTable* This,LONG row,LONG column,boolean *isSelected) {
    return This->lpVtbl->get_isSelected(This,row,column,isSelected);
}
static inline HRESULT IAccessibleTable_selectRow(IAccessibleTable* This,LONG row) {
    return This->lpVtbl->selectRow(This,row);
}
static inline HRESULT IAccessibleTable_selectColumn(IAccessibleTable* This,LONG column) {
    return This->lpVtbl->selectColumn(This,column);
}
static inline HRESULT IAccessibleTable_unselectRow(IAccessibleTable* This,LONG row) {
    return This->lpVtbl->unselectRow(This,row);
}
static inline HRESULT IAccessibleTable_unselectColumn(IAccessibleTable* This,LONG column) {
    return This->lpVtbl->unselectColumn(This,column);
}
static inline HRESULT IAccessibleTable_get_rowColumnExtentsAtIndex(IAccessibleTable* This,LONG index,LONG *row,LONG *column,LONG *rowExtents,LONG *columnExtents,boolean *isSelected) {
    return This->lpVtbl->get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected);
}
static inline HRESULT IAccessibleTable_get_modelChange(IAccessibleTable* This,IA2TableModelChange *modelChange) {
    return This->lpVtbl->get_modelChange(This,modelChange);
}
#endif
#endif

#endif


#endif  /* __IAccessibleTable_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleTable2 interface
 */
#ifndef __IAccessibleTable2_INTERFACE_DEFINED__
#define __IAccessibleTable2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleTable2, 0x6167f295, 0x06f0, 0x4cdd, 0xa1,0xfa, 0x02,0xe2,0x51,0x53,0xd8,0x69);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6167f295-06f0-4cdd-a1fa-02e25153d869")
IAccessibleTable2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_cellAt(
        LONG row,
        LONG column,
        IUnknown **cell) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_caption(
        IUnknown **accessible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_columnDescription(
        LONG column,
        BSTR *description) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nColumns(
        LONG *columnCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nRows(
        LONG *rowCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nSelectedCells(
        LONG *cellCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
        LONG *columnCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nSelectedRows(
        LONG *rowCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowDescription(
        LONG row,
        BSTR *description) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_selectedCells(
        IUnknown ***cells,
        LONG *nSelectedCells) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_selectedColumns(
        LONG **selectedColumns,
        LONG *nColumns) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_selectedRows(
        LONG **selectedRows,
        LONG *nRows) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_summary(
        IUnknown **accessible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_isColumnSelected(
        LONG column,
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_isRowSelected(
        LONG row,
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE selectRow(
        LONG row) = 0;

    virtual HRESULT STDMETHODCALLTYPE selectColumn(
        LONG column) = 0;

    virtual HRESULT STDMETHODCALLTYPE unselectRow(
        LONG row) = 0;

    virtual HRESULT STDMETHODCALLTYPE unselectColumn(
        LONG column) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_modelChange(
        IA2TableModelChange *modelChange) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleTable2, 0x6167f295, 0x06f0, 0x4cdd, 0xa1,0xfa, 0x02,0xe2,0x51,0x53,0xd8,0x69)
#endif
#else
typedef struct IAccessibleTable2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleTable2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_cellAt)(
        IAccessibleTable2 *This,
        LONG row,
        LONG column,
        IUnknown **cell);

    HRESULT (STDMETHODCALLTYPE *get_caption)(
        IAccessibleTable2 *This,
        IUnknown **accessible);

    HRESULT (STDMETHODCALLTYPE *get_columnDescription)(
        IAccessibleTable2 *This,
        LONG column,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_nColumns)(
        IAccessibleTable2 *This,
        LONG *columnCount);

    HRESULT (STDMETHODCALLTYPE *get_nRows)(
        IAccessibleTable2 *This,
        LONG *rowCount);

    HRESULT (STDMETHODCALLTYPE *get_nSelectedCells)(
        IAccessibleTable2 *This,
        LONG *cellCount);

    HRESULT (STDMETHODCALLTYPE *get_nSelectedColumns)(
        IAccessibleTable2 *This,
        LONG *columnCount);

    HRESULT (STDMETHODCALLTYPE *get_nSelectedRows)(
        IAccessibleTable2 *This,
        LONG *rowCount);

    HRESULT (STDMETHODCALLTYPE *get_rowDescription)(
        IAccessibleTable2 *This,
        LONG row,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_selectedCells)(
        IAccessibleTable2 *This,
        IUnknown ***cells,
        LONG *nSelectedCells);

    HRESULT (STDMETHODCALLTYPE *get_selectedColumns)(
        IAccessibleTable2 *This,
        LONG **selectedColumns,
        LONG *nColumns);

    HRESULT (STDMETHODCALLTYPE *get_selectedRows)(
        IAccessibleTable2 *This,
        LONG **selectedRows,
        LONG *nRows);

    HRESULT (STDMETHODCALLTYPE *get_summary)(
        IAccessibleTable2 *This,
        IUnknown **accessible);

    HRESULT (STDMETHODCALLTYPE *get_isColumnSelected)(
        IAccessibleTable2 *This,
        LONG column,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *get_isRowSelected)(
        IAccessibleTable2 *This,
        LONG row,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *selectRow)(
        IAccessibleTable2 *This,
        LONG row);

    HRESULT (STDMETHODCALLTYPE *selectColumn)(
        IAccessibleTable2 *This,
        LONG column);

    HRESULT (STDMETHODCALLTYPE *unselectRow)(
        IAccessibleTable2 *This,
        LONG row);

    HRESULT (STDMETHODCALLTYPE *unselectColumn)(
        IAccessibleTable2 *This,
        LONG column);

    HRESULT (STDMETHODCALLTYPE *get_modelChange)(
        IAccessibleTable2 *This,
        IA2TableModelChange *modelChange);

    END_INTERFACE
} IAccessibleTable2Vtbl;

interface IAccessibleTable2 {
    CONST_VTBL IAccessibleTable2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleTable2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleTable2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleTable2_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleTable2 methods ***/
#define IAccessibleTable2_get_cellAt(This,row,column,cell) (This)->lpVtbl->get_cellAt(This,row,column,cell)
#define IAccessibleTable2_get_caption(This,accessible) (This)->lpVtbl->get_caption(This,accessible)
#define IAccessibleTable2_get_columnDescription(This,column,description) (This)->lpVtbl->get_columnDescription(This,column,description)
#define IAccessibleTable2_get_nColumns(This,columnCount) (This)->lpVtbl->get_nColumns(This,columnCount)
#define IAccessibleTable2_get_nRows(This,rowCount) (This)->lpVtbl->get_nRows(This,rowCount)
#define IAccessibleTable2_get_nSelectedCells(This,cellCount) (This)->lpVtbl->get_nSelectedCells(This,cellCount)
#define IAccessibleTable2_get_nSelectedColumns(This,columnCount) (This)->lpVtbl->get_nSelectedColumns(This,columnCount)
#define IAccessibleTable2_get_nSelectedRows(This,rowCount) (This)->lpVtbl->get_nSelectedRows(This,rowCount)
#define IAccessibleTable2_get_rowDescription(This,row,description) (This)->lpVtbl->get_rowDescription(This,row,description)
#define IAccessibleTable2_get_selectedCells(This,cells,nSelectedCells) (This)->lpVtbl->get_selectedCells(This,cells,nSelectedCells)
#define IAccessibleTable2_get_selectedColumns(This,selectedColumns,nColumns) (This)->lpVtbl->get_selectedColumns(This,selectedColumns,nColumns)
#define IAccessibleTable2_get_selectedRows(This,selectedRows,nRows) (This)->lpVtbl->get_selectedRows(This,selectedRows,nRows)
#define IAccessibleTable2_get_summary(This,accessible) (This)->lpVtbl->get_summary(This,accessible)
#define IAccessibleTable2_get_isColumnSelected(This,column,isSelected) (This)->lpVtbl->get_isColumnSelected(This,column,isSelected)
#define IAccessibleTable2_get_isRowSelected(This,row,isSelected) (This)->lpVtbl->get_isRowSelected(This,row,isSelected)
#define IAccessibleTable2_selectRow(This,row) (This)->lpVtbl->selectRow(This,row)
#define IAccessibleTable2_selectColumn(This,column) (This)->lpVtbl->selectColumn(This,column)
#define IAccessibleTable2_unselectRow(This,row) (This)->lpVtbl->unselectRow(This,row)
#define IAccessibleTable2_unselectColumn(This,column) (This)->lpVtbl->unselectColumn(This,column)
#define IAccessibleTable2_get_modelChange(This,modelChange) (This)->lpVtbl->get_modelChange(This,modelChange)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleTable2_QueryInterface(IAccessibleTable2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleTable2_AddRef(IAccessibleTable2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleTable2_Release(IAccessibleTable2* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleTable2 methods ***/
static inline HRESULT IAccessibleTable2_get_cellAt(IAccessibleTable2* This,LONG row,LONG column,IUnknown **cell) {
    return This->lpVtbl->get_cellAt(This,row,column,cell);
}
static inline HRESULT IAccessibleTable2_get_caption(IAccessibleTable2* This,IUnknown **accessible) {
    return This->lpVtbl->get_caption(This,accessible);
}
static inline HRESULT IAccessibleTable2_get_columnDescription(IAccessibleTable2* This,LONG column,BSTR *description) {
    return This->lpVtbl->get_columnDescription(This,column,description);
}
static inline HRESULT IAccessibleTable2_get_nColumns(IAccessibleTable2* This,LONG *columnCount) {
    return This->lpVtbl->get_nColumns(This,columnCount);
}
static inline HRESULT IAccessibleTable2_get_nRows(IAccessibleTable2* This,LONG *rowCount) {
    return This->lpVtbl->get_nRows(This,rowCount);
}
static inline HRESULT IAccessibleTable2_get_nSelectedCells(IAccessibleTable2* This,LONG *cellCount) {
    return This->lpVtbl->get_nSelectedCells(This,cellCount);
}
static inline HRESULT IAccessibleTable2_get_nSelectedColumns(IAccessibleTable2* This,LONG *columnCount) {
    return This->lpVtbl->get_nSelectedColumns(This,columnCount);
}
static inline HRESULT IAccessibleTable2_get_nSelectedRows(IAccessibleTable2* This,LONG *rowCount) {
    return This->lpVtbl->get_nSelectedRows(This,rowCount);
}
static inline HRESULT IAccessibleTable2_get_rowDescription(IAccessibleTable2* This,LONG row,BSTR *description) {
    return This->lpVtbl->get_rowDescription(This,row,description);
}
static inline HRESULT IAccessibleTable2_get_selectedCells(IAccessibleTable2* This,IUnknown ***cells,LONG *nSelectedCells) {
    return This->lpVtbl->get_selectedCells(This,cells,nSelectedCells);
}
static inline HRESULT IAccessibleTable2_get_selectedColumns(IAccessibleTable2* This,LONG **selectedColumns,LONG *nColumns) {
    return This->lpVtbl->get_selectedColumns(This,selectedColumns,nColumns);
}
static inline HRESULT IAccessibleTable2_get_selectedRows(IAccessibleTable2* This,LONG **selectedRows,LONG *nRows) {
    return This->lpVtbl->get_selectedRows(This,selectedRows,nRows);
}
static inline HRESULT IAccessibleTable2_get_summary(IAccessibleTable2* This,IUnknown **accessible) {
    return This->lpVtbl->get_summary(This,accessible);
}
static inline HRESULT IAccessibleTable2_get_isColumnSelected(IAccessibleTable2* This,LONG column,boolean *isSelected) {
    return This->lpVtbl->get_isColumnSelected(This,column,isSelected);
}
static inline HRESULT IAccessibleTable2_get_isRowSelected(IAccessibleTable2* This,LONG row,boolean *isSelected) {
    return This->lpVtbl->get_isRowSelected(This,row,isSelected);
}
static inline HRESULT IAccessibleTable2_selectRow(IAccessibleTable2* This,LONG row) {
    return This->lpVtbl->selectRow(This,row);
}
static inline HRESULT IAccessibleTable2_selectColumn(IAccessibleTable2* This,LONG column) {
    return This->lpVtbl->selectColumn(This,column);
}
static inline HRESULT IAccessibleTable2_unselectRow(IAccessibleTable2* This,LONG row) {
    return This->lpVtbl->unselectRow(This,row);
}
static inline HRESULT IAccessibleTable2_unselectColumn(IAccessibleTable2* This,LONG column) {
    return This->lpVtbl->unselectColumn(This,column);
}
static inline HRESULT IAccessibleTable2_get_modelChange(IAccessibleTable2* This,IA2TableModelChange *modelChange) {
    return This->lpVtbl->get_modelChange(This,modelChange);
}
#endif
#endif

#endif


#endif  /* __IAccessibleTable2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleTableCell interface
 */
#ifndef __IAccessibleTableCell_INTERFACE_DEFINED__
#define __IAccessibleTableCell_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleTableCell, 0x594116b1, 0xc99f, 0x4847, 0xad,0x06, 0x0a,0x7a,0x86,0xec,0xe6,0x45);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("594116b1-c99f-4847-ad06-0a7a86ece645")
IAccessibleTableCell : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_columnExtent(
        LONG *nColumnsSpanned) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_columnHeaderCells(
        IUnknown ***cellAccessibles,
        LONG *nColumnHeaderCells) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_columnIndex(
        LONG *columnIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowExtent(
        LONG *nRowsSpanned) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowHeaderCells(
        IUnknown ***cellAccessibles,
        LONG *nRowHeaderCells) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowIndex(
        LONG *rowIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_isSelected(
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_rowColumnExtents(
        LONG *row,
        LONG *column,
        LONG *rowExtents,
        LONG *columnExtents,
        boolean *isSelected) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_table(
        IUnknown **table) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleTableCell, 0x594116b1, 0xc99f, 0x4847, 0xad,0x06, 0x0a,0x7a,0x86,0xec,0xe6,0x45)
#endif
#else
typedef struct IAccessibleTableCellVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleTableCell methods ***/
    HRESULT (STDMETHODCALLTYPE *get_columnExtent)(
        IAccessibleTableCell *This,
        LONG *nColumnsSpanned);

    HRESULT (STDMETHODCALLTYPE *get_columnHeaderCells)(
        IAccessibleTableCell *This,
        IUnknown ***cellAccessibles,
        LONG *nColumnHeaderCells);

    HRESULT (STDMETHODCALLTYPE *get_columnIndex)(
        IAccessibleTableCell *This,
        LONG *columnIndex);

    HRESULT (STDMETHODCALLTYPE *get_rowExtent)(
        IAccessibleTableCell *This,
        LONG *nRowsSpanned);

    HRESULT (STDMETHODCALLTYPE *get_rowHeaderCells)(
        IAccessibleTableCell *This,
        IUnknown ***cellAccessibles,
        LONG *nRowHeaderCells);

    HRESULT (STDMETHODCALLTYPE *get_rowIndex)(
        IAccessibleTableCell *This,
        LONG *rowIndex);

    HRESULT (STDMETHODCALLTYPE *get_isSelected)(
        IAccessibleTableCell *This,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *get_rowColumnExtents)(
        IAccessibleTableCell *This,
        LONG *row,
        LONG *column,
        LONG *rowExtents,
        LONG *columnExtents,
        boolean *isSelected);

    HRESULT (STDMETHODCALLTYPE *get_table)(
        IAccessibleTableCell *This,
        IUnknown **table);

    END_INTERFACE
} IAccessibleTableCellVtbl;

interface IAccessibleTableCell {
    CONST_VTBL IAccessibleTableCellVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleTableCell_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleTableCell_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleTableCell_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleTableCell methods ***/
#define IAccessibleTableCell_get_columnExtent(This,nColumnsSpanned) (This)->lpVtbl->get_columnExtent(This,nColumnsSpanned)
#define IAccessibleTableCell_get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) (This)->lpVtbl->get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells)
#define IAccessibleTableCell_get_columnIndex(This,columnIndex) (This)->lpVtbl->get_columnIndex(This,columnIndex)
#define IAccessibleTableCell_get_rowExtent(This,nRowsSpanned) (This)->lpVtbl->get_rowExtent(This,nRowsSpanned)
#define IAccessibleTableCell_get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) (This)->lpVtbl->get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells)
#define IAccessibleTableCell_get_rowIndex(This,rowIndex) (This)->lpVtbl->get_rowIndex(This,rowIndex)
#define IAccessibleTableCell_get_isSelected(This,isSelected) (This)->lpVtbl->get_isSelected(This,isSelected)
#define IAccessibleTableCell_get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) (This)->lpVtbl->get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected)
#define IAccessibleTableCell_get_table(This,table) (This)->lpVtbl->get_table(This,table)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleTableCell_QueryInterface(IAccessibleTableCell* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleTableCell_AddRef(IAccessibleTableCell* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleTableCell_Release(IAccessibleTableCell* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleTableCell methods ***/
static inline HRESULT IAccessibleTableCell_get_columnExtent(IAccessibleTableCell* This,LONG *nColumnsSpanned) {
    return This->lpVtbl->get_columnExtent(This,nColumnsSpanned);
}
static inline HRESULT IAccessibleTableCell_get_columnHeaderCells(IAccessibleTableCell* This,IUnknown ***cellAccessibles,LONG *nColumnHeaderCells) {
    return This->lpVtbl->get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells);
}
static inline HRESULT IAccessibleTableCell_get_columnIndex(IAccessibleTableCell* This,LONG *columnIndex) {
    return This->lpVtbl->get_columnIndex(This,columnIndex);
}
static inline HRESULT IAccessibleTableCell_get_rowExtent(IAccessibleTableCell* This,LONG *nRowsSpanned) {
    return This->lpVtbl->get_rowExtent(This,nRowsSpanned);
}
static inline HRESULT IAccessibleTableCell_get_rowHeaderCells(IAccessibleTableCell* This,IUnknown ***cellAccessibles,LONG *nRowHeaderCells) {
    return This->lpVtbl->get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells);
}
static inline HRESULT IAccessibleTableCell_get_rowIndex(IAccessibleTableCell* This,LONG *rowIndex) {
    return This->lpVtbl->get_rowIndex(This,rowIndex);
}
static inline HRESULT IAccessibleTableCell_get_isSelected(IAccessibleTableCell* This,boolean *isSelected) {
    return This->lpVtbl->get_isSelected(This,isSelected);
}
static inline HRESULT IAccessibleTableCell_get_rowColumnExtents(IAccessibleTableCell* This,LONG *row,LONG *column,LONG *rowExtents,LONG *columnExtents,boolean *isSelected) {
    return This->lpVtbl->get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected);
}
static inline HRESULT IAccessibleTableCell_get_table(IAccessibleTableCell* This,IUnknown **table) {
    return This->lpVtbl->get_table(This,table);
}
#endif
#endif

#endif


#endif  /* __IAccessibleTableCell_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleImage interface
 */
#ifndef __IAccessibleImage_INTERFACE_DEFINED__
#define __IAccessibleImage_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleImage, 0xfe5abb3d, 0x615e, 0x4f7b, 0x90,0x9f, 0x5f,0x0e,0xda,0x9e,0x8d,0xde);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fe5abb3d-615e-4f7b-909f-5f0eda9e8dde")
IAccessibleImage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_description(
        BSTR *description) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_imagePosition(
        enum IA2CoordinateType coordinateType,
        LONG *x,
        LONG *y) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_imageSize(
        LONG *height,
        LONG *width) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleImage, 0xfe5abb3d, 0x615e, 0x4f7b, 0x90,0x9f, 0x5f,0x0e,0xda,0x9e,0x8d,0xde)
#endif
#else
typedef struct IAccessibleImageVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleImage methods ***/
    HRESULT (STDMETHODCALLTYPE *get_description)(
        IAccessibleImage *This,
        BSTR *description);

    HRESULT (STDMETHODCALLTYPE *get_imagePosition)(
        IAccessibleImage *This,
        enum IA2CoordinateType coordinateType,
        LONG *x,
        LONG *y);

    HRESULT (STDMETHODCALLTYPE *get_imageSize)(
        IAccessibleImage *This,
        LONG *height,
        LONG *width);

    END_INTERFACE
} IAccessibleImageVtbl;

interface IAccessibleImage {
    CONST_VTBL IAccessibleImageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleImage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleImage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleImage_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleImage methods ***/
#define IAccessibleImage_get_description(This,description) (This)->lpVtbl->get_description(This,description)
#define IAccessibleImage_get_imagePosition(This,coordinateType,x,y) (This)->lpVtbl->get_imagePosition(This,coordinateType,x,y)
#define IAccessibleImage_get_imageSize(This,height,width) (This)->lpVtbl->get_imageSize(This,height,width)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleImage_QueryInterface(IAccessibleImage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleImage_AddRef(IAccessibleImage* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleImage_Release(IAccessibleImage* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleImage methods ***/
static inline HRESULT IAccessibleImage_get_description(IAccessibleImage* This,BSTR *description) {
    return This->lpVtbl->get_description(This,description);
}
static inline HRESULT IAccessibleImage_get_imagePosition(IAccessibleImage* This,enum IA2CoordinateType coordinateType,LONG *x,LONG *y) {
    return This->lpVtbl->get_imagePosition(This,coordinateType,x,y);
}
static inline HRESULT IAccessibleImage_get_imageSize(IAccessibleImage* This,LONG *height,LONG *width) {
    return This->lpVtbl->get_imageSize(This,height,width);
}
#endif
#endif

#endif


#endif  /* __IAccessibleImage_INTERFACE_DEFINED__ */

enum IA2EventID {
    IA2_EVENT_ACTION_CHANGED = 0x101,
    IA2_EVENT_ACTIVE_DECENDENT_CHANGED = 0x102,
    IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
    IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED = 0x103,
    IA2_EVENT_DOCUMENT_CONTENT_CHANGED = 0x104,
    IA2_EVENT_DOCUMENT_LOAD_COMPLETE = 0x105,
    IA2_EVENT_DOCUMENT_LOAD_STOPPED = 0x106,
    IA2_EVENT_DOCUMENT_RELOAD = 0x107,
    IA2_EVENT_HYPERLINK_END_INDEX_CHANGED = 0x108,
    IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED = 0x109,
    IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED = 0x10a,
    IA2_EVENT_HYPERTEXT_LINK_ACTIVATED = 0x10b,
    IA2_EVENT_HYPERTEXT_LINK_SELECTED = 0x10c,
    IA2_EVENT_HYPERLINK_START_INDEX_CHANGED = 0x10d,
    IA2_EVENT_HYPERTEXT_CHANGED = 0x10e,
    IA2_EVENT_HYPERTEXT_NLINKS_CHANGED = 0x10f,
    IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED = 0x110,
    IA2_EVENT_PAGE_CHANGED = 0x111,
    IA2_EVENT_SECTION_CHANGED = 0x112,
    IA2_EVENT_TABLE_CAPTION_CHANGED = 0x113,
    IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED = 0x114,
    IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED = 0x115,
    IA2_EVENT_TABLE_MODEL_CHANGED = 0x116,
    IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED = 0x117,
    IA2_EVENT_TABLE_ROW_HEADER_CHANGED = 0x118,
    IA2_EVENT_TABLE_SUMMARY_CHANGED = 0x119,
    IA2_EVENT_TEXT_ATTRIBUTE_CHANGED = 0x11a,
    IA2_EVENT_TEXT_CARET_MOVED = 0x11b,
    IA2_EVENT_TEXT_CHANGED = 0x11c,
    IA2_EVENT_TEXT_COLUMN_CHANGED = 0x11d,
    IA2_EVENT_TEXT_INSERTED = 0x11e,
    IA2_EVENT_TEXT_REMOVED = 0x11f,
    IA2_EVENT_TEXT_UPDATED = 0x120,
    IA2_EVENT_TEXT_SELECTION_CHANGED = 0x121,
    IA2_EVENT_VISIBLE_DATA_CHANGED = 0x122
};
/*****************************************************************************
 * IAccessibleApplication interface
 */
#ifndef __IAccessibleApplication_INTERFACE_DEFINED__
#define __IAccessibleApplication_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleApplication, 0xd49ded83, 0x5b25, 0x43f4, 0x9b,0x95, 0x93,0xb4,0x45,0x95,0x97,0x9e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d49ded83-5b25-43f4-9b95-93b44595979e")
IAccessibleApplication : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_appName(
        BSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_appVersion(
        BSTR *version) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_toolkitName(
        BSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_toolkitVersion(
        BSTR *version) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleApplication, 0xd49ded83, 0x5b25, 0x43f4, 0x9b,0x95, 0x93,0xb4,0x45,0x95,0x97,0x9e)
#endif
#else
typedef struct IAccessibleApplicationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleApplication methods ***/
    HRESULT (STDMETHODCALLTYPE *get_appName)(
        IAccessibleApplication *This,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *get_appVersion)(
        IAccessibleApplication *This,
        BSTR *version);

    HRESULT (STDMETHODCALLTYPE *get_toolkitName)(
        IAccessibleApplication *This,
        BSTR *name);

    HRESULT (STDMETHODCALLTYPE *get_toolkitVersion)(
        IAccessibleApplication *This,
        BSTR *version);

    END_INTERFACE
} IAccessibleApplicationVtbl;

interface IAccessibleApplication {
    CONST_VTBL IAccessibleApplicationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleApplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleApplication_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleApplication_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleApplication methods ***/
#define IAccessibleApplication_get_appName(This,name) (This)->lpVtbl->get_appName(This,name)
#define IAccessibleApplication_get_appVersion(This,version) (This)->lpVtbl->get_appVersion(This,version)
#define IAccessibleApplication_get_toolkitName(This,name) (This)->lpVtbl->get_toolkitName(This,name)
#define IAccessibleApplication_get_toolkitVersion(This,version) (This)->lpVtbl->get_toolkitVersion(This,version)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleApplication_QueryInterface(IAccessibleApplication* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleApplication_AddRef(IAccessibleApplication* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleApplication_Release(IAccessibleApplication* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleApplication methods ***/
static inline HRESULT IAccessibleApplication_get_appName(IAccessibleApplication* This,BSTR *name) {
    return This->lpVtbl->get_appName(This,name);
}
static inline HRESULT IAccessibleApplication_get_appVersion(IAccessibleApplication* This,BSTR *version) {
    return This->lpVtbl->get_appVersion(This,version);
}
static inline HRESULT IAccessibleApplication_get_toolkitName(IAccessibleApplication* This,BSTR *name) {
    return This->lpVtbl->get_toolkitName(This,name);
}
static inline HRESULT IAccessibleApplication_get_toolkitVersion(IAccessibleApplication* This,BSTR *version) {
    return This->lpVtbl->get_toolkitVersion(This,version);
}
#endif
#endif

#endif


#endif  /* __IAccessibleApplication_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAccessibleDocument interface
 */
#ifndef __IAccessibleDocument_INTERFACE_DEFINED__
#define __IAccessibleDocument_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleDocument, 0xc48c7fcf, 0x4ab5, 0x4056, 0xaf,0xa6, 0x90,0x2d,0x6e,0x1d,0x11,0x49);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c48c7fcf-4ab5-4056-afa6-902d6e1d1149")
IAccessibleDocument : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_anchorTarget(
        IUnknown **accessible) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleDocument, 0xc48c7fcf, 0x4ab5, 0x4056, 0xaf,0xa6, 0x90,0x2d,0x6e,0x1d,0x11,0x49)
#endif
#else
typedef struct IAccessibleDocumentVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleDocument methods ***/
    HRESULT (STDMETHODCALLTYPE *get_anchorTarget)(
        IAccessibleDocument *This,
        IUnknown **accessible);

    END_INTERFACE
} IAccessibleDocumentVtbl;

interface IAccessibleDocument {
    CONST_VTBL IAccessibleDocumentVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleDocument_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleDocument_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleDocument_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleDocument methods ***/
#define IAccessibleDocument_get_anchorTarget(This,accessible) (This)->lpVtbl->get_anchorTarget(This,accessible)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleDocument_QueryInterface(IAccessibleDocument* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleDocument_AddRef(IAccessibleDocument* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleDocument_Release(IAccessibleDocument* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleDocument methods ***/
static inline HRESULT IAccessibleDocument_get_anchorTarget(IAccessibleDocument* This,IUnknown **accessible) {
    return This->lpVtbl->get_anchorTarget(This,accessible);
}
#endif
#endif

#endif


#endif  /* __IAccessibleDocument_INTERFACE_DEFINED__ */


// Type Library Definitions

#ifndef __IAccessible2Lib_LIBRARY_DEFINED__
#define __IAccessible2Lib_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_IAccessible2Lib, 0xce3f726e, 0xd1d3, 0x44fe, 0xb9,0x95, 0xff,0x1d,0xb3,0xb4,0x8b,0x2b);

#ifndef __IAccessible2_FWD_DEFINED__
#define __IAccessible2_FWD_DEFINED__
typedef interface IAccessible2 IAccessible2;
#ifdef __cplusplus
interface IAccessible2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessible2_2_FWD_DEFINED__
#define __IAccessible2_2_FWD_DEFINED__
typedef interface IAccessible2_2 IAccessible2_2;
#ifdef __cplusplus
interface IAccessible2_2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleAction_FWD_DEFINED__
#define __IAccessibleAction_FWD_DEFINED__
typedef interface IAccessibleAction IAccessibleAction;
#ifdef __cplusplus
interface IAccessibleAction;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleApplication_FWD_DEFINED__
#define __IAccessibleApplication_FWD_DEFINED__
typedef interface IAccessibleApplication IAccessibleApplication;
#ifdef __cplusplus
interface IAccessibleApplication;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleComponent_FWD_DEFINED__
#define __IAccessibleComponent_FWD_DEFINED__
typedef interface IAccessibleComponent IAccessibleComponent;
#ifdef __cplusplus
interface IAccessibleComponent;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleDocument_FWD_DEFINED__
#define __IAccessibleDocument_FWD_DEFINED__
typedef interface IAccessibleDocument IAccessibleDocument;
#ifdef __cplusplus
interface IAccessibleDocument;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleEditableText_FWD_DEFINED__
#define __IAccessibleEditableText_FWD_DEFINED__
typedef interface IAccessibleEditableText IAccessibleEditableText;
#ifdef __cplusplus
interface IAccessibleEditableText;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleHyperlink_FWD_DEFINED__
#define __IAccessibleHyperlink_FWD_DEFINED__
typedef interface IAccessibleHyperlink IAccessibleHyperlink;
#ifdef __cplusplus
interface IAccessibleHyperlink;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleHypertext_FWD_DEFINED__
#define __IAccessibleHypertext_FWD_DEFINED__
typedef interface IAccessibleHypertext IAccessibleHypertext;
#ifdef __cplusplus
interface IAccessibleHypertext;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleHypertext2_FWD_DEFINED__
#define __IAccessibleHypertext2_FWD_DEFINED__
typedef interface IAccessibleHypertext2 IAccessibleHypertext2;
#ifdef __cplusplus
interface IAccessibleHypertext2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleImage_FWD_DEFINED__
#define __IAccessibleImage_FWD_DEFINED__
typedef interface IAccessibleImage IAccessibleImage;
#ifdef __cplusplus
interface IAccessibleImage;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleRelation_FWD_DEFINED__
#define __IAccessibleRelation_FWD_DEFINED__
typedef interface IAccessibleRelation IAccessibleRelation;
#ifdef __cplusplus
interface IAccessibleRelation;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleTable_FWD_DEFINED__
#define __IAccessibleTable_FWD_DEFINED__
typedef interface IAccessibleTable IAccessibleTable;
#ifdef __cplusplus
interface IAccessibleTable;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleTable2_FWD_DEFINED__
#define __IAccessibleTable2_FWD_DEFINED__
typedef interface IAccessibleTable2 IAccessibleTable2;
#ifdef __cplusplus
interface IAccessibleTable2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleTableCell_FWD_DEFINED__
#define __IAccessibleTableCell_FWD_DEFINED__
typedef interface IAccessibleTableCell IAccessibleTableCell;
#ifdef __cplusplus
interface IAccessibleTableCell;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleText_FWD_DEFINED__
#define __IAccessibleText_FWD_DEFINED__
typedef interface IAccessibleText IAccessibleText;
#ifdef __cplusplus
interface IAccessibleText;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleText2_FWD_DEFINED__
#define __IAccessibleText2_FWD_DEFINED__
typedef interface IAccessibleText2 IAccessibleText2;
#ifdef __cplusplus
interface IAccessibleText2;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibleValue_FWD_DEFINED__
#define __IAccessibleValue_FWD_DEFINED__
typedef interface IAccessibleValue IAccessibleValue;
#ifdef __cplusplus
interface IAccessibleValue;
#endif /* __cplusplus */
#endif

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

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
ULONG           __RPC_USER 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 VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __iaccessible2_h__ */
