/*** Autogenerated by WIDL 5.0 from dimm.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 __dimm_h__
#define __dimm_h__

/* Forward declarations */

#ifndef __IEnumRegisterWordA_FWD_DEFINED__
#define __IEnumRegisterWordA_FWD_DEFINED__
typedef interface IEnumRegisterWordA IEnumRegisterWordA;
#ifdef __cplusplus
interface IEnumRegisterWordA;
#endif /* __cplusplus */
#endif

#ifndef __IEnumRegisterWordW_FWD_DEFINED__
#define __IEnumRegisterWordW_FWD_DEFINED__
typedef interface IEnumRegisterWordW IEnumRegisterWordW;
#ifdef __cplusplus
interface IEnumRegisterWordW;
#endif /* __cplusplus */
#endif

#ifndef __IEnumInputContext_FWD_DEFINED__
#define __IEnumInputContext_FWD_DEFINED__
typedef interface IEnumInputContext IEnumInputContext;
#ifdef __cplusplus
interface IEnumInputContext;
#endif /* __cplusplus */
#endif

#ifndef __IActiveIMMApp_FWD_DEFINED__
#define __IActiveIMMApp_FWD_DEFINED__
typedef interface IActiveIMMApp IActiveIMMApp;
#ifdef __cplusplus
interface IActiveIMMApp;
#endif /* __cplusplus */
#endif

#ifndef __IActiveIMMMessagePumpOwner_FWD_DEFINED__
#define __IActiveIMMMessagePumpOwner_FWD_DEFINED__
typedef interface IActiveIMMMessagePumpOwner IActiveIMMMessagePumpOwner;
#ifdef __cplusplus
interface IActiveIMMMessagePumpOwner;
#endif /* __cplusplus */
#endif

#ifndef __CActiveIMM_FWD_DEFINED__
#define __CActiveIMM_FWD_DEFINED__
#ifdef __cplusplus
typedef class CActiveIMM CActiveIMM;
#else
typedef struct CActiveIMM CActiveIMM;
#endif /* defined __cplusplus */
#endif /* defined __CActiveIMM_FWD_DEFINED__ */

/* Headers for imported files */

#include <unknwn.h>

#ifdef __cplusplus
extern "C" {
#endif

#include <imm.h>
#if 0
typedef struct __WIDL_dimm_generated_name_0000000B {
    LPSTR lpReading;
    LPSTR lpWord;
} REGISTERWORDA;
typedef struct __WIDL_dimm_generated_name_0000000C {
    LPWSTR lpReading;
    LPWSTR lpWord;
} REGISTERWORDW;
typedef struct __WIDL_dimm_generated_name_0000000D {
    LONG lfHeight;
    LONG lfWidth;
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    CHAR lfFaceName[32];
} LOGFONTA;
typedef struct __WIDL_dimm_generated_name_0000000E {
    LONG lfHeight;
    LONG lfWidth;
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    WCHAR lfFaceName[32];
} LOGFONTW;
typedef DWORD HIMC;
typedef DWORD HIMCC;
typedef struct __WIDL_dimm_generated_name_0000000F {
    DWORD dwIndex;
    DWORD dwStyle;
    POINT ptCurrentPos;
    RECT rcArea;
} CANDIDATEFORM;
typedef struct __WIDL_dimm_generated_name_00000010 {
    DWORD dwStyle;
    POINT ptCurrentPos;
    RECT rcArea;
} COMPOSITIONFORM;
typedef struct __WIDL_dimm_generated_name_00000011 {
    DWORD dwSize;
    DWORD dwStyle;
    DWORD dwCount;
    DWORD dwSelection;
    DWORD dwPageStart;
    DWORD dwPageSize;
    DWORD dwOffset[1];
} CANDIDATELIST;
typedef struct __WIDL_dimm_generated_name_00000012 {
    DWORD dwStyle;
    CHAR szDescription[32];
} STYLEBUFA;
typedef struct __WIDL_dimm_generated_name_00000013 {
    DWORD dwStyle;
    WCHAR szDescription[32];
} STYLEBUFW;
typedef WORD ATOM;
typedef struct __WIDL_dimm_generated_name_00000014 {
    UINT cbSize;
    UINT fType;
    UINT fState;
    UINT wID;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    DWORD dwItemData;
    CHAR szString[80];
    HBITMAP hbmpItem;
} IMEMENUITEMINFOA;
typedef struct __WIDL_dimm_generated_name_00000015 {
    UINT cbSize;
    UINT fType;
    UINT fState;
    UINT wID;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    DWORD dwItemData;
    WCHAR szString[80];
    HBITMAP hbmpItem;
} IMEMENUITEMINFOW;
#endif
/*****************************************************************************
 * IEnumRegisterWordA interface
 */
#ifndef __IEnumRegisterWordA_INTERFACE_DEFINED__
#define __IEnumRegisterWordA_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumRegisterWordA, 0x08c03412, 0xf96b, 0x11d0, 0xa4,0x75, 0x00,0xaa,0x00,0x6b,0xcc,0x59);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("08c03412-f96b-11d0-a475-00aa006bcc59")
IEnumRegisterWordA : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumRegisterWordA **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG ulCount,
        REGISTERWORDA *rgRegisterword,
        ULONG *pcFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG ulCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumRegisterWordA, 0x08c03412, 0xf96b, 0x11d0, 0xa4,0x75, 0x00,0xaa,0x00,0x6b,0xcc,0x59)
#endif
#else
typedef struct IEnumRegisterWordAVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumRegisterWordA methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumRegisterWordA *This,
        IEnumRegisterWordA **ppEnum);

    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumRegisterWordA *This,
        ULONG ulCount,
        REGISTERWORDA *rgRegisterword,
        ULONG *pcFetched);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumRegisterWordA *This);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumRegisterWordA *This,
        ULONG ulCount);

    END_INTERFACE
} IEnumRegisterWordAVtbl;

interface IEnumRegisterWordA {
    CONST_VTBL IEnumRegisterWordAVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumRegisterWordA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumRegisterWordA_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumRegisterWordA_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumRegisterWordA methods ***/
#define IEnumRegisterWordA_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define IEnumRegisterWordA_Next(This,ulCount,rgRegisterword,pcFetched) (This)->lpVtbl->Next(This,ulCount,rgRegisterword,pcFetched)
#define IEnumRegisterWordA_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumRegisterWordA_Skip(This,ulCount) (This)->lpVtbl->Skip(This,ulCount)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumRegisterWordA_QueryInterface(IEnumRegisterWordA* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumRegisterWordA_AddRef(IEnumRegisterWordA* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumRegisterWordA_Release(IEnumRegisterWordA* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumRegisterWordA methods ***/
static FORCEINLINE HRESULT IEnumRegisterWordA_Clone(IEnumRegisterWordA* This,IEnumRegisterWordA **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT IEnumRegisterWordA_Next(IEnumRegisterWordA* This,ULONG ulCount,REGISTERWORDA *rgRegisterword,ULONG *pcFetched) {
    return This->lpVtbl->Next(This,ulCount,rgRegisterword,pcFetched);
}
static FORCEINLINE HRESULT IEnumRegisterWordA_Reset(IEnumRegisterWordA* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumRegisterWordA_Skip(IEnumRegisterWordA* This,ULONG ulCount) {
    return This->lpVtbl->Skip(This,ulCount);
}
#endif
#endif

#endif


#endif  /* __IEnumRegisterWordA_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumRegisterWordW interface
 */
#ifndef __IEnumRegisterWordW_INTERFACE_DEFINED__
#define __IEnumRegisterWordW_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumRegisterWordW, 0x4955dd31, 0xb159, 0x11d0, 0x8f,0xcf, 0x00,0xaa,0x00,0x6b,0xcc,0x59);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4955dd31-b159-11d0-8fcf-00aa006bcc59")
IEnumRegisterWordW : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumRegisterWordW **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG ulCount,
        REGISTERWORDW *rgRegisterword,
        ULONG *pcFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG ulCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumRegisterWordW, 0x4955dd31, 0xb159, 0x11d0, 0x8f,0xcf, 0x00,0xaa,0x00,0x6b,0xcc,0x59)
#endif
#else
typedef struct IEnumRegisterWordWVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumRegisterWordW methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumRegisterWordW *This,
        IEnumRegisterWordW **ppEnum);

    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumRegisterWordW *This,
        ULONG ulCount,
        REGISTERWORDW *rgRegisterword,
        ULONG *pcFetched);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumRegisterWordW *This);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumRegisterWordW *This,
        ULONG ulCount);

    END_INTERFACE
} IEnumRegisterWordWVtbl;

interface IEnumRegisterWordW {
    CONST_VTBL IEnumRegisterWordWVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumRegisterWordW_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumRegisterWordW_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumRegisterWordW_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumRegisterWordW methods ***/
#define IEnumRegisterWordW_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define IEnumRegisterWordW_Next(This,ulCount,rgRegisterword,pcFetched) (This)->lpVtbl->Next(This,ulCount,rgRegisterword,pcFetched)
#define IEnumRegisterWordW_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumRegisterWordW_Skip(This,ulCount) (This)->lpVtbl->Skip(This,ulCount)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumRegisterWordW_QueryInterface(IEnumRegisterWordW* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumRegisterWordW_AddRef(IEnumRegisterWordW* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumRegisterWordW_Release(IEnumRegisterWordW* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumRegisterWordW methods ***/
static FORCEINLINE HRESULT IEnumRegisterWordW_Clone(IEnumRegisterWordW* This,IEnumRegisterWordW **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT IEnumRegisterWordW_Next(IEnumRegisterWordW* This,ULONG ulCount,REGISTERWORDW *rgRegisterword,ULONG *pcFetched) {
    return This->lpVtbl->Next(This,ulCount,rgRegisterword,pcFetched);
}
static FORCEINLINE HRESULT IEnumRegisterWordW_Reset(IEnumRegisterWordW* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumRegisterWordW_Skip(IEnumRegisterWordW* This,ULONG ulCount) {
    return This->lpVtbl->Skip(This,ulCount);
}
#endif
#endif

#endif


#endif  /* __IEnumRegisterWordW_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumInputContext interface
 */
#ifndef __IEnumInputContext_INTERFACE_DEFINED__
#define __IEnumInputContext_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumInputContext, 0x09b5eab0, 0xf997, 0x11d1, 0x93,0xd4, 0x00,0x60,0xb0,0x67,0xb8,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("09b5eab0-f997-11d1-93d4-0060b067b86e")
IEnumInputContext : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumInputContext **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG ulCount,
        HIMC *rgInputContext,
        ULONG *pcFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG ulCount) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumInputContext, 0x09b5eab0, 0xf997, 0x11d1, 0x93,0xd4, 0x00,0x60,0xb0,0x67,0xb8,0x6e)
#endif
#else
typedef struct IEnumInputContextVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumInputContext methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumInputContext *This,
        IEnumInputContext **ppEnum);

    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumInputContext *This,
        ULONG ulCount,
        HIMC *rgInputContext,
        ULONG *pcFetched);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumInputContext *This);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumInputContext *This,
        ULONG ulCount);

    END_INTERFACE
} IEnumInputContextVtbl;

interface IEnumInputContext {
    CONST_VTBL IEnumInputContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumInputContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumInputContext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumInputContext_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumInputContext methods ***/
#define IEnumInputContext_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define IEnumInputContext_Next(This,ulCount,rgInputContext,pcFetched) (This)->lpVtbl->Next(This,ulCount,rgInputContext,pcFetched)
#define IEnumInputContext_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumInputContext_Skip(This,ulCount) (This)->lpVtbl->Skip(This,ulCount)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumInputContext_QueryInterface(IEnumInputContext* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumInputContext_AddRef(IEnumInputContext* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumInputContext_Release(IEnumInputContext* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumInputContext methods ***/
static FORCEINLINE HRESULT IEnumInputContext_Clone(IEnumInputContext* This,IEnumInputContext **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT IEnumInputContext_Next(IEnumInputContext* This,ULONG ulCount,HIMC *rgInputContext,ULONG *pcFetched) {
    return This->lpVtbl->Next(This,ulCount,rgInputContext,pcFetched);
}
static FORCEINLINE HRESULT IEnumInputContext_Reset(IEnumInputContext* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumInputContext_Skip(IEnumInputContext* This,ULONG ulCount) {
    return This->lpVtbl->Skip(This,ulCount);
}
#endif
#endif

#endif


#endif  /* __IEnumInputContext_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IActiveIMMApp interface
 */
#ifndef __IActiveIMMApp_INTERFACE_DEFINED__
#define __IActiveIMMApp_INTERFACE_DEFINED__

DEFINE_GUID(IID_IActiveIMMApp, 0x08c0e040, 0x62d1, 0x11d1, 0x93,0x26, 0x00,0x60,0xb0,0x67,0xb8,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("08c0e040-62d1-11d1-9326-0060b067b86e")
IActiveIMMApp : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AssociateContext(
        HWND hWnd,
        HIMC hIME,
        HIMC *phPrev) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConfigureIMEA(
        HKL hKL,
        HWND hwnd,
        DWORD dwMode,
        REGISTERWORDA *pData) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConfigureIMEW(
        HKL hKL,
        HWND hWnd,
        DWORD dwMode,
        REGISTERWORDW *pData) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateContext(
        HIMC *phIMC) = 0;

    virtual HRESULT STDMETHODCALLTYPE DestroyContext(
        HIMC hIME) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumRegisterWordA(
        HKL hKL,
        LPSTR szReading,
        DWORD dwStyle,
        LPSTR szRegister,
        LPVOID pData,
        IEnumRegisterWordA **pEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumRegisterWordW(
        HKL hKL,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szRegister,
        LPVOID pData,
        IEnumRegisterWordW **pEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE EscapeA(
        HKL hKL,
        HIMC hIMC,
        UINT uEscape,
        LPVOID pData,
        LRESULT *plResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE EscapeW(
        HKL hKL,
        HIMC hIMC,
        UINT uEscape,
        LPVOID pData,
        LRESULT *plResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCandidateListA(
        HIMC hIMC,
        DWORD dwIndex,
        UINT uBufLen,
        CANDIDATELIST *pCandList,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCandidateListW(
        HIMC hIMC,
        DWORD dwIndex,
        UINT uBufLen,
        CANDIDATELIST *pCandList,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCandidateListCountA(
        HIMC hIMC,
        DWORD *pdwListSize,
        DWORD *pdwBufLen) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCandidateListCountW(
        HIMC hIMC,
        DWORD *pdwListSize,
        DWORD *pdwBufLen) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCandidateWindow(
        HIMC hIMC,
        DWORD dwIndex,
        CANDIDATEFORM *pCandidate) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCompositionFontA(
        HIMC hIMC,
        LOGFONTA *plf) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCompositionFontW(
        HIMC hIMC,
        LOGFONTW *plf) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCompositionStringA(
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LONG *plCopied,
        LPVOID pBuf) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCompositionStringW(
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LONG *plCopied,
        LPVOID pBuf) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCompositionWindow(
        HIMC hIMC,
        COMPOSITIONFORM *pCompForm) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetContext(
        HWND hwnd,
        HIMC *phIMC) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConversionListA(
        HKL hKL,
        HIMC hIMC,
        LPSTR pSrc,
        UINT uBufLen,
        UINT uFlag,
        CANDIDATELIST *pDst,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConversionListW(
        HKL hKL,
        HIMC hIMC,
        LPWSTR pSrc,
        UINT uBufLen,
        UINT uFlag,
        CANDIDATELIST *pDst,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConversionStatus(
        HIMC hIMC,
        DWORD *pfdwConversion,
        DWORD *pfdwSentence) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultIMEWnd(
        HWND hWnd,
        HWND *phDefWnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDescriptionA(
        HKL hKL,
        UINT uBufLen,
        LPSTR szDescription,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDescriptionW(
        HKL hKL,
        UINT uBufLen,
        LPWSTR szDescription,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGuideLineA(
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LPSTR pBuf,
        DWORD *pdwResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGuideLineW(
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LPWSTR pBuf,
        DWORD *pdwResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIMEFileNameA(
        HKL hKL,
        UINT uBufLen,
        LPSTR szFileName,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIMEFileNameW(
        HKL hKL,
        UINT uBufLen,
        LPWSTR szFileName,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOpenStatus(
        HIMC hIMC) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProperty(
        HKL hKL,
        DWORD fdwIndex,
        DWORD *pdwProperty) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRegisterWordStyleA(
        HKL hKL,
        UINT nItem,
        STYLEBUFA *pStyleBuf,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRegisterWordStyleW(
        HKL hKL,
        UINT nItem,
        STYLEBUFW *pStyleBuf,
        UINT *puCopied) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatusWindowPos(
        HIMC hIMC,
        POINT *pptPos) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVirtualKey(
        HWND hWnd,
        UINT *puVirtualKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE InstallIMEA(
        LPSTR szIMEFileName,
        LPSTR szLayoutText,
        HKL *phKL) = 0;

    virtual HRESULT STDMETHODCALLTYPE InstallIMEW(
        LPWSTR szIMEFileName,
        LPWSTR szLayoutText,
        HKL *phKL) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsIME(
        HKL hKL) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUIMessageA(
        HWND hWndIME,
        UINT msg,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsUIMessageW(
        HWND hWndIME,
        UINT msg,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE NotifyIME(
        HIMC hIMC,
        DWORD dwAction,
        DWORD dwIndex,
        DWORD dwValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterWordA(
        HKL hKL,
        LPSTR szReading,
        DWORD dwStyle,
        LPSTR szRegister) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterWordW(
        HKL hKL,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szRegister) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReleaseContext(
        HWND hWnd,
        HIMC hIMC) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCandidateWindow(
        HIMC hIMC,
        CANDIDATEFORM *pCandidate) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositionFontA(
        HIMC hIMC,
        LOGFONTA *plf) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositionFontW(
        HIMC hIMC,
        LOGFONTW *plf) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositionStringA(
        HIMC hIMC,
        DWORD dwIndex,
        LPVOID pComp,
        DWORD dwCompLen,
        LPVOID pRead,
        DWORD dwReadLen) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositionStringW(
        HIMC hIMC,
        DWORD dwIndex,
        LPVOID pComp,
        DWORD dwCompLen,
        LPVOID pRead,
        DWORD dwReadLen) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositionWindow(
        HIMC hIMC,
        COMPOSITIONFORM *pCompForm) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetConversionStatus(
        HIMC hIMC,
        DWORD fdwConversion,
        DWORD fdwSentence) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOpenStatus(
        HIMC hIMC,
        BOOL fOpen) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStatusWindowPos(
        HIMC hIMC,
        POINT *pptPos) = 0;

    virtual HRESULT STDMETHODCALLTYPE SimulateHotKey(
        HWND hwnd,
        DWORD dwHotKeyID) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterWordA(
        HKL hKL,
        LPSTR szReading,
        DWORD dwStyle,
        LPSTR szUnregister) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterWordW(
        HKL hKL,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szUnregister) = 0;

    virtual HRESULT STDMETHODCALLTYPE Activate(
        BOOL fRestoreLayout) = 0;

    virtual HRESULT STDMETHODCALLTYPE Deactivate(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnDefWindowProc(
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE FilterClientWindows(
        ATOM *aaClassList,
        UINT uSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCodePageA(
        HKL hKL,
        UINT *uCodePage) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLangId(
        HKL hKL,
        LANGID *plid) = 0;

    virtual HRESULT STDMETHODCALLTYPE AssociateContextEx(
        HWND hWnd,
        HIMC hIMC,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableIME(
        DWORD idThread) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetImeMenuItemsA(
        HIMC hIMC,
        DWORD dwFlags,
        DWORD dwType,
        IMEMENUITEMINFOA *pImeParentMenu,
        IMEMENUITEMINFOA *pImeMenu,
        DWORD dwSize,
        DWORD *pdwResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetImeMenuItemsW(
        HIMC hIMC,
        DWORD dwFlags,
        DWORD dwType,
        IMEMENUITEMINFOW *pImeParentMenu,
        IMEMENUITEMINFOW *pImeMenu,
        DWORD dwSize,
        DWORD *pdwResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumInputContext(
        DWORD idThread,
        IEnumInputContext **ppEnum) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IActiveIMMApp, 0x08c0e040, 0x62d1, 0x11d1, 0x93,0x26, 0x00,0x60,0xb0,0x67,0xb8,0x6e)
#endif
#else
typedef struct IActiveIMMAppVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IActiveIMMApp methods ***/
    HRESULT (STDMETHODCALLTYPE *AssociateContext)(
        IActiveIMMApp *This,
        HWND hWnd,
        HIMC hIME,
        HIMC *phPrev);

    HRESULT (STDMETHODCALLTYPE *ConfigureIMEA)(
        IActiveIMMApp *This,
        HKL hKL,
        HWND hwnd,
        DWORD dwMode,
        REGISTERWORDA *pData);

    HRESULT (STDMETHODCALLTYPE *ConfigureIMEW)(
        IActiveIMMApp *This,
        HKL hKL,
        HWND hWnd,
        DWORD dwMode,
        REGISTERWORDW *pData);

    HRESULT (STDMETHODCALLTYPE *CreateContext)(
        IActiveIMMApp *This,
        HIMC *phIMC);

    HRESULT (STDMETHODCALLTYPE *DestroyContext)(
        IActiveIMMApp *This,
        HIMC hIME);

    HRESULT (STDMETHODCALLTYPE *EnumRegisterWordA)(
        IActiveIMMApp *This,
        HKL hKL,
        LPSTR szReading,
        DWORD dwStyle,
        LPSTR szRegister,
        LPVOID pData,
        IEnumRegisterWordA **pEnum);

    HRESULT (STDMETHODCALLTYPE *EnumRegisterWordW)(
        IActiveIMMApp *This,
        HKL hKL,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szRegister,
        LPVOID pData,
        IEnumRegisterWordW **pEnum);

    HRESULT (STDMETHODCALLTYPE *EscapeA)(
        IActiveIMMApp *This,
        HKL hKL,
        HIMC hIMC,
        UINT uEscape,
        LPVOID pData,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *EscapeW)(
        IActiveIMMApp *This,
        HKL hKL,
        HIMC hIMC,
        UINT uEscape,
        LPVOID pData,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *GetCandidateListA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        UINT uBufLen,
        CANDIDATELIST *pCandList,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetCandidateListW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        UINT uBufLen,
        CANDIDATELIST *pCandList,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetCandidateListCountA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD *pdwListSize,
        DWORD *pdwBufLen);

    HRESULT (STDMETHODCALLTYPE *GetCandidateListCountW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD *pdwListSize,
        DWORD *pdwBufLen);

    HRESULT (STDMETHODCALLTYPE *GetCandidateWindow)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        CANDIDATEFORM *pCandidate);

    HRESULT (STDMETHODCALLTYPE *GetCompositionFontA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        LOGFONTA *plf);

    HRESULT (STDMETHODCALLTYPE *GetCompositionFontW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        LOGFONTW *plf);

    HRESULT (STDMETHODCALLTYPE *GetCompositionStringA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LONG *plCopied,
        LPVOID pBuf);

    HRESULT (STDMETHODCALLTYPE *GetCompositionStringW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LONG *plCopied,
        LPVOID pBuf);

    HRESULT (STDMETHODCALLTYPE *GetCompositionWindow)(
        IActiveIMMApp *This,
        HIMC hIMC,
        COMPOSITIONFORM *pCompForm);

    HRESULT (STDMETHODCALLTYPE *GetContext)(
        IActiveIMMApp *This,
        HWND hwnd,
        HIMC *phIMC);

    HRESULT (STDMETHODCALLTYPE *GetConversionListA)(
        IActiveIMMApp *This,
        HKL hKL,
        HIMC hIMC,
        LPSTR pSrc,
        UINT uBufLen,
        UINT uFlag,
        CANDIDATELIST *pDst,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetConversionListW)(
        IActiveIMMApp *This,
        HKL hKL,
        HIMC hIMC,
        LPWSTR pSrc,
        UINT uBufLen,
        UINT uFlag,
        CANDIDATELIST *pDst,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetConversionStatus)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD *pfdwConversion,
        DWORD *pfdwSentence);

    HRESULT (STDMETHODCALLTYPE *GetDefaultIMEWnd)(
        IActiveIMMApp *This,
        HWND hWnd,
        HWND *phDefWnd);

    HRESULT (STDMETHODCALLTYPE *GetDescriptionA)(
        IActiveIMMApp *This,
        HKL hKL,
        UINT uBufLen,
        LPSTR szDescription,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetDescriptionW)(
        IActiveIMMApp *This,
        HKL hKL,
        UINT uBufLen,
        LPWSTR szDescription,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetGuideLineA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LPSTR pBuf,
        DWORD *pdwResult);

    HRESULT (STDMETHODCALLTYPE *GetGuideLineW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        DWORD dwBufLen,
        LPWSTR pBuf,
        DWORD *pdwResult);

    HRESULT (STDMETHODCALLTYPE *GetIMEFileNameA)(
        IActiveIMMApp *This,
        HKL hKL,
        UINT uBufLen,
        LPSTR szFileName,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetIMEFileNameW)(
        IActiveIMMApp *This,
        HKL hKL,
        UINT uBufLen,
        LPWSTR szFileName,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetOpenStatus)(
        IActiveIMMApp *This,
        HIMC hIMC);

    HRESULT (STDMETHODCALLTYPE *GetProperty)(
        IActiveIMMApp *This,
        HKL hKL,
        DWORD fdwIndex,
        DWORD *pdwProperty);

    HRESULT (STDMETHODCALLTYPE *GetRegisterWordStyleA)(
        IActiveIMMApp *This,
        HKL hKL,
        UINT nItem,
        STYLEBUFA *pStyleBuf,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetRegisterWordStyleW)(
        IActiveIMMApp *This,
        HKL hKL,
        UINT nItem,
        STYLEBUFW *pStyleBuf,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *GetStatusWindowPos)(
        IActiveIMMApp *This,
        HIMC hIMC,
        POINT *pptPos);

    HRESULT (STDMETHODCALLTYPE *GetVirtualKey)(
        IActiveIMMApp *This,
        HWND hWnd,
        UINT *puVirtualKey);

    HRESULT (STDMETHODCALLTYPE *InstallIMEA)(
        IActiveIMMApp *This,
        LPSTR szIMEFileName,
        LPSTR szLayoutText,
        HKL *phKL);

    HRESULT (STDMETHODCALLTYPE *InstallIMEW)(
        IActiveIMMApp *This,
        LPWSTR szIMEFileName,
        LPWSTR szLayoutText,
        HKL *phKL);

    HRESULT (STDMETHODCALLTYPE *IsIME)(
        IActiveIMMApp *This,
        HKL hKL);

    HRESULT (STDMETHODCALLTYPE *IsUIMessageA)(
        IActiveIMMApp *This,
        HWND hWndIME,
        UINT msg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *IsUIMessageW)(
        IActiveIMMApp *This,
        HWND hWndIME,
        UINT msg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *NotifyIME)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwAction,
        DWORD dwIndex,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *RegisterWordA)(
        IActiveIMMApp *This,
        HKL hKL,
        LPSTR szReading,
        DWORD dwStyle,
        LPSTR szRegister);

    HRESULT (STDMETHODCALLTYPE *RegisterWordW)(
        IActiveIMMApp *This,
        HKL hKL,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szRegister);

    HRESULT (STDMETHODCALLTYPE *ReleaseContext)(
        IActiveIMMApp *This,
        HWND hWnd,
        HIMC hIMC);

    HRESULT (STDMETHODCALLTYPE *SetCandidateWindow)(
        IActiveIMMApp *This,
        HIMC hIMC,
        CANDIDATEFORM *pCandidate);

    HRESULT (STDMETHODCALLTYPE *SetCompositionFontA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        LOGFONTA *plf);

    HRESULT (STDMETHODCALLTYPE *SetCompositionFontW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        LOGFONTW *plf);

    HRESULT (STDMETHODCALLTYPE *SetCompositionStringA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        LPVOID pComp,
        DWORD dwCompLen,
        LPVOID pRead,
        DWORD dwReadLen);

    HRESULT (STDMETHODCALLTYPE *SetCompositionStringW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwIndex,
        LPVOID pComp,
        DWORD dwCompLen,
        LPVOID pRead,
        DWORD dwReadLen);

    HRESULT (STDMETHODCALLTYPE *SetCompositionWindow)(
        IActiveIMMApp *This,
        HIMC hIMC,
        COMPOSITIONFORM *pCompForm);

    HRESULT (STDMETHODCALLTYPE *SetConversionStatus)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD fdwConversion,
        DWORD fdwSentence);

    HRESULT (STDMETHODCALLTYPE *SetOpenStatus)(
        IActiveIMMApp *This,
        HIMC hIMC,
        BOOL fOpen);

    HRESULT (STDMETHODCALLTYPE *SetStatusWindowPos)(
        IActiveIMMApp *This,
        HIMC hIMC,
        POINT *pptPos);

    HRESULT (STDMETHODCALLTYPE *SimulateHotKey)(
        IActiveIMMApp *This,
        HWND hwnd,
        DWORD dwHotKeyID);

    HRESULT (STDMETHODCALLTYPE *UnregisterWordA)(
        IActiveIMMApp *This,
        HKL hKL,
        LPSTR szReading,
        DWORD dwStyle,
        LPSTR szUnregister);

    HRESULT (STDMETHODCALLTYPE *UnregisterWordW)(
        IActiveIMMApp *This,
        HKL hKL,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szUnregister);

    HRESULT (STDMETHODCALLTYPE *Activate)(
        IActiveIMMApp *This,
        BOOL fRestoreLayout);

    HRESULT (STDMETHODCALLTYPE *Deactivate)(
        IActiveIMMApp *This);

    HRESULT (STDMETHODCALLTYPE *OnDefWindowProc)(
        IActiveIMMApp *This,
        HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *FilterClientWindows)(
        IActiveIMMApp *This,
        ATOM *aaClassList,
        UINT uSize);

    HRESULT (STDMETHODCALLTYPE *GetCodePageA)(
        IActiveIMMApp *This,
        HKL hKL,
        UINT *uCodePage);

    HRESULT (STDMETHODCALLTYPE *GetLangId)(
        IActiveIMMApp *This,
        HKL hKL,
        LANGID *plid);

    HRESULT (STDMETHODCALLTYPE *AssociateContextEx)(
        IActiveIMMApp *This,
        HWND hWnd,
        HIMC hIMC,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *DisableIME)(
        IActiveIMMApp *This,
        DWORD idThread);

    HRESULT (STDMETHODCALLTYPE *GetImeMenuItemsA)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwFlags,
        DWORD dwType,
        IMEMENUITEMINFOA *pImeParentMenu,
        IMEMENUITEMINFOA *pImeMenu,
        DWORD dwSize,
        DWORD *pdwResult);

    HRESULT (STDMETHODCALLTYPE *GetImeMenuItemsW)(
        IActiveIMMApp *This,
        HIMC hIMC,
        DWORD dwFlags,
        DWORD dwType,
        IMEMENUITEMINFOW *pImeParentMenu,
        IMEMENUITEMINFOW *pImeMenu,
        DWORD dwSize,
        DWORD *pdwResult);

    HRESULT (STDMETHODCALLTYPE *EnumInputContext)(
        IActiveIMMApp *This,
        DWORD idThread,
        IEnumInputContext **ppEnum);

    END_INTERFACE
} IActiveIMMAppVtbl;

interface IActiveIMMApp {
    CONST_VTBL IActiveIMMAppVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActiveIMMApp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActiveIMMApp_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActiveIMMApp_Release(This) (This)->lpVtbl->Release(This)
/*** IActiveIMMApp methods ***/
#define IActiveIMMApp_AssociateContext(This,hWnd,hIME,phPrev) (This)->lpVtbl->AssociateContext(This,hWnd,hIME,phPrev)
#define IActiveIMMApp_ConfigureIMEA(This,hKL,hwnd,dwMode,pData) (This)->lpVtbl->ConfigureIMEA(This,hKL,hwnd,dwMode,pData)
#define IActiveIMMApp_ConfigureIMEW(This,hKL,hWnd,dwMode,pData) (This)->lpVtbl->ConfigureIMEW(This,hKL,hWnd,dwMode,pData)
#define IActiveIMMApp_CreateContext(This,phIMC) (This)->lpVtbl->CreateContext(This,phIMC)
#define IActiveIMMApp_DestroyContext(This,hIME) (This)->lpVtbl->DestroyContext(This,hIME)
#define IActiveIMMApp_EnumRegisterWordA(This,hKL,szReading,dwStyle,szRegister,pData,pEnum) (This)->lpVtbl->EnumRegisterWordA(This,hKL,szReading,dwStyle,szRegister,pData,pEnum)
#define IActiveIMMApp_EnumRegisterWordW(This,hKL,szReading,dwStyle,szRegister,pData,pEnum) (This)->lpVtbl->EnumRegisterWordW(This,hKL,szReading,dwStyle,szRegister,pData,pEnum)
#define IActiveIMMApp_EscapeA(This,hKL,hIMC,uEscape,pData,plResult) (This)->lpVtbl->EscapeA(This,hKL,hIMC,uEscape,pData,plResult)
#define IActiveIMMApp_EscapeW(This,hKL,hIMC,uEscape,pData,plResult) (This)->lpVtbl->EscapeW(This,hKL,hIMC,uEscape,pData,plResult)
#define IActiveIMMApp_GetCandidateListA(This,hIMC,dwIndex,uBufLen,pCandList,puCopied) (This)->lpVtbl->GetCandidateListA(This,hIMC,dwIndex,uBufLen,pCandList,puCopied)
#define IActiveIMMApp_GetCandidateListW(This,hIMC,dwIndex,uBufLen,pCandList,puCopied) (This)->lpVtbl->GetCandidateListW(This,hIMC,dwIndex,uBufLen,pCandList,puCopied)
#define IActiveIMMApp_GetCandidateListCountA(This,hIMC,pdwListSize,pdwBufLen) (This)->lpVtbl->GetCandidateListCountA(This,hIMC,pdwListSize,pdwBufLen)
#define IActiveIMMApp_GetCandidateListCountW(This,hIMC,pdwListSize,pdwBufLen) (This)->lpVtbl->GetCandidateListCountW(This,hIMC,pdwListSize,pdwBufLen)
#define IActiveIMMApp_GetCandidateWindow(This,hIMC,dwIndex,pCandidate) (This)->lpVtbl->GetCandidateWindow(This,hIMC,dwIndex,pCandidate)
#define IActiveIMMApp_GetCompositionFontA(This,hIMC,plf) (This)->lpVtbl->GetCompositionFontA(This,hIMC,plf)
#define IActiveIMMApp_GetCompositionFontW(This,hIMC,plf) (This)->lpVtbl->GetCompositionFontW(This,hIMC,plf)
#define IActiveIMMApp_GetCompositionStringA(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf) (This)->lpVtbl->GetCompositionStringA(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf)
#define IActiveIMMApp_GetCompositionStringW(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf) (This)->lpVtbl->GetCompositionStringW(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf)
#define IActiveIMMApp_GetCompositionWindow(This,hIMC,pCompForm) (This)->lpVtbl->GetCompositionWindow(This,hIMC,pCompForm)
#define IActiveIMMApp_GetContext(This,hwnd,phIMC) (This)->lpVtbl->GetContext(This,hwnd,phIMC)
#define IActiveIMMApp_GetConversionListA(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied) (This)->lpVtbl->GetConversionListA(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied)
#define IActiveIMMApp_GetConversionListW(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied) (This)->lpVtbl->GetConversionListW(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied)
#define IActiveIMMApp_GetConversionStatus(This,hIMC,pfdwConversion,pfdwSentence) (This)->lpVtbl->GetConversionStatus(This,hIMC,pfdwConversion,pfdwSentence)
#define IActiveIMMApp_GetDefaultIMEWnd(This,hWnd,phDefWnd) (This)->lpVtbl->GetDefaultIMEWnd(This,hWnd,phDefWnd)
#define IActiveIMMApp_GetDescriptionA(This,hKL,uBufLen,szDescription,puCopied) (This)->lpVtbl->GetDescriptionA(This,hKL,uBufLen,szDescription,puCopied)
#define IActiveIMMApp_GetDescriptionW(This,hKL,uBufLen,szDescription,puCopied) (This)->lpVtbl->GetDescriptionW(This,hKL,uBufLen,szDescription,puCopied)
#define IActiveIMMApp_GetGuideLineA(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult) (This)->lpVtbl->GetGuideLineA(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult)
#define IActiveIMMApp_GetGuideLineW(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult) (This)->lpVtbl->GetGuideLineW(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult)
#define IActiveIMMApp_GetIMEFileNameA(This,hKL,uBufLen,szFileName,puCopied) (This)->lpVtbl->GetIMEFileNameA(This,hKL,uBufLen,szFileName,puCopied)
#define IActiveIMMApp_GetIMEFileNameW(This,hKL,uBufLen,szFileName,puCopied) (This)->lpVtbl->GetIMEFileNameW(This,hKL,uBufLen,szFileName,puCopied)
#define IActiveIMMApp_GetOpenStatus(This,hIMC) (This)->lpVtbl->GetOpenStatus(This,hIMC)
#define IActiveIMMApp_GetProperty(This,hKL,fdwIndex,pdwProperty) (This)->lpVtbl->GetProperty(This,hKL,fdwIndex,pdwProperty)
#define IActiveIMMApp_GetRegisterWordStyleA(This,hKL,nItem,pStyleBuf,puCopied) (This)->lpVtbl->GetRegisterWordStyleA(This,hKL,nItem,pStyleBuf,puCopied)
#define IActiveIMMApp_GetRegisterWordStyleW(This,hKL,nItem,pStyleBuf,puCopied) (This)->lpVtbl->GetRegisterWordStyleW(This,hKL,nItem,pStyleBuf,puCopied)
#define IActiveIMMApp_GetStatusWindowPos(This,hIMC,pptPos) (This)->lpVtbl->GetStatusWindowPos(This,hIMC,pptPos)
#define IActiveIMMApp_GetVirtualKey(This,hWnd,puVirtualKey) (This)->lpVtbl->GetVirtualKey(This,hWnd,puVirtualKey)
#define IActiveIMMApp_InstallIMEA(This,szIMEFileName,szLayoutText,phKL) (This)->lpVtbl->InstallIMEA(This,szIMEFileName,szLayoutText,phKL)
#define IActiveIMMApp_InstallIMEW(This,szIMEFileName,szLayoutText,phKL) (This)->lpVtbl->InstallIMEW(This,szIMEFileName,szLayoutText,phKL)
#define IActiveIMMApp_IsIME(This,hKL) (This)->lpVtbl->IsIME(This,hKL)
#define IActiveIMMApp_IsUIMessageA(This,hWndIME,msg,wParam,lParam) (This)->lpVtbl->IsUIMessageA(This,hWndIME,msg,wParam,lParam)
#define IActiveIMMApp_IsUIMessageW(This,hWndIME,msg,wParam,lParam) (This)->lpVtbl->IsUIMessageW(This,hWndIME,msg,wParam,lParam)
#define IActiveIMMApp_NotifyIME(This,hIMC,dwAction,dwIndex,dwValue) (This)->lpVtbl->NotifyIME(This,hIMC,dwAction,dwIndex,dwValue)
#define IActiveIMMApp_RegisterWordA(This,hKL,szReading,dwStyle,szRegister) (This)->lpVtbl->RegisterWordA(This,hKL,szReading,dwStyle,szRegister)
#define IActiveIMMApp_RegisterWordW(This,hKL,szReading,dwStyle,szRegister) (This)->lpVtbl->RegisterWordW(This,hKL,szReading,dwStyle,szRegister)
#define IActiveIMMApp_ReleaseContext(This,hWnd,hIMC) (This)->lpVtbl->ReleaseContext(This,hWnd,hIMC)
#define IActiveIMMApp_SetCandidateWindow(This,hIMC,pCandidate) (This)->lpVtbl->SetCandidateWindow(This,hIMC,pCandidate)
#define IActiveIMMApp_SetCompositionFontA(This,hIMC,plf) (This)->lpVtbl->SetCompositionFontA(This,hIMC,plf)
#define IActiveIMMApp_SetCompositionFontW(This,hIMC,plf) (This)->lpVtbl->SetCompositionFontW(This,hIMC,plf)
#define IActiveIMMApp_SetCompositionStringA(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen) (This)->lpVtbl->SetCompositionStringA(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen)
#define IActiveIMMApp_SetCompositionStringW(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen) (This)->lpVtbl->SetCompositionStringW(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen)
#define IActiveIMMApp_SetCompositionWindow(This,hIMC,pCompForm) (This)->lpVtbl->SetCompositionWindow(This,hIMC,pCompForm)
#define IActiveIMMApp_SetConversionStatus(This,hIMC,fdwConversion,fdwSentence) (This)->lpVtbl->SetConversionStatus(This,hIMC,fdwConversion,fdwSentence)
#define IActiveIMMApp_SetOpenStatus(This,hIMC,fOpen) (This)->lpVtbl->SetOpenStatus(This,hIMC,fOpen)
#define IActiveIMMApp_SetStatusWindowPos(This,hIMC,pptPos) (This)->lpVtbl->SetStatusWindowPos(This,hIMC,pptPos)
#define IActiveIMMApp_SimulateHotKey(This,hwnd,dwHotKeyID) (This)->lpVtbl->SimulateHotKey(This,hwnd,dwHotKeyID)
#define IActiveIMMApp_UnregisterWordA(This,hKL,szReading,dwStyle,szUnregister) (This)->lpVtbl->UnregisterWordA(This,hKL,szReading,dwStyle,szUnregister)
#define IActiveIMMApp_UnregisterWordW(This,hKL,szReading,dwStyle,szUnregister) (This)->lpVtbl->UnregisterWordW(This,hKL,szReading,dwStyle,szUnregister)
#define IActiveIMMApp_Activate(This,fRestoreLayout) (This)->lpVtbl->Activate(This,fRestoreLayout)
#define IActiveIMMApp_Deactivate(This) (This)->lpVtbl->Deactivate(This)
#define IActiveIMMApp_OnDefWindowProc(This,hWnd,Msg,wParam,lParam,plResult) (This)->lpVtbl->OnDefWindowProc(This,hWnd,Msg,wParam,lParam,plResult)
#define IActiveIMMApp_FilterClientWindows(This,aaClassList,uSize) (This)->lpVtbl->FilterClientWindows(This,aaClassList,uSize)
#define IActiveIMMApp_GetCodePageA(This,hKL,uCodePage) (This)->lpVtbl->GetCodePageA(This,hKL,uCodePage)
#define IActiveIMMApp_GetLangId(This,hKL,plid) (This)->lpVtbl->GetLangId(This,hKL,plid)
#define IActiveIMMApp_AssociateContextEx(This,hWnd,hIMC,dwFlags) (This)->lpVtbl->AssociateContextEx(This,hWnd,hIMC,dwFlags)
#define IActiveIMMApp_DisableIME(This,idThread) (This)->lpVtbl->DisableIME(This,idThread)
#define IActiveIMMApp_GetImeMenuItemsA(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult) (This)->lpVtbl->GetImeMenuItemsA(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult)
#define IActiveIMMApp_GetImeMenuItemsW(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult) (This)->lpVtbl->GetImeMenuItemsW(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult)
#define IActiveIMMApp_EnumInputContext(This,idThread,ppEnum) (This)->lpVtbl->EnumInputContext(This,idThread,ppEnum)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IActiveIMMApp_QueryInterface(IActiveIMMApp* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IActiveIMMApp_AddRef(IActiveIMMApp* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IActiveIMMApp_Release(IActiveIMMApp* This) {
    return This->lpVtbl->Release(This);
}
/*** IActiveIMMApp methods ***/
static FORCEINLINE HRESULT IActiveIMMApp_AssociateContext(IActiveIMMApp* This,HWND hWnd,HIMC hIME,HIMC *phPrev) {
    return This->lpVtbl->AssociateContext(This,hWnd,hIME,phPrev);
}
static FORCEINLINE HRESULT IActiveIMMApp_ConfigureIMEA(IActiveIMMApp* This,HKL hKL,HWND hwnd,DWORD dwMode,REGISTERWORDA *pData) {
    return This->lpVtbl->ConfigureIMEA(This,hKL,hwnd,dwMode,pData);
}
static FORCEINLINE HRESULT IActiveIMMApp_ConfigureIMEW(IActiveIMMApp* This,HKL hKL,HWND hWnd,DWORD dwMode,REGISTERWORDW *pData) {
    return This->lpVtbl->ConfigureIMEW(This,hKL,hWnd,dwMode,pData);
}
static FORCEINLINE HRESULT IActiveIMMApp_CreateContext(IActiveIMMApp* This,HIMC *phIMC) {
    return This->lpVtbl->CreateContext(This,phIMC);
}
static FORCEINLINE HRESULT IActiveIMMApp_DestroyContext(IActiveIMMApp* This,HIMC hIME) {
    return This->lpVtbl->DestroyContext(This,hIME);
}
static FORCEINLINE HRESULT IActiveIMMApp_EnumRegisterWordA(IActiveIMMApp* This,HKL hKL,LPSTR szReading,DWORD dwStyle,LPSTR szRegister,LPVOID pData,IEnumRegisterWordA **pEnum) {
    return This->lpVtbl->EnumRegisterWordA(This,hKL,szReading,dwStyle,szRegister,pData,pEnum);
}
static FORCEINLINE HRESULT IActiveIMMApp_EnumRegisterWordW(IActiveIMMApp* This,HKL hKL,LPWSTR szReading,DWORD dwStyle,LPWSTR szRegister,LPVOID pData,IEnumRegisterWordW **pEnum) {
    return This->lpVtbl->EnumRegisterWordW(This,hKL,szReading,dwStyle,szRegister,pData,pEnum);
}
static FORCEINLINE HRESULT IActiveIMMApp_EscapeA(IActiveIMMApp* This,HKL hKL,HIMC hIMC,UINT uEscape,LPVOID pData,LRESULT *plResult) {
    return This->lpVtbl->EscapeA(This,hKL,hIMC,uEscape,pData,plResult);
}
static FORCEINLINE HRESULT IActiveIMMApp_EscapeW(IActiveIMMApp* This,HKL hKL,HIMC hIMC,UINT uEscape,LPVOID pData,LRESULT *plResult) {
    return This->lpVtbl->EscapeW(This,hKL,hIMC,uEscape,pData,plResult);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCandidateListA(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,UINT uBufLen,CANDIDATELIST *pCandList,UINT *puCopied) {
    return This->lpVtbl->GetCandidateListA(This,hIMC,dwIndex,uBufLen,pCandList,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCandidateListW(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,UINT uBufLen,CANDIDATELIST *pCandList,UINT *puCopied) {
    return This->lpVtbl->GetCandidateListW(This,hIMC,dwIndex,uBufLen,pCandList,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCandidateListCountA(IActiveIMMApp* This,HIMC hIMC,DWORD *pdwListSize,DWORD *pdwBufLen) {
    return This->lpVtbl->GetCandidateListCountA(This,hIMC,pdwListSize,pdwBufLen);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCandidateListCountW(IActiveIMMApp* This,HIMC hIMC,DWORD *pdwListSize,DWORD *pdwBufLen) {
    return This->lpVtbl->GetCandidateListCountW(This,hIMC,pdwListSize,pdwBufLen);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCandidateWindow(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,CANDIDATEFORM *pCandidate) {
    return This->lpVtbl->GetCandidateWindow(This,hIMC,dwIndex,pCandidate);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCompositionFontA(IActiveIMMApp* This,HIMC hIMC,LOGFONTA *plf) {
    return This->lpVtbl->GetCompositionFontA(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCompositionFontW(IActiveIMMApp* This,HIMC hIMC,LOGFONTW *plf) {
    return This->lpVtbl->GetCompositionFontW(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCompositionStringA(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LONG *plCopied,LPVOID pBuf) {
    return This->lpVtbl->GetCompositionStringA(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCompositionStringW(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LONG *plCopied,LPVOID pBuf) {
    return This->lpVtbl->GetCompositionStringW(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCompositionWindow(IActiveIMMApp* This,HIMC hIMC,COMPOSITIONFORM *pCompForm) {
    return This->lpVtbl->GetCompositionWindow(This,hIMC,pCompForm);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetContext(IActiveIMMApp* This,HWND hwnd,HIMC *phIMC) {
    return This->lpVtbl->GetContext(This,hwnd,phIMC);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetConversionListA(IActiveIMMApp* This,HKL hKL,HIMC hIMC,LPSTR pSrc,UINT uBufLen,UINT uFlag,CANDIDATELIST *pDst,UINT *puCopied) {
    return This->lpVtbl->GetConversionListA(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetConversionListW(IActiveIMMApp* This,HKL hKL,HIMC hIMC,LPWSTR pSrc,UINT uBufLen,UINT uFlag,CANDIDATELIST *pDst,UINT *puCopied) {
    return This->lpVtbl->GetConversionListW(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetConversionStatus(IActiveIMMApp* This,HIMC hIMC,DWORD *pfdwConversion,DWORD *pfdwSentence) {
    return This->lpVtbl->GetConversionStatus(This,hIMC,pfdwConversion,pfdwSentence);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetDefaultIMEWnd(IActiveIMMApp* This,HWND hWnd,HWND *phDefWnd) {
    return This->lpVtbl->GetDefaultIMEWnd(This,hWnd,phDefWnd);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetDescriptionA(IActiveIMMApp* This,HKL hKL,UINT uBufLen,LPSTR szDescription,UINT *puCopied) {
    return This->lpVtbl->GetDescriptionA(This,hKL,uBufLen,szDescription,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetDescriptionW(IActiveIMMApp* This,HKL hKL,UINT uBufLen,LPWSTR szDescription,UINT *puCopied) {
    return This->lpVtbl->GetDescriptionW(This,hKL,uBufLen,szDescription,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetGuideLineA(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LPSTR pBuf,DWORD *pdwResult) {
    return This->lpVtbl->GetGuideLineA(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetGuideLineW(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LPWSTR pBuf,DWORD *pdwResult) {
    return This->lpVtbl->GetGuideLineW(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetIMEFileNameA(IActiveIMMApp* This,HKL hKL,UINT uBufLen,LPSTR szFileName,UINT *puCopied) {
    return This->lpVtbl->GetIMEFileNameA(This,hKL,uBufLen,szFileName,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetIMEFileNameW(IActiveIMMApp* This,HKL hKL,UINT uBufLen,LPWSTR szFileName,UINT *puCopied) {
    return This->lpVtbl->GetIMEFileNameW(This,hKL,uBufLen,szFileName,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetOpenStatus(IActiveIMMApp* This,HIMC hIMC) {
    return This->lpVtbl->GetOpenStatus(This,hIMC);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetProperty(IActiveIMMApp* This,HKL hKL,DWORD fdwIndex,DWORD *pdwProperty) {
    return This->lpVtbl->GetProperty(This,hKL,fdwIndex,pdwProperty);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetRegisterWordStyleA(IActiveIMMApp* This,HKL hKL,UINT nItem,STYLEBUFA *pStyleBuf,UINT *puCopied) {
    return This->lpVtbl->GetRegisterWordStyleA(This,hKL,nItem,pStyleBuf,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetRegisterWordStyleW(IActiveIMMApp* This,HKL hKL,UINT nItem,STYLEBUFW *pStyleBuf,UINT *puCopied) {
    return This->lpVtbl->GetRegisterWordStyleW(This,hKL,nItem,pStyleBuf,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetStatusWindowPos(IActiveIMMApp* This,HIMC hIMC,POINT *pptPos) {
    return This->lpVtbl->GetStatusWindowPos(This,hIMC,pptPos);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetVirtualKey(IActiveIMMApp* This,HWND hWnd,UINT *puVirtualKey) {
    return This->lpVtbl->GetVirtualKey(This,hWnd,puVirtualKey);
}
static FORCEINLINE HRESULT IActiveIMMApp_InstallIMEA(IActiveIMMApp* This,LPSTR szIMEFileName,LPSTR szLayoutText,HKL *phKL) {
    return This->lpVtbl->InstallIMEA(This,szIMEFileName,szLayoutText,phKL);
}
static FORCEINLINE HRESULT IActiveIMMApp_InstallIMEW(IActiveIMMApp* This,LPWSTR szIMEFileName,LPWSTR szLayoutText,HKL *phKL) {
    return This->lpVtbl->InstallIMEW(This,szIMEFileName,szLayoutText,phKL);
}
static FORCEINLINE HRESULT IActiveIMMApp_IsIME(IActiveIMMApp* This,HKL hKL) {
    return This->lpVtbl->IsIME(This,hKL);
}
static FORCEINLINE HRESULT IActiveIMMApp_IsUIMessageA(IActiveIMMApp* This,HWND hWndIME,UINT msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->IsUIMessageA(This,hWndIME,msg,wParam,lParam);
}
static FORCEINLINE HRESULT IActiveIMMApp_IsUIMessageW(IActiveIMMApp* This,HWND hWndIME,UINT msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->IsUIMessageW(This,hWndIME,msg,wParam,lParam);
}
static FORCEINLINE HRESULT IActiveIMMApp_NotifyIME(IActiveIMMApp* This,HIMC hIMC,DWORD dwAction,DWORD dwIndex,DWORD dwValue) {
    return This->lpVtbl->NotifyIME(This,hIMC,dwAction,dwIndex,dwValue);
}
static FORCEINLINE HRESULT IActiveIMMApp_RegisterWordA(IActiveIMMApp* This,HKL hKL,LPSTR szReading,DWORD dwStyle,LPSTR szRegister) {
    return This->lpVtbl->RegisterWordA(This,hKL,szReading,dwStyle,szRegister);
}
static FORCEINLINE HRESULT IActiveIMMApp_RegisterWordW(IActiveIMMApp* This,HKL hKL,LPWSTR szReading,DWORD dwStyle,LPWSTR szRegister) {
    return This->lpVtbl->RegisterWordW(This,hKL,szReading,dwStyle,szRegister);
}
static FORCEINLINE HRESULT IActiveIMMApp_ReleaseContext(IActiveIMMApp* This,HWND hWnd,HIMC hIMC) {
    return This->lpVtbl->ReleaseContext(This,hWnd,hIMC);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetCandidateWindow(IActiveIMMApp* This,HIMC hIMC,CANDIDATEFORM *pCandidate) {
    return This->lpVtbl->SetCandidateWindow(This,hIMC,pCandidate);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetCompositionFontA(IActiveIMMApp* This,HIMC hIMC,LOGFONTA *plf) {
    return This->lpVtbl->SetCompositionFontA(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetCompositionFontW(IActiveIMMApp* This,HIMC hIMC,LOGFONTW *plf) {
    return This->lpVtbl->SetCompositionFontW(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetCompositionStringA(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,LPVOID pComp,DWORD dwCompLen,LPVOID pRead,DWORD dwReadLen) {
    return This->lpVtbl->SetCompositionStringA(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetCompositionStringW(IActiveIMMApp* This,HIMC hIMC,DWORD dwIndex,LPVOID pComp,DWORD dwCompLen,LPVOID pRead,DWORD dwReadLen) {
    return This->lpVtbl->SetCompositionStringW(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetCompositionWindow(IActiveIMMApp* This,HIMC hIMC,COMPOSITIONFORM *pCompForm) {
    return This->lpVtbl->SetCompositionWindow(This,hIMC,pCompForm);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetConversionStatus(IActiveIMMApp* This,HIMC hIMC,DWORD fdwConversion,DWORD fdwSentence) {
    return This->lpVtbl->SetConversionStatus(This,hIMC,fdwConversion,fdwSentence);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetOpenStatus(IActiveIMMApp* This,HIMC hIMC,BOOL fOpen) {
    return This->lpVtbl->SetOpenStatus(This,hIMC,fOpen);
}
static FORCEINLINE HRESULT IActiveIMMApp_SetStatusWindowPos(IActiveIMMApp* This,HIMC hIMC,POINT *pptPos) {
    return This->lpVtbl->SetStatusWindowPos(This,hIMC,pptPos);
}
static FORCEINLINE HRESULT IActiveIMMApp_SimulateHotKey(IActiveIMMApp* This,HWND hwnd,DWORD dwHotKeyID) {
    return This->lpVtbl->SimulateHotKey(This,hwnd,dwHotKeyID);
}
static FORCEINLINE HRESULT IActiveIMMApp_UnregisterWordA(IActiveIMMApp* This,HKL hKL,LPSTR szReading,DWORD dwStyle,LPSTR szUnregister) {
    return This->lpVtbl->UnregisterWordA(This,hKL,szReading,dwStyle,szUnregister);
}
static FORCEINLINE HRESULT IActiveIMMApp_UnregisterWordW(IActiveIMMApp* This,HKL hKL,LPWSTR szReading,DWORD dwStyle,LPWSTR szUnregister) {
    return This->lpVtbl->UnregisterWordW(This,hKL,szReading,dwStyle,szUnregister);
}
static FORCEINLINE HRESULT IActiveIMMApp_Activate(IActiveIMMApp* This,BOOL fRestoreLayout) {
    return This->lpVtbl->Activate(This,fRestoreLayout);
}
static FORCEINLINE HRESULT IActiveIMMApp_Deactivate(IActiveIMMApp* This) {
    return This->lpVtbl->Deactivate(This);
}
static FORCEINLINE HRESULT IActiveIMMApp_OnDefWindowProc(IActiveIMMApp* This,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,LRESULT *plResult) {
    return This->lpVtbl->OnDefWindowProc(This,hWnd,Msg,wParam,lParam,plResult);
}
static FORCEINLINE HRESULT IActiveIMMApp_FilterClientWindows(IActiveIMMApp* This,ATOM *aaClassList,UINT uSize) {
    return This->lpVtbl->FilterClientWindows(This,aaClassList,uSize);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetCodePageA(IActiveIMMApp* This,HKL hKL,UINT *uCodePage) {
    return This->lpVtbl->GetCodePageA(This,hKL,uCodePage);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetLangId(IActiveIMMApp* This,HKL hKL,LANGID *plid) {
    return This->lpVtbl->GetLangId(This,hKL,plid);
}
static FORCEINLINE HRESULT IActiveIMMApp_AssociateContextEx(IActiveIMMApp* This,HWND hWnd,HIMC hIMC,DWORD dwFlags) {
    return This->lpVtbl->AssociateContextEx(This,hWnd,hIMC,dwFlags);
}
static FORCEINLINE HRESULT IActiveIMMApp_DisableIME(IActiveIMMApp* This,DWORD idThread) {
    return This->lpVtbl->DisableIME(This,idThread);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetImeMenuItemsA(IActiveIMMApp* This,HIMC hIMC,DWORD dwFlags,DWORD dwType,IMEMENUITEMINFOA *pImeParentMenu,IMEMENUITEMINFOA *pImeMenu,DWORD dwSize,DWORD *pdwResult) {
    return This->lpVtbl->GetImeMenuItemsA(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult);
}
static FORCEINLINE HRESULT IActiveIMMApp_GetImeMenuItemsW(IActiveIMMApp* This,HIMC hIMC,DWORD dwFlags,DWORD dwType,IMEMENUITEMINFOW *pImeParentMenu,IMEMENUITEMINFOW *pImeMenu,DWORD dwSize,DWORD *pdwResult) {
    return This->lpVtbl->GetImeMenuItemsW(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult);
}
static FORCEINLINE HRESULT IActiveIMMApp_EnumInputContext(IActiveIMMApp* This,DWORD idThread,IEnumInputContext **ppEnum) {
    return This->lpVtbl->EnumInputContext(This,idThread,ppEnum);
}
#endif
#endif

#endif


#endif  /* __IActiveIMMApp_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IActiveIMMMessagePumpOwner interface
 */
#ifndef __IActiveIMMMessagePumpOwner_INTERFACE_DEFINED__
#define __IActiveIMMMessagePumpOwner_INTERFACE_DEFINED__

DEFINE_GUID(IID_IActiveIMMMessagePumpOwner, 0xb5cf2cfa, 0x8aeb, 0x11d1, 0x93,0x64, 0x00,0x60,0xb0,0x67,0xb8,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b5cf2cfa-8aeb-11d1-9364-0060b067b86e")
IActiveIMMMessagePumpOwner : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Start(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE End(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnTranslateMessage(
        const MSG *msg) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        DWORD *cookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        DWORD cookie) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IActiveIMMMessagePumpOwner, 0xb5cf2cfa, 0x8aeb, 0x11d1, 0x93,0x64, 0x00,0x60,0xb0,0x67,0xb8,0x6e)
#endif
#else
typedef struct IActiveIMMMessagePumpOwnerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IActiveIMMMessagePumpOwner methods ***/
    HRESULT (STDMETHODCALLTYPE *Start)(
        IActiveIMMMessagePumpOwner *This);

    HRESULT (STDMETHODCALLTYPE *End)(
        IActiveIMMMessagePumpOwner *This);

    HRESULT (STDMETHODCALLTYPE *OnTranslateMessage)(
        IActiveIMMMessagePumpOwner *This,
        const MSG *msg);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        IActiveIMMMessagePumpOwner *This,
        DWORD *cookie);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        IActiveIMMMessagePumpOwner *This,
        DWORD cookie);

    END_INTERFACE
} IActiveIMMMessagePumpOwnerVtbl;

interface IActiveIMMMessagePumpOwner {
    CONST_VTBL IActiveIMMMessagePumpOwnerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActiveIMMMessagePumpOwner_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActiveIMMMessagePumpOwner_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActiveIMMMessagePumpOwner_Release(This) (This)->lpVtbl->Release(This)
/*** IActiveIMMMessagePumpOwner methods ***/
#define IActiveIMMMessagePumpOwner_Start(This) (This)->lpVtbl->Start(This)
#define IActiveIMMMessagePumpOwner_End(This) (This)->lpVtbl->End(This)
#define IActiveIMMMessagePumpOwner_OnTranslateMessage(This,msg) (This)->lpVtbl->OnTranslateMessage(This,msg)
#define IActiveIMMMessagePumpOwner_Pause(This,cookie) (This)->lpVtbl->Pause(This,cookie)
#define IActiveIMMMessagePumpOwner_Resume(This,cookie) (This)->lpVtbl->Resume(This,cookie)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_QueryInterface(IActiveIMMMessagePumpOwner* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IActiveIMMMessagePumpOwner_AddRef(IActiveIMMMessagePumpOwner* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IActiveIMMMessagePumpOwner_Release(IActiveIMMMessagePumpOwner* This) {
    return This->lpVtbl->Release(This);
}
/*** IActiveIMMMessagePumpOwner methods ***/
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_Start(IActiveIMMMessagePumpOwner* This) {
    return This->lpVtbl->Start(This);
}
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_End(IActiveIMMMessagePumpOwner* This) {
    return This->lpVtbl->End(This);
}
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_OnTranslateMessage(IActiveIMMMessagePumpOwner* This,const MSG *msg) {
    return This->lpVtbl->OnTranslateMessage(This,msg);
}
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_Pause(IActiveIMMMessagePumpOwner* This,DWORD *cookie) {
    return This->lpVtbl->Pause(This,cookie);
}
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_Resume(IActiveIMMMessagePumpOwner* This,DWORD cookie) {
    return This->lpVtbl->Resume(This,cookie);
}
#endif
#endif

#endif


#endif  /* __IActiveIMMMessagePumpOwner_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CActiveIMM coclass
 */

DEFINE_GUID(CLSID_CActiveIMM, 0x4955dd33, 0xb159, 0x11d0, 0x8f,0xcf, 0x00,0xaa,0x00,0x6b,0xcc,0x59);

#ifdef __cplusplus
class DECLSPEC_UUID("4955dd33-b159-11d0-8fcf-00aa006bcc59") CActiveIMM;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CActiveIMM, 0x4955dd33, 0xb159, 0x11d0, 0x8f,0xcf, 0x00,0xaa,0x00,0x6b,0xcc,0x59)
#endif
#endif

/* Begin additional prototypes for all interfaces */

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 /* __dimm_h__ */
