/*** Autogenerated by WIDL 11.8 from ../wine/include/peninputpanel.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 __peninputpanel_h__
#define __peninputpanel_h__

/* Forward declarations */

#ifndef __ITextInputPanelEventSink_FWD_DEFINED__
#define __ITextInputPanelEventSink_FWD_DEFINED__
typedef interface ITextInputPanelEventSink ITextInputPanelEventSink;
#ifdef __cplusplus
interface ITextInputPanelEventSink;
#endif /* __cplusplus */
#endif

#ifndef __ITextInputPanel_FWD_DEFINED__
#define __ITextInputPanel_FWD_DEFINED__
typedef interface ITextInputPanel ITextInputPanel;
#ifdef __cplusplus
interface ITextInputPanel;
#endif /* __cplusplus */
#endif

#ifndef __TextInputPanel_FWD_DEFINED__
#define __TextInputPanel_FWD_DEFINED__
#ifdef __cplusplus
typedef class TextInputPanel TextInputPanel;
#else
typedef struct TextInputPanel TextInputPanel;
#endif /* defined __cplusplus */
#endif /* defined __TextInputPanel_FWD_DEFINED__ */

/* Headers for imported files */

#include <oaidl.h>
#include <ocidl.h>
#include <msinkaut.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum __WIDL_peninputpanel_generated_name_00000026 {
    InteractionMode_InPlace = 0,
    InteractionMode_Floating = 1,
    InteractionMode_DockedTop = 2,
    InteractionMode_DockedBottom = 3
} InteractionMode;
typedef enum __WIDL_peninputpanel_generated_name_00000027 {
    InPlaceState_Auto = 0,
    InPlaceState_HoverTarget = 1,
    InPlaceState_Expanded = 2
} InPlaceState;
typedef enum __WIDL_peninputpanel_generated_name_00000028 {
    InPlaceDirection_Auto = 0,
    InPlaceDirection_Bottom = 1,
    InPlaceDirection_Top = 2
} InPlaceDirection;
typedef enum __WIDL_peninputpanel_generated_name_00000029 {
    PanelInputArea_Auto = 0,
    PanelInputArea_Keyboard = 1,
    PanelInputArea_WritingPad = 2,
    PanelInputArea_CharacterPad = 3
} PanelInputArea;
typedef enum __WIDL_peninputpanel_generated_name_0000002A {
    CorrectionMode_NotVisible = 0,
    CorrectionMode_PreInsertion = 1,
    CorrectionMode_PostInsertionCollapsed = 2,
    CorrectionMode_PostInsertionExpanded = 3
} CorrectionMode;
typedef enum __WIDL_peninputpanel_generated_name_0000002B {
    CorrectionPosition_Auto = 0,
    CorrectionPosition_Bottom = 1,
    CorrectionPosition_Top = 2
} CorrectionPosition;
/*****************************************************************************
 * ITextInputPanelEventSink interface
 */
#ifndef __ITextInputPanelEventSink_INTERFACE_DEFINED__
#define __ITextInputPanelEventSink_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextInputPanelEventSink, 0x27560408, 0x8e64, 0x4fe1, 0x80,0x4e, 0x42,0x12,0x01,0x58,0x4b,0x31);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("27560408-8e64-4fe1-804e-421201584b31")
ITextInputPanelEventSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InPlaceStateChanging(
        InPlaceState old_state,
        InPlaceState new_state) = 0;

    virtual HRESULT STDMETHODCALLTYPE InPlaceStateChanged(
        InPlaceState old_state,
        InPlaceState new_state) = 0;

    virtual HRESULT STDMETHODCALLTYPE InPlaceSizeChanging(
        RECT old_rect,
        RECT new_rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE InPlaceSizeChanged(
        RECT old_rect,
        RECT new_rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE InputAreaChanging(
        PanelInputArea old_area,
        PanelInputArea new_area) = 0;

    virtual HRESULT STDMETHODCALLTYPE InputAreaChanged(
        PanelInputArea old_area,
        PanelInputArea new_area) = 0;

    virtual HRESULT STDMETHODCALLTYPE CorrectionModeChanging(
        CorrectionMode old_mode,
        CorrectionMode new_mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE CorrectionModeChanged(
        CorrectionMode old_mode,
        CorrectionMode new_mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE InPlaceVisibilityChanging(
        BOOL old_visible,
        BOOL new_visible) = 0;

    virtual HRESULT STDMETHODCALLTYPE InPlaceVisibilityChanged(
        BOOL old_visible,
        BOOL new_visible) = 0;

    virtual HRESULT STDMETHODCALLTYPE TextInserting(
        SAFEARRAY **ink) = 0;

    virtual HRESULT STDMETHODCALLTYPE TextInserted(
        SAFEARRAY **ink) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextInputPanelEventSink, 0x27560408, 0x8e64, 0x4fe1, 0x80,0x4e, 0x42,0x12,0x01,0x58,0x4b,0x31)
#endif
#else
typedef struct ITextInputPanelEventSinkVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITextInputPanelEventSink methods ***/
    HRESULT (STDMETHODCALLTYPE *InPlaceStateChanging)(
        ITextInputPanelEventSink *This,
        InPlaceState old_state,
        InPlaceState new_state);

    HRESULT (STDMETHODCALLTYPE *InPlaceStateChanged)(
        ITextInputPanelEventSink *This,
        InPlaceState old_state,
        InPlaceState new_state);

    HRESULT (STDMETHODCALLTYPE *InPlaceSizeChanging)(
        ITextInputPanelEventSink *This,
        RECT old_rect,
        RECT new_rect);

    HRESULT (STDMETHODCALLTYPE *InPlaceSizeChanged)(
        ITextInputPanelEventSink *This,
        RECT old_rect,
        RECT new_rect);

    HRESULT (STDMETHODCALLTYPE *InputAreaChanging)(
        ITextInputPanelEventSink *This,
        PanelInputArea old_area,
        PanelInputArea new_area);

    HRESULT (STDMETHODCALLTYPE *InputAreaChanged)(
        ITextInputPanelEventSink *This,
        PanelInputArea old_area,
        PanelInputArea new_area);

    HRESULT (STDMETHODCALLTYPE *CorrectionModeChanging)(
        ITextInputPanelEventSink *This,
        CorrectionMode old_mode,
        CorrectionMode new_mode);

    HRESULT (STDMETHODCALLTYPE *CorrectionModeChanged)(
        ITextInputPanelEventSink *This,
        CorrectionMode old_mode,
        CorrectionMode new_mode);

    HRESULT (STDMETHODCALLTYPE *InPlaceVisibilityChanging)(
        ITextInputPanelEventSink *This,
        BOOL old_visible,
        BOOL new_visible);

    HRESULT (STDMETHODCALLTYPE *InPlaceVisibilityChanged)(
        ITextInputPanelEventSink *This,
        BOOL old_visible,
        BOOL new_visible);

    HRESULT (STDMETHODCALLTYPE *TextInserting)(
        ITextInputPanelEventSink *This,
        SAFEARRAY **ink);

    HRESULT (STDMETHODCALLTYPE *TextInserted)(
        ITextInputPanelEventSink *This,
        SAFEARRAY **ink);

    END_INTERFACE
} ITextInputPanelEventSinkVtbl;

interface ITextInputPanelEventSink {
    CONST_VTBL ITextInputPanelEventSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextInputPanelEventSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextInputPanelEventSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextInputPanelEventSink_Release(This) (This)->lpVtbl->Release(This)
/*** ITextInputPanelEventSink methods ***/
#define ITextInputPanelEventSink_InPlaceStateChanging(This,old_state,new_state) (This)->lpVtbl->InPlaceStateChanging(This,old_state,new_state)
#define ITextInputPanelEventSink_InPlaceStateChanged(This,old_state,new_state) (This)->lpVtbl->InPlaceStateChanged(This,old_state,new_state)
#define ITextInputPanelEventSink_InPlaceSizeChanging(This,old_rect,new_rect) (This)->lpVtbl->InPlaceSizeChanging(This,old_rect,new_rect)
#define ITextInputPanelEventSink_InPlaceSizeChanged(This,old_rect,new_rect) (This)->lpVtbl->InPlaceSizeChanged(This,old_rect,new_rect)
#define ITextInputPanelEventSink_InputAreaChanging(This,old_area,new_area) (This)->lpVtbl->InputAreaChanging(This,old_area,new_area)
#define ITextInputPanelEventSink_InputAreaChanged(This,old_area,new_area) (This)->lpVtbl->InputAreaChanged(This,old_area,new_area)
#define ITextInputPanelEventSink_CorrectionModeChanging(This,old_mode,new_mode) (This)->lpVtbl->CorrectionModeChanging(This,old_mode,new_mode)
#define ITextInputPanelEventSink_CorrectionModeChanged(This,old_mode,new_mode) (This)->lpVtbl->CorrectionModeChanged(This,old_mode,new_mode)
#define ITextInputPanelEventSink_InPlaceVisibilityChanging(This,old_visible,new_visible) (This)->lpVtbl->InPlaceVisibilityChanging(This,old_visible,new_visible)
#define ITextInputPanelEventSink_InPlaceVisibilityChanged(This,old_visible,new_visible) (This)->lpVtbl->InPlaceVisibilityChanged(This,old_visible,new_visible)
#define ITextInputPanelEventSink_TextInserting(This,ink) (This)->lpVtbl->TextInserting(This,ink)
#define ITextInputPanelEventSink_TextInserted(This,ink) (This)->lpVtbl->TextInserted(This,ink)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextInputPanelEventSink_QueryInterface(ITextInputPanelEventSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextInputPanelEventSink_AddRef(ITextInputPanelEventSink* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextInputPanelEventSink_Release(ITextInputPanelEventSink* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextInputPanelEventSink methods ***/
static inline HRESULT ITextInputPanelEventSink_InPlaceStateChanging(ITextInputPanelEventSink* This,InPlaceState old_state,InPlaceState new_state) {
    return This->lpVtbl->InPlaceStateChanging(This,old_state,new_state);
}
static inline HRESULT ITextInputPanelEventSink_InPlaceStateChanged(ITextInputPanelEventSink* This,InPlaceState old_state,InPlaceState new_state) {
    return This->lpVtbl->InPlaceStateChanged(This,old_state,new_state);
}
static inline HRESULT ITextInputPanelEventSink_InPlaceSizeChanging(ITextInputPanelEventSink* This,RECT old_rect,RECT new_rect) {
    return This->lpVtbl->InPlaceSizeChanging(This,old_rect,new_rect);
}
static inline HRESULT ITextInputPanelEventSink_InPlaceSizeChanged(ITextInputPanelEventSink* This,RECT old_rect,RECT new_rect) {
    return This->lpVtbl->InPlaceSizeChanged(This,old_rect,new_rect);
}
static inline HRESULT ITextInputPanelEventSink_InputAreaChanging(ITextInputPanelEventSink* This,PanelInputArea old_area,PanelInputArea new_area) {
    return This->lpVtbl->InputAreaChanging(This,old_area,new_area);
}
static inline HRESULT ITextInputPanelEventSink_InputAreaChanged(ITextInputPanelEventSink* This,PanelInputArea old_area,PanelInputArea new_area) {
    return This->lpVtbl->InputAreaChanged(This,old_area,new_area);
}
static inline HRESULT ITextInputPanelEventSink_CorrectionModeChanging(ITextInputPanelEventSink* This,CorrectionMode old_mode,CorrectionMode new_mode) {
    return This->lpVtbl->CorrectionModeChanging(This,old_mode,new_mode);
}
static inline HRESULT ITextInputPanelEventSink_CorrectionModeChanged(ITextInputPanelEventSink* This,CorrectionMode old_mode,CorrectionMode new_mode) {
    return This->lpVtbl->CorrectionModeChanged(This,old_mode,new_mode);
}
static inline HRESULT ITextInputPanelEventSink_InPlaceVisibilityChanging(ITextInputPanelEventSink* This,BOOL old_visible,BOOL new_visible) {
    return This->lpVtbl->InPlaceVisibilityChanging(This,old_visible,new_visible);
}
static inline HRESULT ITextInputPanelEventSink_InPlaceVisibilityChanged(ITextInputPanelEventSink* This,BOOL old_visible,BOOL new_visible) {
    return This->lpVtbl->InPlaceVisibilityChanged(This,old_visible,new_visible);
}
static inline HRESULT ITextInputPanelEventSink_TextInserting(ITextInputPanelEventSink* This,SAFEARRAY **ink) {
    return This->lpVtbl->TextInserting(This,ink);
}
static inline HRESULT ITextInputPanelEventSink_TextInserted(ITextInputPanelEventSink* This,SAFEARRAY **ink) {
    return This->lpVtbl->TextInserted(This,ink);
}
#endif
#endif

#endif


#endif  /* __ITextInputPanelEventSink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITextInputPanel interface
 */
#ifndef __ITextInputPanel_INTERFACE_DEFINED__
#define __ITextInputPanel_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITextInputPanel, 0x6b6a65a5, 0x6af3, 0x46c2, 0xb6,0xea, 0x56,0xcd,0x1f,0x80,0xdf,0x71);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6b6a65a5-6af3-46c2-b6ea-56cd1f80df71")
ITextInputPanel : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE get_AttachedEditWindow(
        HWND *window) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AttachedEditWindow(
        HWND window) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentInteractionMode(
        InteractionMode *mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DefaultInPlaceState(
        InPlaceState *state) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DefaultInPlaceState(
        InPlaceState state) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentInPlaceState(
        InPlaceState *state) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DefaultInputArea(
        PanelInputArea *area) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DefaultInputArea(
        PanelInputArea area) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentInputArea(
        PanelInputArea *area) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CurrentCorrectionMode(
        CorrectionMode *Mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PreferredInPlaceDirection(
        InPlaceDirection *direction) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PreferredInPlaceDirection(
        InPlaceDirection drection) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ExpandPostInsertionCorrection(
        BOOL *expand) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ExpandPostInsertionCorrection(
        BOOL expand) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InPlaceVisibleOnFocus(
        BOOL *bisible) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_InPlaceVisibleOnFocus(
        BOOL bisible) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_InPlaceBoundingRectangle(
        RECT *bounding_rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PopUpCorrectionHeight(
        int *height) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PopDownCorrectionHeight(
        int *height) = 0;

    virtual HRESULT STDMETHODCALLTYPE CommitPendingInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInPlaceVisibility(
        BOOL Visible) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInPlacePosition(
        int x,
        int y,
        CorrectionPosition position) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInPlaceHoverTargetPosition(
        int x,
        int y) = 0;

    virtual HRESULT STDMETHODCALLTYPE Advise(
        ITextInputPanelEventSink *sink,
        DWORD mask) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        ITextInputPanelEventSink *sink) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITextInputPanel, 0x6b6a65a5, 0x6af3, 0x46c2, 0xb6,0xea, 0x56,0xcd,0x1f,0x80,0xdf,0x71)
#endif
#else
typedef struct ITextInputPanelVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITextInputPanel methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AttachedEditWindow)(
        ITextInputPanel *This,
        HWND *window);

    HRESULT (STDMETHODCALLTYPE *put_AttachedEditWindow)(
        ITextInputPanel *This,
        HWND window);

    HRESULT (STDMETHODCALLTYPE *get_CurrentInteractionMode)(
        ITextInputPanel *This,
        InteractionMode *mode);

    HRESULT (STDMETHODCALLTYPE *get_DefaultInPlaceState)(
        ITextInputPanel *This,
        InPlaceState *state);

    HRESULT (STDMETHODCALLTYPE *put_DefaultInPlaceState)(
        ITextInputPanel *This,
        InPlaceState state);

    HRESULT (STDMETHODCALLTYPE *get_CurrentInPlaceState)(
        ITextInputPanel *This,
        InPlaceState *state);

    HRESULT (STDMETHODCALLTYPE *get_DefaultInputArea)(
        ITextInputPanel *This,
        PanelInputArea *area);

    HRESULT (STDMETHODCALLTYPE *put_DefaultInputArea)(
        ITextInputPanel *This,
        PanelInputArea area);

    HRESULT (STDMETHODCALLTYPE *get_CurrentInputArea)(
        ITextInputPanel *This,
        PanelInputArea *area);

    HRESULT (STDMETHODCALLTYPE *get_CurrentCorrectionMode)(
        ITextInputPanel *This,
        CorrectionMode *Mode);

    HRESULT (STDMETHODCALLTYPE *get_PreferredInPlaceDirection)(
        ITextInputPanel *This,
        InPlaceDirection *direction);

    HRESULT (STDMETHODCALLTYPE *put_PreferredInPlaceDirection)(
        ITextInputPanel *This,
        InPlaceDirection drection);

    HRESULT (STDMETHODCALLTYPE *get_ExpandPostInsertionCorrection)(
        ITextInputPanel *This,
        BOOL *expand);

    HRESULT (STDMETHODCALLTYPE *put_ExpandPostInsertionCorrection)(
        ITextInputPanel *This,
        BOOL expand);

    HRESULT (STDMETHODCALLTYPE *get_InPlaceVisibleOnFocus)(
        ITextInputPanel *This,
        BOOL *bisible);

    HRESULT (STDMETHODCALLTYPE *put_InPlaceVisibleOnFocus)(
        ITextInputPanel *This,
        BOOL bisible);

    HRESULT (STDMETHODCALLTYPE *get_InPlaceBoundingRectangle)(
        ITextInputPanel *This,
        RECT *bounding_rect);

    HRESULT (STDMETHODCALLTYPE *get_PopUpCorrectionHeight)(
        ITextInputPanel *This,
        int *height);

    HRESULT (STDMETHODCALLTYPE *get_PopDownCorrectionHeight)(
        ITextInputPanel *This,
        int *height);

    HRESULT (STDMETHODCALLTYPE *CommitPendingInput)(
        ITextInputPanel *This);

    HRESULT (STDMETHODCALLTYPE *SetInPlaceVisibility)(
        ITextInputPanel *This,
        BOOL Visible);

    HRESULT (STDMETHODCALLTYPE *SetInPlacePosition)(
        ITextInputPanel *This,
        int x,
        int y,
        CorrectionPosition position);

    HRESULT (STDMETHODCALLTYPE *SetInPlaceHoverTargetPosition)(
        ITextInputPanel *This,
        int x,
        int y);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        ITextInputPanel *This,
        ITextInputPanelEventSink *sink,
        DWORD mask);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        ITextInputPanel *This,
        ITextInputPanelEventSink *sink);

    END_INTERFACE
} ITextInputPanelVtbl;

interface ITextInputPanel {
    CONST_VTBL ITextInputPanelVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITextInputPanel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITextInputPanel_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITextInputPanel_Release(This) (This)->lpVtbl->Release(This)
/*** ITextInputPanel methods ***/
#define ITextInputPanel_get_AttachedEditWindow(This,window) (This)->lpVtbl->get_AttachedEditWindow(This,window)
#define ITextInputPanel_put_AttachedEditWindow(This,window) (This)->lpVtbl->put_AttachedEditWindow(This,window)
#define ITextInputPanel_get_CurrentInteractionMode(This,mode) (This)->lpVtbl->get_CurrentInteractionMode(This,mode)
#define ITextInputPanel_get_DefaultInPlaceState(This,state) (This)->lpVtbl->get_DefaultInPlaceState(This,state)
#define ITextInputPanel_put_DefaultInPlaceState(This,state) (This)->lpVtbl->put_DefaultInPlaceState(This,state)
#define ITextInputPanel_get_CurrentInPlaceState(This,state) (This)->lpVtbl->get_CurrentInPlaceState(This,state)
#define ITextInputPanel_get_DefaultInputArea(This,area) (This)->lpVtbl->get_DefaultInputArea(This,area)
#define ITextInputPanel_put_DefaultInputArea(This,area) (This)->lpVtbl->put_DefaultInputArea(This,area)
#define ITextInputPanel_get_CurrentInputArea(This,area) (This)->lpVtbl->get_CurrentInputArea(This,area)
#define ITextInputPanel_get_CurrentCorrectionMode(This,Mode) (This)->lpVtbl->get_CurrentCorrectionMode(This,Mode)
#define ITextInputPanel_get_PreferredInPlaceDirection(This,direction) (This)->lpVtbl->get_PreferredInPlaceDirection(This,direction)
#define ITextInputPanel_put_PreferredInPlaceDirection(This,drection) (This)->lpVtbl->put_PreferredInPlaceDirection(This,drection)
#define ITextInputPanel_get_ExpandPostInsertionCorrection(This,expand) (This)->lpVtbl->get_ExpandPostInsertionCorrection(This,expand)
#define ITextInputPanel_put_ExpandPostInsertionCorrection(This,expand) (This)->lpVtbl->put_ExpandPostInsertionCorrection(This,expand)
#define ITextInputPanel_get_InPlaceVisibleOnFocus(This,bisible) (This)->lpVtbl->get_InPlaceVisibleOnFocus(This,bisible)
#define ITextInputPanel_put_InPlaceVisibleOnFocus(This,bisible) (This)->lpVtbl->put_InPlaceVisibleOnFocus(This,bisible)
#define ITextInputPanel_get_InPlaceBoundingRectangle(This,bounding_rect) (This)->lpVtbl->get_InPlaceBoundingRectangle(This,bounding_rect)
#define ITextInputPanel_get_PopUpCorrectionHeight(This,height) (This)->lpVtbl->get_PopUpCorrectionHeight(This,height)
#define ITextInputPanel_get_PopDownCorrectionHeight(This,height) (This)->lpVtbl->get_PopDownCorrectionHeight(This,height)
#define ITextInputPanel_CommitPendingInput(This) (This)->lpVtbl->CommitPendingInput(This)
#define ITextInputPanel_SetInPlaceVisibility(This,Visible) (This)->lpVtbl->SetInPlaceVisibility(This,Visible)
#define ITextInputPanel_SetInPlacePosition(This,x,y,position) (This)->lpVtbl->SetInPlacePosition(This,x,y,position)
#define ITextInputPanel_SetInPlaceHoverTargetPosition(This,x,y) (This)->lpVtbl->SetInPlaceHoverTargetPosition(This,x,y)
#define ITextInputPanel_Advise(This,sink,mask) (This)->lpVtbl->Advise(This,sink,mask)
#define ITextInputPanel_Unadvise(This,sink) (This)->lpVtbl->Unadvise(This,sink)
#else
/*** IUnknown methods ***/
static inline HRESULT ITextInputPanel_QueryInterface(ITextInputPanel* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITextInputPanel_AddRef(ITextInputPanel* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITextInputPanel_Release(ITextInputPanel* This) {
    return This->lpVtbl->Release(This);
}
/*** ITextInputPanel methods ***/
static inline HRESULT ITextInputPanel_get_AttachedEditWindow(ITextInputPanel* This,HWND *window) {
    return This->lpVtbl->get_AttachedEditWindow(This,window);
}
static inline HRESULT ITextInputPanel_put_AttachedEditWindow(ITextInputPanel* This,HWND window) {
    return This->lpVtbl->put_AttachedEditWindow(This,window);
}
static inline HRESULT ITextInputPanel_get_CurrentInteractionMode(ITextInputPanel* This,InteractionMode *mode) {
    return This->lpVtbl->get_CurrentInteractionMode(This,mode);
}
static inline HRESULT ITextInputPanel_get_DefaultInPlaceState(ITextInputPanel* This,InPlaceState *state) {
    return This->lpVtbl->get_DefaultInPlaceState(This,state);
}
static inline HRESULT ITextInputPanel_put_DefaultInPlaceState(ITextInputPanel* This,InPlaceState state) {
    return This->lpVtbl->put_DefaultInPlaceState(This,state);
}
static inline HRESULT ITextInputPanel_get_CurrentInPlaceState(ITextInputPanel* This,InPlaceState *state) {
    return This->lpVtbl->get_CurrentInPlaceState(This,state);
}
static inline HRESULT ITextInputPanel_get_DefaultInputArea(ITextInputPanel* This,PanelInputArea *area) {
    return This->lpVtbl->get_DefaultInputArea(This,area);
}
static inline HRESULT ITextInputPanel_put_DefaultInputArea(ITextInputPanel* This,PanelInputArea area) {
    return This->lpVtbl->put_DefaultInputArea(This,area);
}
static inline HRESULT ITextInputPanel_get_CurrentInputArea(ITextInputPanel* This,PanelInputArea *area) {
    return This->lpVtbl->get_CurrentInputArea(This,area);
}
static inline HRESULT ITextInputPanel_get_CurrentCorrectionMode(ITextInputPanel* This,CorrectionMode *Mode) {
    return This->lpVtbl->get_CurrentCorrectionMode(This,Mode);
}
static inline HRESULT ITextInputPanel_get_PreferredInPlaceDirection(ITextInputPanel* This,InPlaceDirection *direction) {
    return This->lpVtbl->get_PreferredInPlaceDirection(This,direction);
}
static inline HRESULT ITextInputPanel_put_PreferredInPlaceDirection(ITextInputPanel* This,InPlaceDirection drection) {
    return This->lpVtbl->put_PreferredInPlaceDirection(This,drection);
}
static inline HRESULT ITextInputPanel_get_ExpandPostInsertionCorrection(ITextInputPanel* This,BOOL *expand) {
    return This->lpVtbl->get_ExpandPostInsertionCorrection(This,expand);
}
static inline HRESULT ITextInputPanel_put_ExpandPostInsertionCorrection(ITextInputPanel* This,BOOL expand) {
    return This->lpVtbl->put_ExpandPostInsertionCorrection(This,expand);
}
static inline HRESULT ITextInputPanel_get_InPlaceVisibleOnFocus(ITextInputPanel* This,BOOL *bisible) {
    return This->lpVtbl->get_InPlaceVisibleOnFocus(This,bisible);
}
static inline HRESULT ITextInputPanel_put_InPlaceVisibleOnFocus(ITextInputPanel* This,BOOL bisible) {
    return This->lpVtbl->put_InPlaceVisibleOnFocus(This,bisible);
}
static inline HRESULT ITextInputPanel_get_InPlaceBoundingRectangle(ITextInputPanel* This,RECT *bounding_rect) {
    return This->lpVtbl->get_InPlaceBoundingRectangle(This,bounding_rect);
}
static inline HRESULT ITextInputPanel_get_PopUpCorrectionHeight(ITextInputPanel* This,int *height) {
    return This->lpVtbl->get_PopUpCorrectionHeight(This,height);
}
static inline HRESULT ITextInputPanel_get_PopDownCorrectionHeight(ITextInputPanel* This,int *height) {
    return This->lpVtbl->get_PopDownCorrectionHeight(This,height);
}
static inline HRESULT ITextInputPanel_CommitPendingInput(ITextInputPanel* This) {
    return This->lpVtbl->CommitPendingInput(This);
}
static inline HRESULT ITextInputPanel_SetInPlaceVisibility(ITextInputPanel* This,BOOL Visible) {
    return This->lpVtbl->SetInPlaceVisibility(This,Visible);
}
static inline HRESULT ITextInputPanel_SetInPlacePosition(ITextInputPanel* This,int x,int y,CorrectionPosition position) {
    return This->lpVtbl->SetInPlacePosition(This,x,y,position);
}
static inline HRESULT ITextInputPanel_SetInPlaceHoverTargetPosition(ITextInputPanel* This,int x,int y) {
    return This->lpVtbl->SetInPlaceHoverTargetPosition(This,x,y);
}
static inline HRESULT ITextInputPanel_Advise(ITextInputPanel* This,ITextInputPanelEventSink *sink,DWORD mask) {
    return This->lpVtbl->Advise(This,sink,mask);
}
static inline HRESULT ITextInputPanel_Unadvise(ITextInputPanel* This,ITextInputPanelEventSink *sink) {
    return This->lpVtbl->Unadvise(This,sink);
}
#endif
#endif

#endif


#endif  /* __ITextInputPanel_INTERFACE_DEFINED__ */

/*****************************************************************************
 * TextInputPanel coclass
 */

DEFINE_GUID(CLSID_TextInputPanel, 0xf9b189d7, 0x228b, 0x4f2b, 0x86,0x50, 0xb9,0x7f,0x59,0xe0,0x2c,0x8c);

#ifdef __cplusplus
class DECLSPEC_UUID("f9b189d7-228b-4f2b-8650-b97f59e02c8c") TextInputPanel;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(TextInputPanel, 0xf9b189d7, 0x228b, 0x4f2b, 0x86,0x50, 0xb9,0x7f,0x59,0xe0,0x2c,0x8c)
#endif
#endif

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __peninputpanel_h__ */
