/*** Autogenerated by WIDL 4.12.1 from include/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 __IEnumInputContext_FWD_DEFINED__
#define __IEnumInputContext_FWD_DEFINED__
typedef interface IEnumInputContext IEnumInputContext;
#ifdef __cplusplus
interface IEnumInputContext;
#endif /* __cplusplus */
#endif

#ifndef __IActiveIMMRegistrar_FWD_DEFINED__
#define __IActiveIMMRegistrar_FWD_DEFINED__
typedef interface IActiveIMMRegistrar IActiveIMMRegistrar;
#ifdef __cplusplus
interface IActiveIMMRegistrar;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IActiveIMMIME_FWD_DEFINED__
#define __IActiveIMMIME_FWD_DEFINED__
typedef interface IActiveIMMIME IActiveIMMIME;
#ifdef __cplusplus
interface IActiveIMMIME;
#endif /* __cplusplus */
#endif

#ifndef __IActiveIME_FWD_DEFINED__
#define __IActiveIME_FWD_DEFINED__
typedef interface IActiveIME IActiveIME;
#ifdef __cplusplus
interface IActiveIME;
#endif /* __cplusplus */
#endif

#ifndef __IActiveIME2_FWD_DEFINED__
#define __IActiveIME2_FWD_DEFINED__
typedef interface IActiveIME2 IActiveIME2;
#ifdef __cplusplus
interface IActiveIME2;
#endif /* __cplusplus */
#endif

#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 __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

/**
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */

#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

#include <winapifamily.h>

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

DEFINE_GUID(LIBID_ActiveIMM, 0x4955dd30, 0xb159, 0x11d0, 0x8f,0xcf, 0x00,0xaa,0x00,0x6b,0xcc,0x59);

#include <imm.h>
#if 0
typedef WORD LANGID;
typedef struct __WIDL_dimm_generated_name_00000002 {
    LPSTR lpReading;
    LPSTR lpWord;
} REGISTERWORDA;
typedef struct __WIDL_dimm_generated_name_00000003 {
    LPWSTR lpReading;
    LPWSTR lpWord;
} REGISTERWORDW;
typedef struct __WIDL_dimm_generated_name_00000004 {
    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_00000005 {
    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_00000006 {
    DWORD dwIndex;
    DWORD dwStyle;
    POINT ptCurrentPos;
    RECT rcArea;
} CANDIDATEFORM;
typedef struct __WIDL_dimm_generated_name_00000007 {
    DWORD dwStyle;
    POINT ptCurrentPos;
    RECT rcArea;
} COMPOSITIONFORM;
typedef struct __WIDL_dimm_generated_name_00000008 {
    DWORD dwSize;
    DWORD dwStyle;
    DWORD dwCount;
    DWORD dwSelection;
    DWORD dwPageStart;
    DWORD dwPageSize;
    DWORD dwOffset[1];
} CANDIDATELIST;
typedef struct __WIDL_dimm_generated_name_00000009 {
    DWORD dwStyle;
    CHAR szDescription[32];
} STYLEBUFA;
typedef struct __WIDL_dimm_generated_name_0000000A {
    DWORD dwStyle;
    WCHAR szDescription[32];
} STYLEBUFW;
typedef WORD ATOM;
typedef struct __WIDL_dimm_generated_name_0000000B {
    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_0000000C {
    UINT cbSize;
    UINT fType;
    UINT fState;
    UINT wID;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    DWORD dwItemData;
    WCHAR szString[80];
    HBITMAP hbmpItem;
} IMEMENUITEMINFOW;
#endif
#ifndef _DDKIMM_H_
typedef struct __WIDL_dimm_generated_name_0000000D {
    HWND hWnd;
    WINBOOL fOpen;
    POINT ptStatusWndPos;
    POINT ptSoftKbdPos;
    DWORD fdwConversion;
    DWORD fdwSentence;
    union {
        LOGFONTA A;
        LOGFONTW W;
    } lfFont;
    COMPOSITIONFORM cfCompForm;
    CANDIDATEFORM cfCandForm[4];
    HIMCC hCompStr;
    HIMCC hCandInfo;
    HIMCC hGuideLine;
    HIMCC hPrivate;
    DWORD dwNumMsgBuf;
    HIMCC hMsgBuf;
    DWORD fdwInit;
    DWORD dwReserve[3];
} INPUTCONTEXT;
typedef struct __WIDL_dimm_generated_name_0000000E {
    DWORD dwPrivateDataSize;
    DWORD fdwProperty;
    DWORD fdwConversionCaps;
    DWORD fdwSentenceCaps;
    DWORD fdwUICaps;
    DWORD fdwSCSCaps;
    DWORD fdwSelectCaps;
} IMEINFO;
#endif
/*****************************************************************************
 * 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__ */

/*****************************************************************************
 * IActiveIMMRegistrar interface
 */
#ifndef __IActiveIMMRegistrar_INTERFACE_DEFINED__
#define __IActiveIMMRegistrar_INTERFACE_DEFINED__

DEFINE_GUID(IID_IActiveIMMRegistrar, 0xb3458082, 0xbd00, 0x11d1, 0x93,0x9b, 0x00,0x60,0xb0,0x67,0xb8,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b3458082-bd00-11d1-939b-0060b067b86e")
IActiveIMMRegistrar : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RegisterIME(
        REFCLSID rclsid,
        LANGID lgid,
        LPCWSTR pszIconFile,
        LPCWSTR pszDesc) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterIME(
        REFCLSID rclsid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IActiveIMMRegistrar, 0xb3458082, 0xbd00, 0x11d1, 0x93,0x9b, 0x00,0x60,0xb0,0x67,0xb8,0x6e)
#endif
#else
typedef struct IActiveIMMRegistrarVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IActiveIMMRegistrar methods ***/
    HRESULT (STDMETHODCALLTYPE *RegisterIME)(
        IActiveIMMRegistrar *This,
        REFCLSID rclsid,
        LANGID lgid,
        LPCWSTR pszIconFile,
        LPCWSTR pszDesc);

    HRESULT (STDMETHODCALLTYPE *UnregisterIME)(
        IActiveIMMRegistrar *This,
        REFCLSID rclsid);

    END_INTERFACE
} IActiveIMMRegistrarVtbl;

interface IActiveIMMRegistrar {
    CONST_VTBL IActiveIMMRegistrarVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActiveIMMRegistrar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActiveIMMRegistrar_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActiveIMMRegistrar_Release(This) (This)->lpVtbl->Release(This)
/*** IActiveIMMRegistrar methods ***/
#define IActiveIMMRegistrar_RegisterIME(This,rclsid,lgid,pszIconFile,pszDesc) (This)->lpVtbl->RegisterIME(This,rclsid,lgid,pszIconFile,pszDesc)
#define IActiveIMMRegistrar_UnregisterIME(This,rclsid) (This)->lpVtbl->UnregisterIME(This,rclsid)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IActiveIMMRegistrar_QueryInterface(IActiveIMMRegistrar* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IActiveIMMRegistrar_AddRef(IActiveIMMRegistrar* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IActiveIMMRegistrar_Release(IActiveIMMRegistrar* This) {
    return This->lpVtbl->Release(This);
}
/*** IActiveIMMRegistrar methods ***/
static FORCEINLINE HRESULT IActiveIMMRegistrar_RegisterIME(IActiveIMMRegistrar* This,REFCLSID rclsid,LANGID lgid,LPCWSTR pszIconFile,LPCWSTR pszDesc) {
    return This->lpVtbl->RegisterIME(This,rclsid,lgid,pszIconFile,pszDesc);
}
static FORCEINLINE HRESULT IActiveIMMRegistrar_UnregisterIME(IActiveIMMRegistrar* This,REFCLSID rclsid) {
    return This->lpVtbl->UnregisterIME(This,rclsid);
}
#endif
#endif

#endif


#endif  /* __IActiveIMMRegistrar_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 *pMsg) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE Resume(
        DWORD dwCookie) = 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 *pMsg);

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

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

    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,pMsg) (This)->lpVtbl->OnTranslateMessage(This,pMsg)
#define IActiveIMMMessagePumpOwner_Pause(This,pdwCookie) (This)->lpVtbl->Pause(This,pdwCookie)
#define IActiveIMMMessagePumpOwner_Resume(This,dwCookie) (This)->lpVtbl->Resume(This,dwCookie)
#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 *pMsg) {
    return This->lpVtbl->OnTranslateMessage(This,pMsg);
}
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_Pause(IActiveIMMMessagePumpOwner* This,DWORD *pdwCookie) {
    return This->lpVtbl->Pause(This,pdwCookie);
}
static FORCEINLINE HRESULT IActiveIMMMessagePumpOwner_Resume(IActiveIMMMessagePumpOwner* This,DWORD dwCookie) {
    return This->lpVtbl->Resume(This,dwCookie);
}
#endif
#endif

#endif


#endif  /* __IActiveIMMMessagePumpOwner_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,
        WINBOOL 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(
        WINBOOL 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,
        WINBOOL 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,
        WINBOOL 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,WINBOOL 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,WINBOOL 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__ */

/*****************************************************************************
 * IActiveIMMIME interface
 */
#ifndef __IActiveIMMIME_INTERFACE_DEFINED__
#define __IActiveIMMIME_INTERFACE_DEFINED__

DEFINE_GUID(IID_IActiveIMMIME, 0x08c03411, 0xf96b, 0x11d0, 0xa4,0x75, 0x00,0xaa,0x00,0x6b,0xcc,0x59);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("08c03411-f96b-11d0-a475-00aa006bcc59")
IActiveIMMIME : 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,
        WINBOOL 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 GenerateMessage(
        HIMC hIMC) = 0;

    virtual HRESULT STDMETHODCALLTYPE LockIMC(
        HIMC hIMC,
        INPUTCONTEXT **ppIMC) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnlockIMC(
        HIMC hIMC) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIMCLockCount(
        HIMC hIMC,
        DWORD *pdwLockCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateIMCC(
        DWORD dwSize,
        HIMCC *phIMCC) = 0;

    virtual HRESULT STDMETHODCALLTYPE DestroyIMCC(
        HIMCC hIMCC) = 0;

    virtual HRESULT STDMETHODCALLTYPE LockIMCC(
        HIMCC hIMCC,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnlockIMCC(
        HIMCC hIMCC) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReSizeIMCC(
        HIMCC hIMCC,
        DWORD dwSize,
        HIMCC *phIMCC) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIMCCSize(
        HIMCC hIMCC,
        DWORD *pdwSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIMCCLockCount(
        HIMCC hIMCC,
        DWORD *pdwLockCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHotKey(
        DWORD dwHotKeyID,
        UINT *puModifiers,
        UINT *puVKey,
        HKL *phKL) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetHotKey(
        DWORD dwHotKeyID,
        UINT uModifiers,
        UINT uVKey,
        HKL hKL) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSoftKeyboard(
        UINT uType,
        HWND hOwner,
        int x,
        int y,
        HWND *phSoftKbdWnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE DestroySoftKeyboard(
        HWND hSoftKbdWnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShowSoftKeyboard(
        HWND hSoftKbdWnd,
        int nCmdShow) = 0;

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

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

    virtual HRESULT STDMETHODCALLTYPE KeybdEvent(
        LANGID lgidIME,
        BYTE bVk,
        BYTE bScan,
        DWORD dwFlags,
        DWORD dwExtraInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE LockModal(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnlockModal(
        ) = 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;

    virtual HRESULT STDMETHODCALLTYPE RequestMessageA(
        HIMC hIMC,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE RequestMessageW(
        HIMC hIMC,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult) = 0;

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

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

    virtual HRESULT STDMETHODCALLTYPE IsSleeping(
        ) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *GetContext)(
        IActiveIMMIME *This,
        HWND hWnd,
        HIMC *phIMC);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *SetOpenStatus)(
        IActiveIMMIME *This,
        HIMC hIMC,
        WINBOOL fOpen);

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

    HRESULT (STDMETHODCALLTYPE *SimulateHotKey)(
        IActiveIMMIME *This,
        HWND hWnd,
        DWORD dwHotKeyID);

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

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

    HRESULT (STDMETHODCALLTYPE *GenerateMessage)(
        IActiveIMMIME *This,
        HIMC hIMC);

    HRESULT (STDMETHODCALLTYPE *LockIMC)(
        IActiveIMMIME *This,
        HIMC hIMC,
        INPUTCONTEXT **ppIMC);

    HRESULT (STDMETHODCALLTYPE *UnlockIMC)(
        IActiveIMMIME *This,
        HIMC hIMC);

    HRESULT (STDMETHODCALLTYPE *GetIMCLockCount)(
        IActiveIMMIME *This,
        HIMC hIMC,
        DWORD *pdwLockCount);

    HRESULT (STDMETHODCALLTYPE *CreateIMCC)(
        IActiveIMMIME *This,
        DWORD dwSize,
        HIMCC *phIMCC);

    HRESULT (STDMETHODCALLTYPE *DestroyIMCC)(
        IActiveIMMIME *This,
        HIMCC hIMCC);

    HRESULT (STDMETHODCALLTYPE *LockIMCC)(
        IActiveIMMIME *This,
        HIMCC hIMCC,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *UnlockIMCC)(
        IActiveIMMIME *This,
        HIMCC hIMCC);

    HRESULT (STDMETHODCALLTYPE *ReSizeIMCC)(
        IActiveIMMIME *This,
        HIMCC hIMCC,
        DWORD dwSize,
        HIMCC *phIMCC);

    HRESULT (STDMETHODCALLTYPE *GetIMCCSize)(
        IActiveIMMIME *This,
        HIMCC hIMCC,
        DWORD *pdwSize);

    HRESULT (STDMETHODCALLTYPE *GetIMCCLockCount)(
        IActiveIMMIME *This,
        HIMCC hIMCC,
        DWORD *pdwLockCount);

    HRESULT (STDMETHODCALLTYPE *GetHotKey)(
        IActiveIMMIME *This,
        DWORD dwHotKeyID,
        UINT *puModifiers,
        UINT *puVKey,
        HKL *phKL);

    HRESULT (STDMETHODCALLTYPE *SetHotKey)(
        IActiveIMMIME *This,
        DWORD dwHotKeyID,
        UINT uModifiers,
        UINT uVKey,
        HKL hKL);

    HRESULT (STDMETHODCALLTYPE *CreateSoftKeyboard)(
        IActiveIMMIME *This,
        UINT uType,
        HWND hOwner,
        int x,
        int y,
        HWND *phSoftKbdWnd);

    HRESULT (STDMETHODCALLTYPE *DestroySoftKeyboard)(
        IActiveIMMIME *This,
        HWND hSoftKbdWnd);

    HRESULT (STDMETHODCALLTYPE *ShowSoftKeyboard)(
        IActiveIMMIME *This,
        HWND hSoftKbdWnd,
        int nCmdShow);

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

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

    HRESULT (STDMETHODCALLTYPE *KeybdEvent)(
        IActiveIMMIME *This,
        LANGID lgidIME,
        BYTE bVk,
        BYTE bScan,
        DWORD dwFlags,
        DWORD dwExtraInfo);

    HRESULT (STDMETHODCALLTYPE *LockModal)(
        IActiveIMMIME *This);

    HRESULT (STDMETHODCALLTYPE *UnlockModal)(
        IActiveIMMIME *This);

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *RequestMessageA)(
        IActiveIMMIME *This,
        HIMC hIMC,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *RequestMessageW)(
        IActiveIMMIME *This,
        HIMC hIMC,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *SendIMCA)(
        IActiveIMMIME *This,
        HWND hWnd,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *SendIMCW)(
        IActiveIMMIME *This,
        HWND hWnd,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *IsSleeping)(
        IActiveIMMIME *This);

    END_INTERFACE
} IActiveIMMIMEVtbl;

interface IActiveIMMIME {
    CONST_VTBL IActiveIMMIMEVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActiveIMMIME_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActiveIMMIME_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActiveIMMIME_Release(This) (This)->lpVtbl->Release(This)
/*** IActiveIMMIME methods ***/
#define IActiveIMMIME_AssociateContext(This,hWnd,hIME,phPrev) (This)->lpVtbl->AssociateContext(This,hWnd,hIME,phPrev)
#define IActiveIMMIME_ConfigureIMEA(This,hKL,hWnd,dwMode,pData) (This)->lpVtbl->ConfigureIMEA(This,hKL,hWnd,dwMode,pData)
#define IActiveIMMIME_ConfigureIMEW(This,hKL,hWnd,dwMode,pData) (This)->lpVtbl->ConfigureIMEW(This,hKL,hWnd,dwMode,pData)
#define IActiveIMMIME_CreateContext(This,phIMC) (This)->lpVtbl->CreateContext(This,phIMC)
#define IActiveIMMIME_DestroyContext(This,hIME) (This)->lpVtbl->DestroyContext(This,hIME)
#define IActiveIMMIME_EnumRegisterWordA(This,hKL,szReading,dwStyle,szRegister,pData,pEnum) (This)->lpVtbl->EnumRegisterWordA(This,hKL,szReading,dwStyle,szRegister,pData,pEnum)
#define IActiveIMMIME_EnumRegisterWordW(This,hKL,szReading,dwStyle,szRegister,pData,pEnum) (This)->lpVtbl->EnumRegisterWordW(This,hKL,szReading,dwStyle,szRegister,pData,pEnum)
#define IActiveIMMIME_EscapeA(This,hKL,hIMC,uEscape,pData,plResult) (This)->lpVtbl->EscapeA(This,hKL,hIMC,uEscape,pData,plResult)
#define IActiveIMMIME_EscapeW(This,hKL,hIMC,uEscape,pData,plResult) (This)->lpVtbl->EscapeW(This,hKL,hIMC,uEscape,pData,plResult)
#define IActiveIMMIME_GetCandidateListA(This,hIMC,dwIndex,uBufLen,pCandList,puCopied) (This)->lpVtbl->GetCandidateListA(This,hIMC,dwIndex,uBufLen,pCandList,puCopied)
#define IActiveIMMIME_GetCandidateListW(This,hIMC,dwIndex,uBufLen,pCandList,puCopied) (This)->lpVtbl->GetCandidateListW(This,hIMC,dwIndex,uBufLen,pCandList,puCopied)
#define IActiveIMMIME_GetCandidateListCountA(This,hIMC,pdwListSize,pdwBufLen) (This)->lpVtbl->GetCandidateListCountA(This,hIMC,pdwListSize,pdwBufLen)
#define IActiveIMMIME_GetCandidateListCountW(This,hIMC,pdwListSize,pdwBufLen) (This)->lpVtbl->GetCandidateListCountW(This,hIMC,pdwListSize,pdwBufLen)
#define IActiveIMMIME_GetCandidateWindow(This,hIMC,dwIndex,pCandidate) (This)->lpVtbl->GetCandidateWindow(This,hIMC,dwIndex,pCandidate)
#define IActiveIMMIME_GetCompositionFontA(This,hIMC,plf) (This)->lpVtbl->GetCompositionFontA(This,hIMC,plf)
#define IActiveIMMIME_GetCompositionFontW(This,hIMC,plf) (This)->lpVtbl->GetCompositionFontW(This,hIMC,plf)
#define IActiveIMMIME_GetCompositionStringA(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf) (This)->lpVtbl->GetCompositionStringA(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf)
#define IActiveIMMIME_GetCompositionStringW(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf) (This)->lpVtbl->GetCompositionStringW(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf)
#define IActiveIMMIME_GetCompositionWindow(This,hIMC,pCompForm) (This)->lpVtbl->GetCompositionWindow(This,hIMC,pCompForm)
#define IActiveIMMIME_GetContext(This,hWnd,phIMC) (This)->lpVtbl->GetContext(This,hWnd,phIMC)
#define IActiveIMMIME_GetConversionListA(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied) (This)->lpVtbl->GetConversionListA(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied)
#define IActiveIMMIME_GetConversionListW(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied) (This)->lpVtbl->GetConversionListW(This,hKL,hIMC,pSrc,uBufLen,uFlag,pDst,puCopied)
#define IActiveIMMIME_GetConversionStatus(This,hIMC,pfdwConversion,pfdwSentence) (This)->lpVtbl->GetConversionStatus(This,hIMC,pfdwConversion,pfdwSentence)
#define IActiveIMMIME_GetDefaultIMEWnd(This,hWnd,phDefWnd) (This)->lpVtbl->GetDefaultIMEWnd(This,hWnd,phDefWnd)
#define IActiveIMMIME_GetDescriptionA(This,hKL,uBufLen,szDescription,puCopied) (This)->lpVtbl->GetDescriptionA(This,hKL,uBufLen,szDescription,puCopied)
#define IActiveIMMIME_GetDescriptionW(This,hKL,uBufLen,szDescription,puCopied) (This)->lpVtbl->GetDescriptionW(This,hKL,uBufLen,szDescription,puCopied)
#define IActiveIMMIME_GetGuideLineA(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult) (This)->lpVtbl->GetGuideLineA(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult)
#define IActiveIMMIME_GetGuideLineW(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult) (This)->lpVtbl->GetGuideLineW(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult)
#define IActiveIMMIME_GetIMEFileNameA(This,hKL,uBufLen,szFileName,puCopied) (This)->lpVtbl->GetIMEFileNameA(This,hKL,uBufLen,szFileName,puCopied)
#define IActiveIMMIME_GetIMEFileNameW(This,hKL,uBufLen,szFileName,puCopied) (This)->lpVtbl->GetIMEFileNameW(This,hKL,uBufLen,szFileName,puCopied)
#define IActiveIMMIME_GetOpenStatus(This,hIMC) (This)->lpVtbl->GetOpenStatus(This,hIMC)
#define IActiveIMMIME_GetProperty(This,hKL,fdwIndex,pdwProperty) (This)->lpVtbl->GetProperty(This,hKL,fdwIndex,pdwProperty)
#define IActiveIMMIME_GetRegisterWordStyleA(This,hKL,nItem,pStyleBuf,puCopied) (This)->lpVtbl->GetRegisterWordStyleA(This,hKL,nItem,pStyleBuf,puCopied)
#define IActiveIMMIME_GetRegisterWordStyleW(This,hKL,nItem,pStyleBuf,puCopied) (This)->lpVtbl->GetRegisterWordStyleW(This,hKL,nItem,pStyleBuf,puCopied)
#define IActiveIMMIME_GetStatusWindowPos(This,hIMC,pptPos) (This)->lpVtbl->GetStatusWindowPos(This,hIMC,pptPos)
#define IActiveIMMIME_GetVirtualKey(This,hWnd,puVirtualKey) (This)->lpVtbl->GetVirtualKey(This,hWnd,puVirtualKey)
#define IActiveIMMIME_InstallIMEA(This,szIMEFileName,szLayoutText,phKL) (This)->lpVtbl->InstallIMEA(This,szIMEFileName,szLayoutText,phKL)
#define IActiveIMMIME_InstallIMEW(This,szIMEFileName,szLayoutText,phKL) (This)->lpVtbl->InstallIMEW(This,szIMEFileName,szLayoutText,phKL)
#define IActiveIMMIME_IsIME(This,hKL) (This)->lpVtbl->IsIME(This,hKL)
#define IActiveIMMIME_IsUIMessageA(This,hWndIME,msg,wParam,lParam) (This)->lpVtbl->IsUIMessageA(This,hWndIME,msg,wParam,lParam)
#define IActiveIMMIME_IsUIMessageW(This,hWndIME,msg,wParam,lParam) (This)->lpVtbl->IsUIMessageW(This,hWndIME,msg,wParam,lParam)
#define IActiveIMMIME_NotifyIME(This,hIMC,dwAction,dwIndex,dwValue) (This)->lpVtbl->NotifyIME(This,hIMC,dwAction,dwIndex,dwValue)
#define IActiveIMMIME_RegisterWordA(This,hKL,szReading,dwStyle,szRegister) (This)->lpVtbl->RegisterWordA(This,hKL,szReading,dwStyle,szRegister)
#define IActiveIMMIME_RegisterWordW(This,hKL,szReading,dwStyle,szRegister) (This)->lpVtbl->RegisterWordW(This,hKL,szReading,dwStyle,szRegister)
#define IActiveIMMIME_ReleaseContext(This,hWnd,hIMC) (This)->lpVtbl->ReleaseContext(This,hWnd,hIMC)
#define IActiveIMMIME_SetCandidateWindow(This,hIMC,pCandidate) (This)->lpVtbl->SetCandidateWindow(This,hIMC,pCandidate)
#define IActiveIMMIME_SetCompositionFontA(This,hIMC,plf) (This)->lpVtbl->SetCompositionFontA(This,hIMC,plf)
#define IActiveIMMIME_SetCompositionFontW(This,hIMC,plf) (This)->lpVtbl->SetCompositionFontW(This,hIMC,plf)
#define IActiveIMMIME_SetCompositionStringA(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen) (This)->lpVtbl->SetCompositionStringA(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen)
#define IActiveIMMIME_SetCompositionStringW(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen) (This)->lpVtbl->SetCompositionStringW(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen)
#define IActiveIMMIME_SetCompositionWindow(This,hIMC,pCompForm) (This)->lpVtbl->SetCompositionWindow(This,hIMC,pCompForm)
#define IActiveIMMIME_SetConversionStatus(This,hIMC,fdwConversion,fdwSentence) (This)->lpVtbl->SetConversionStatus(This,hIMC,fdwConversion,fdwSentence)
#define IActiveIMMIME_SetOpenStatus(This,hIMC,fOpen) (This)->lpVtbl->SetOpenStatus(This,hIMC,fOpen)
#define IActiveIMMIME_SetStatusWindowPos(This,hIMC,pptPos) (This)->lpVtbl->SetStatusWindowPos(This,hIMC,pptPos)
#define IActiveIMMIME_SimulateHotKey(This,hWnd,dwHotKeyID) (This)->lpVtbl->SimulateHotKey(This,hWnd,dwHotKeyID)
#define IActiveIMMIME_UnregisterWordA(This,hKL,szReading,dwStyle,szUnregister) (This)->lpVtbl->UnregisterWordA(This,hKL,szReading,dwStyle,szUnregister)
#define IActiveIMMIME_UnregisterWordW(This,hKL,szReading,dwStyle,szUnregister) (This)->lpVtbl->UnregisterWordW(This,hKL,szReading,dwStyle,szUnregister)
#define IActiveIMMIME_GenerateMessage(This,hIMC) (This)->lpVtbl->GenerateMessage(This,hIMC)
#define IActiveIMMIME_LockIMC(This,hIMC,ppIMC) (This)->lpVtbl->LockIMC(This,hIMC,ppIMC)
#define IActiveIMMIME_UnlockIMC(This,hIMC) (This)->lpVtbl->UnlockIMC(This,hIMC)
#define IActiveIMMIME_GetIMCLockCount(This,hIMC,pdwLockCount) (This)->lpVtbl->GetIMCLockCount(This,hIMC,pdwLockCount)
#define IActiveIMMIME_CreateIMCC(This,dwSize,phIMCC) (This)->lpVtbl->CreateIMCC(This,dwSize,phIMCC)
#define IActiveIMMIME_DestroyIMCC(This,hIMCC) (This)->lpVtbl->DestroyIMCC(This,hIMCC)
#define IActiveIMMIME_LockIMCC(This,hIMCC,ppv) (This)->lpVtbl->LockIMCC(This,hIMCC,ppv)
#define IActiveIMMIME_UnlockIMCC(This,hIMCC) (This)->lpVtbl->UnlockIMCC(This,hIMCC)
#define IActiveIMMIME_ReSizeIMCC(This,hIMCC,dwSize,phIMCC) (This)->lpVtbl->ReSizeIMCC(This,hIMCC,dwSize,phIMCC)
#define IActiveIMMIME_GetIMCCSize(This,hIMCC,pdwSize) (This)->lpVtbl->GetIMCCSize(This,hIMCC,pdwSize)
#define IActiveIMMIME_GetIMCCLockCount(This,hIMCC,pdwLockCount) (This)->lpVtbl->GetIMCCLockCount(This,hIMCC,pdwLockCount)
#define IActiveIMMIME_GetHotKey(This,dwHotKeyID,puModifiers,puVKey,phKL) (This)->lpVtbl->GetHotKey(This,dwHotKeyID,puModifiers,puVKey,phKL)
#define IActiveIMMIME_SetHotKey(This,dwHotKeyID,uModifiers,uVKey,hKL) (This)->lpVtbl->SetHotKey(This,dwHotKeyID,uModifiers,uVKey,hKL)
#define IActiveIMMIME_CreateSoftKeyboard(This,uType,hOwner,x,y,phSoftKbdWnd) (This)->lpVtbl->CreateSoftKeyboard(This,uType,hOwner,x,y,phSoftKbdWnd)
#define IActiveIMMIME_DestroySoftKeyboard(This,hSoftKbdWnd) (This)->lpVtbl->DestroySoftKeyboard(This,hSoftKbdWnd)
#define IActiveIMMIME_ShowSoftKeyboard(This,hSoftKbdWnd,nCmdShow) (This)->lpVtbl->ShowSoftKeyboard(This,hSoftKbdWnd,nCmdShow)
#define IActiveIMMIME_GetCodePageA(This,hKL,uCodePage) (This)->lpVtbl->GetCodePageA(This,hKL,uCodePage)
#define IActiveIMMIME_GetLangId(This,hKL,plid) (This)->lpVtbl->GetLangId(This,hKL,plid)
#define IActiveIMMIME_KeybdEvent(This,lgidIME,bVk,bScan,dwFlags,dwExtraInfo) (This)->lpVtbl->KeybdEvent(This,lgidIME,bVk,bScan,dwFlags,dwExtraInfo)
#define IActiveIMMIME_LockModal(This) (This)->lpVtbl->LockModal(This)
#define IActiveIMMIME_UnlockModal(This) (This)->lpVtbl->UnlockModal(This)
#define IActiveIMMIME_AssociateContextEx(This,hWnd,hIMC,dwFlags) (This)->lpVtbl->AssociateContextEx(This,hWnd,hIMC,dwFlags)
#define IActiveIMMIME_DisableIME(This,idThread) (This)->lpVtbl->DisableIME(This,idThread)
#define IActiveIMMIME_GetImeMenuItemsA(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult) (This)->lpVtbl->GetImeMenuItemsA(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult)
#define IActiveIMMIME_GetImeMenuItemsW(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult) (This)->lpVtbl->GetImeMenuItemsW(This,hIMC,dwFlags,dwType,pImeParentMenu,pImeMenu,dwSize,pdwResult)
#define IActiveIMMIME_EnumInputContext(This,idThread,ppEnum) (This)->lpVtbl->EnumInputContext(This,idThread,ppEnum)
#define IActiveIMMIME_RequestMessageA(This,hIMC,wParam,lParam,plResult) (This)->lpVtbl->RequestMessageA(This,hIMC,wParam,lParam,plResult)
#define IActiveIMMIME_RequestMessageW(This,hIMC,wParam,lParam,plResult) (This)->lpVtbl->RequestMessageW(This,hIMC,wParam,lParam,plResult)
#define IActiveIMMIME_SendIMCA(This,hWnd,uMsg,wParam,lParam,plResult) (This)->lpVtbl->SendIMCA(This,hWnd,uMsg,wParam,lParam,plResult)
#define IActiveIMMIME_SendIMCW(This,hWnd,uMsg,wParam,lParam,plResult) (This)->lpVtbl->SendIMCW(This,hWnd,uMsg,wParam,lParam,plResult)
#define IActiveIMMIME_IsSleeping(This) (This)->lpVtbl->IsSleeping(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IActiveIMMIME_QueryInterface(IActiveIMMIME* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IActiveIMMIME_AddRef(IActiveIMMIME* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IActiveIMMIME_Release(IActiveIMMIME* This) {
    return This->lpVtbl->Release(This);
}
/*** IActiveIMMIME methods ***/
static FORCEINLINE HRESULT IActiveIMMIME_AssociateContext(IActiveIMMIME* This,HWND hWnd,HIMC hIME,HIMC *phPrev) {
    return This->lpVtbl->AssociateContext(This,hWnd,hIME,phPrev);
}
static FORCEINLINE HRESULT IActiveIMMIME_ConfigureIMEA(IActiveIMMIME* This,HKL hKL,HWND hWnd,DWORD dwMode,REGISTERWORDA *pData) {
    return This->lpVtbl->ConfigureIMEA(This,hKL,hWnd,dwMode,pData);
}
static FORCEINLINE HRESULT IActiveIMMIME_ConfigureIMEW(IActiveIMMIME* This,HKL hKL,HWND hWnd,DWORD dwMode,REGISTERWORDW *pData) {
    return This->lpVtbl->ConfigureIMEW(This,hKL,hWnd,dwMode,pData);
}
static FORCEINLINE HRESULT IActiveIMMIME_CreateContext(IActiveIMMIME* This,HIMC *phIMC) {
    return This->lpVtbl->CreateContext(This,phIMC);
}
static FORCEINLINE HRESULT IActiveIMMIME_DestroyContext(IActiveIMMIME* This,HIMC hIME) {
    return This->lpVtbl->DestroyContext(This,hIME);
}
static FORCEINLINE HRESULT IActiveIMMIME_EnumRegisterWordA(IActiveIMMIME* 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 IActiveIMMIME_EnumRegisterWordW(IActiveIMMIME* 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 IActiveIMMIME_EscapeA(IActiveIMMIME* This,HKL hKL,HIMC hIMC,UINT uEscape,LPVOID pData,LRESULT *plResult) {
    return This->lpVtbl->EscapeA(This,hKL,hIMC,uEscape,pData,plResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_EscapeW(IActiveIMMIME* This,HKL hKL,HIMC hIMC,UINT uEscape,LPVOID pData,LRESULT *plResult) {
    return This->lpVtbl->EscapeW(This,hKL,hIMC,uEscape,pData,plResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCandidateListA(IActiveIMMIME* This,HIMC hIMC,DWORD dwIndex,UINT uBufLen,CANDIDATELIST *pCandList,UINT *puCopied) {
    return This->lpVtbl->GetCandidateListA(This,hIMC,dwIndex,uBufLen,pCandList,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCandidateListW(IActiveIMMIME* This,HIMC hIMC,DWORD dwIndex,UINT uBufLen,CANDIDATELIST *pCandList,UINT *puCopied) {
    return This->lpVtbl->GetCandidateListW(This,hIMC,dwIndex,uBufLen,pCandList,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCandidateListCountA(IActiveIMMIME* This,HIMC hIMC,DWORD *pdwListSize,DWORD *pdwBufLen) {
    return This->lpVtbl->GetCandidateListCountA(This,hIMC,pdwListSize,pdwBufLen);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCandidateListCountW(IActiveIMMIME* This,HIMC hIMC,DWORD *pdwListSize,DWORD *pdwBufLen) {
    return This->lpVtbl->GetCandidateListCountW(This,hIMC,pdwListSize,pdwBufLen);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCandidateWindow(IActiveIMMIME* This,HIMC hIMC,DWORD dwIndex,CANDIDATEFORM *pCandidate) {
    return This->lpVtbl->GetCandidateWindow(This,hIMC,dwIndex,pCandidate);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCompositionFontA(IActiveIMMIME* This,HIMC hIMC,LOGFONTA *plf) {
    return This->lpVtbl->GetCompositionFontA(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCompositionFontW(IActiveIMMIME* This,HIMC hIMC,LOGFONTW *plf) {
    return This->lpVtbl->GetCompositionFontW(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCompositionStringA(IActiveIMMIME* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LONG *plCopied,LPVOID pBuf) {
    return This->lpVtbl->GetCompositionStringA(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCompositionStringW(IActiveIMMIME* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LONG *plCopied,LPVOID pBuf) {
    return This->lpVtbl->GetCompositionStringW(This,hIMC,dwIndex,dwBufLen,plCopied,pBuf);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCompositionWindow(IActiveIMMIME* This,HIMC hIMC,COMPOSITIONFORM *pCompForm) {
    return This->lpVtbl->GetCompositionWindow(This,hIMC,pCompForm);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetContext(IActiveIMMIME* This,HWND hWnd,HIMC *phIMC) {
    return This->lpVtbl->GetContext(This,hWnd,phIMC);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetConversionListA(IActiveIMMIME* 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 IActiveIMMIME_GetConversionListW(IActiveIMMIME* 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 IActiveIMMIME_GetConversionStatus(IActiveIMMIME* This,HIMC hIMC,DWORD *pfdwConversion,DWORD *pfdwSentence) {
    return This->lpVtbl->GetConversionStatus(This,hIMC,pfdwConversion,pfdwSentence);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetDefaultIMEWnd(IActiveIMMIME* This,HWND hWnd,HWND *phDefWnd) {
    return This->lpVtbl->GetDefaultIMEWnd(This,hWnd,phDefWnd);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetDescriptionA(IActiveIMMIME* This,HKL hKL,UINT uBufLen,LPSTR szDescription,UINT *puCopied) {
    return This->lpVtbl->GetDescriptionA(This,hKL,uBufLen,szDescription,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetDescriptionW(IActiveIMMIME* This,HKL hKL,UINT uBufLen,LPWSTR szDescription,UINT *puCopied) {
    return This->lpVtbl->GetDescriptionW(This,hKL,uBufLen,szDescription,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetGuideLineA(IActiveIMMIME* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LPSTR pBuf,DWORD *pdwResult) {
    return This->lpVtbl->GetGuideLineA(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetGuideLineW(IActiveIMMIME* This,HIMC hIMC,DWORD dwIndex,DWORD dwBufLen,LPWSTR pBuf,DWORD *pdwResult) {
    return This->lpVtbl->GetGuideLineW(This,hIMC,dwIndex,dwBufLen,pBuf,pdwResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetIMEFileNameA(IActiveIMMIME* This,HKL hKL,UINT uBufLen,LPSTR szFileName,UINT *puCopied) {
    return This->lpVtbl->GetIMEFileNameA(This,hKL,uBufLen,szFileName,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetIMEFileNameW(IActiveIMMIME* This,HKL hKL,UINT uBufLen,LPWSTR szFileName,UINT *puCopied) {
    return This->lpVtbl->GetIMEFileNameW(This,hKL,uBufLen,szFileName,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetOpenStatus(IActiveIMMIME* This,HIMC hIMC) {
    return This->lpVtbl->GetOpenStatus(This,hIMC);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetProperty(IActiveIMMIME* This,HKL hKL,DWORD fdwIndex,DWORD *pdwProperty) {
    return This->lpVtbl->GetProperty(This,hKL,fdwIndex,pdwProperty);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetRegisterWordStyleA(IActiveIMMIME* This,HKL hKL,UINT nItem,STYLEBUFA *pStyleBuf,UINT *puCopied) {
    return This->lpVtbl->GetRegisterWordStyleA(This,hKL,nItem,pStyleBuf,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetRegisterWordStyleW(IActiveIMMIME* This,HKL hKL,UINT nItem,STYLEBUFW *pStyleBuf,UINT *puCopied) {
    return This->lpVtbl->GetRegisterWordStyleW(This,hKL,nItem,pStyleBuf,puCopied);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetStatusWindowPos(IActiveIMMIME* This,HIMC hIMC,POINT *pptPos) {
    return This->lpVtbl->GetStatusWindowPos(This,hIMC,pptPos);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetVirtualKey(IActiveIMMIME* This,HWND hWnd,UINT *puVirtualKey) {
    return This->lpVtbl->GetVirtualKey(This,hWnd,puVirtualKey);
}
static FORCEINLINE HRESULT IActiveIMMIME_InstallIMEA(IActiveIMMIME* This,LPSTR szIMEFileName,LPSTR szLayoutText,HKL *phKL) {
    return This->lpVtbl->InstallIMEA(This,szIMEFileName,szLayoutText,phKL);
}
static FORCEINLINE HRESULT IActiveIMMIME_InstallIMEW(IActiveIMMIME* This,LPWSTR szIMEFileName,LPWSTR szLayoutText,HKL *phKL) {
    return This->lpVtbl->InstallIMEW(This,szIMEFileName,szLayoutText,phKL);
}
static FORCEINLINE HRESULT IActiveIMMIME_IsIME(IActiveIMMIME* This,HKL hKL) {
    return This->lpVtbl->IsIME(This,hKL);
}
static FORCEINLINE HRESULT IActiveIMMIME_IsUIMessageA(IActiveIMMIME* This,HWND hWndIME,UINT msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->IsUIMessageA(This,hWndIME,msg,wParam,lParam);
}
static FORCEINLINE HRESULT IActiveIMMIME_IsUIMessageW(IActiveIMMIME* This,HWND hWndIME,UINT msg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->IsUIMessageW(This,hWndIME,msg,wParam,lParam);
}
static FORCEINLINE HRESULT IActiveIMMIME_NotifyIME(IActiveIMMIME* This,HIMC hIMC,DWORD dwAction,DWORD dwIndex,DWORD dwValue) {
    return This->lpVtbl->NotifyIME(This,hIMC,dwAction,dwIndex,dwValue);
}
static FORCEINLINE HRESULT IActiveIMMIME_RegisterWordA(IActiveIMMIME* This,HKL hKL,LPSTR szReading,DWORD dwStyle,LPSTR szRegister) {
    return This->lpVtbl->RegisterWordA(This,hKL,szReading,dwStyle,szRegister);
}
static FORCEINLINE HRESULT IActiveIMMIME_RegisterWordW(IActiveIMMIME* This,HKL hKL,LPWSTR szReading,DWORD dwStyle,LPWSTR szRegister) {
    return This->lpVtbl->RegisterWordW(This,hKL,szReading,dwStyle,szRegister);
}
static FORCEINLINE HRESULT IActiveIMMIME_ReleaseContext(IActiveIMMIME* This,HWND hWnd,HIMC hIMC) {
    return This->lpVtbl->ReleaseContext(This,hWnd,hIMC);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetCandidateWindow(IActiveIMMIME* This,HIMC hIMC,CANDIDATEFORM *pCandidate) {
    return This->lpVtbl->SetCandidateWindow(This,hIMC,pCandidate);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetCompositionFontA(IActiveIMMIME* This,HIMC hIMC,LOGFONTA *plf) {
    return This->lpVtbl->SetCompositionFontA(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetCompositionFontW(IActiveIMMIME* This,HIMC hIMC,LOGFONTW *plf) {
    return This->lpVtbl->SetCompositionFontW(This,hIMC,plf);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetCompositionStringA(IActiveIMMIME* 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 IActiveIMMIME_SetCompositionStringW(IActiveIMMIME* 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 IActiveIMMIME_SetCompositionWindow(IActiveIMMIME* This,HIMC hIMC,COMPOSITIONFORM *pCompForm) {
    return This->lpVtbl->SetCompositionWindow(This,hIMC,pCompForm);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetConversionStatus(IActiveIMMIME* This,HIMC hIMC,DWORD fdwConversion,DWORD fdwSentence) {
    return This->lpVtbl->SetConversionStatus(This,hIMC,fdwConversion,fdwSentence);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetOpenStatus(IActiveIMMIME* This,HIMC hIMC,WINBOOL fOpen) {
    return This->lpVtbl->SetOpenStatus(This,hIMC,fOpen);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetStatusWindowPos(IActiveIMMIME* This,HIMC hIMC,POINT *pptPos) {
    return This->lpVtbl->SetStatusWindowPos(This,hIMC,pptPos);
}
static FORCEINLINE HRESULT IActiveIMMIME_SimulateHotKey(IActiveIMMIME* This,HWND hWnd,DWORD dwHotKeyID) {
    return This->lpVtbl->SimulateHotKey(This,hWnd,dwHotKeyID);
}
static FORCEINLINE HRESULT IActiveIMMIME_UnregisterWordA(IActiveIMMIME* This,HKL hKL,LPSTR szReading,DWORD dwStyle,LPSTR szUnregister) {
    return This->lpVtbl->UnregisterWordA(This,hKL,szReading,dwStyle,szUnregister);
}
static FORCEINLINE HRESULT IActiveIMMIME_UnregisterWordW(IActiveIMMIME* This,HKL hKL,LPWSTR szReading,DWORD dwStyle,LPWSTR szUnregister) {
    return This->lpVtbl->UnregisterWordW(This,hKL,szReading,dwStyle,szUnregister);
}
static FORCEINLINE HRESULT IActiveIMMIME_GenerateMessage(IActiveIMMIME* This,HIMC hIMC) {
    return This->lpVtbl->GenerateMessage(This,hIMC);
}
static FORCEINLINE HRESULT IActiveIMMIME_LockIMC(IActiveIMMIME* This,HIMC hIMC,INPUTCONTEXT **ppIMC) {
    return This->lpVtbl->LockIMC(This,hIMC,ppIMC);
}
static FORCEINLINE HRESULT IActiveIMMIME_UnlockIMC(IActiveIMMIME* This,HIMC hIMC) {
    return This->lpVtbl->UnlockIMC(This,hIMC);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetIMCLockCount(IActiveIMMIME* This,HIMC hIMC,DWORD *pdwLockCount) {
    return This->lpVtbl->GetIMCLockCount(This,hIMC,pdwLockCount);
}
static FORCEINLINE HRESULT IActiveIMMIME_CreateIMCC(IActiveIMMIME* This,DWORD dwSize,HIMCC *phIMCC) {
    return This->lpVtbl->CreateIMCC(This,dwSize,phIMCC);
}
static FORCEINLINE HRESULT IActiveIMMIME_DestroyIMCC(IActiveIMMIME* This,HIMCC hIMCC) {
    return This->lpVtbl->DestroyIMCC(This,hIMCC);
}
static FORCEINLINE HRESULT IActiveIMMIME_LockIMCC(IActiveIMMIME* This,HIMCC hIMCC,void **ppv) {
    return This->lpVtbl->LockIMCC(This,hIMCC,ppv);
}
static FORCEINLINE HRESULT IActiveIMMIME_UnlockIMCC(IActiveIMMIME* This,HIMCC hIMCC) {
    return This->lpVtbl->UnlockIMCC(This,hIMCC);
}
static FORCEINLINE HRESULT IActiveIMMIME_ReSizeIMCC(IActiveIMMIME* This,HIMCC hIMCC,DWORD dwSize,HIMCC *phIMCC) {
    return This->lpVtbl->ReSizeIMCC(This,hIMCC,dwSize,phIMCC);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetIMCCSize(IActiveIMMIME* This,HIMCC hIMCC,DWORD *pdwSize) {
    return This->lpVtbl->GetIMCCSize(This,hIMCC,pdwSize);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetIMCCLockCount(IActiveIMMIME* This,HIMCC hIMCC,DWORD *pdwLockCount) {
    return This->lpVtbl->GetIMCCLockCount(This,hIMCC,pdwLockCount);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetHotKey(IActiveIMMIME* This,DWORD dwHotKeyID,UINT *puModifiers,UINT *puVKey,HKL *phKL) {
    return This->lpVtbl->GetHotKey(This,dwHotKeyID,puModifiers,puVKey,phKL);
}
static FORCEINLINE HRESULT IActiveIMMIME_SetHotKey(IActiveIMMIME* This,DWORD dwHotKeyID,UINT uModifiers,UINT uVKey,HKL hKL) {
    return This->lpVtbl->SetHotKey(This,dwHotKeyID,uModifiers,uVKey,hKL);
}
static FORCEINLINE HRESULT IActiveIMMIME_CreateSoftKeyboard(IActiveIMMIME* This,UINT uType,HWND hOwner,int x,int y,HWND *phSoftKbdWnd) {
    return This->lpVtbl->CreateSoftKeyboard(This,uType,hOwner,x,y,phSoftKbdWnd);
}
static FORCEINLINE HRESULT IActiveIMMIME_DestroySoftKeyboard(IActiveIMMIME* This,HWND hSoftKbdWnd) {
    return This->lpVtbl->DestroySoftKeyboard(This,hSoftKbdWnd);
}
static FORCEINLINE HRESULT IActiveIMMIME_ShowSoftKeyboard(IActiveIMMIME* This,HWND hSoftKbdWnd,int nCmdShow) {
    return This->lpVtbl->ShowSoftKeyboard(This,hSoftKbdWnd,nCmdShow);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetCodePageA(IActiveIMMIME* This,HKL hKL,UINT *uCodePage) {
    return This->lpVtbl->GetCodePageA(This,hKL,uCodePage);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetLangId(IActiveIMMIME* This,HKL hKL,LANGID *plid) {
    return This->lpVtbl->GetLangId(This,hKL,plid);
}
static FORCEINLINE HRESULT IActiveIMMIME_KeybdEvent(IActiveIMMIME* This,LANGID lgidIME,BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtraInfo) {
    return This->lpVtbl->KeybdEvent(This,lgidIME,bVk,bScan,dwFlags,dwExtraInfo);
}
static FORCEINLINE HRESULT IActiveIMMIME_LockModal(IActiveIMMIME* This) {
    return This->lpVtbl->LockModal(This);
}
static FORCEINLINE HRESULT IActiveIMMIME_UnlockModal(IActiveIMMIME* This) {
    return This->lpVtbl->UnlockModal(This);
}
static FORCEINLINE HRESULT IActiveIMMIME_AssociateContextEx(IActiveIMMIME* This,HWND hWnd,HIMC hIMC,DWORD dwFlags) {
    return This->lpVtbl->AssociateContextEx(This,hWnd,hIMC,dwFlags);
}
static FORCEINLINE HRESULT IActiveIMMIME_DisableIME(IActiveIMMIME* This,DWORD idThread) {
    return This->lpVtbl->DisableIME(This,idThread);
}
static FORCEINLINE HRESULT IActiveIMMIME_GetImeMenuItemsA(IActiveIMMIME* 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 IActiveIMMIME_GetImeMenuItemsW(IActiveIMMIME* 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 IActiveIMMIME_EnumInputContext(IActiveIMMIME* This,DWORD idThread,IEnumInputContext **ppEnum) {
    return This->lpVtbl->EnumInputContext(This,idThread,ppEnum);
}
static FORCEINLINE HRESULT IActiveIMMIME_RequestMessageA(IActiveIMMIME* This,HIMC hIMC,WPARAM wParam,LPARAM lParam,LRESULT *plResult) {
    return This->lpVtbl->RequestMessageA(This,hIMC,wParam,lParam,plResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_RequestMessageW(IActiveIMMIME* This,HIMC hIMC,WPARAM wParam,LPARAM lParam,LRESULT *plResult) {
    return This->lpVtbl->RequestMessageW(This,hIMC,wParam,lParam,plResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_SendIMCA(IActiveIMMIME* This,HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *plResult) {
    return This->lpVtbl->SendIMCA(This,hWnd,uMsg,wParam,lParam,plResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_SendIMCW(IActiveIMMIME* This,HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *plResult) {
    return This->lpVtbl->SendIMCW(This,hWnd,uMsg,wParam,lParam,plResult);
}
static FORCEINLINE HRESULT IActiveIMMIME_IsSleeping(IActiveIMMIME* This) {
    return This->lpVtbl->IsSleeping(This);
}
#endif
#endif

#endif


#endif  /* __IActiveIMMIME_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IActiveIME interface
 */
#ifndef __IActiveIME_INTERFACE_DEFINED__
#define __IActiveIME_INTERFACE_DEFINED__

DEFINE_GUID(IID_IActiveIME, 0x6fe20962, 0xd077, 0x11d0, 0x8f,0xe7, 0x00,0xaa,0x00,0x6b,0xcc,0x59);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6fe20962-d077-11d0-8fe7-00aa006bcc59")
IActiveIME : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Inquire(
        DWORD dwSystemInfoFlags,
        IMEINFO *pIMEInfo,
        LPWSTR szWndClass,
        DWORD *pdwPrivate) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConversionList(
        HIMC hIMC,
        LPWSTR szSource,
        UINT uFlag,
        UINT uBufLen,
        CANDIDATELIST *pDest,
        UINT *puCopied) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE Destroy(
        UINT uReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE Escape(
        HIMC hIMC,
        UINT uEscape,
        void *pData,
        LRESULT *plResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetActiveContext(
        HIMC hIMC,
        WINBOOL fFlag) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProcessKey(
        HIMC hIMC,
        UINT uVirKey,
        DWORD lParam,
        BYTE *pbKeyState) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE Select(
        HIMC hIMC,
        WINBOOL fSelect) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositionString(
        HIMC hIMC,
        DWORD dwIndex,
        void *pComp,
        DWORD dwCompLen,
        void *pRead,
        DWORD dwReadLen) = 0;

    virtual HRESULT STDMETHODCALLTYPE ToAsciiEx(
        UINT uVirKey,
        UINT uScanCode,
        BYTE *pbKeyState,
        UINT fuState,
        HIMC hIMC,
        DWORD *pdwTransBuf,
        UINT *puSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterWord(
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szString) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterWord(
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szString) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRegisterWordStyle(
        UINT nItem,
        STYLEBUFW *pStyleBuf,
        UINT *puBufSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumRegisterWord(
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szRegister,
        LPVOID pData,
        IEnumRegisterWordW **ppEnum) = 0;

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

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IActiveIME, 0x6fe20962, 0xd077, 0x11d0, 0x8f,0xe7, 0x00,0xaa,0x00,0x6b,0xcc,0x59)
#endif
#else
typedef struct IActiveIMEVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IActiveIME methods ***/
    HRESULT (STDMETHODCALLTYPE *Inquire)(
        IActiveIME *This,
        DWORD dwSystemInfoFlags,
        IMEINFO *pIMEInfo,
        LPWSTR szWndClass,
        DWORD *pdwPrivate);

    HRESULT (STDMETHODCALLTYPE *ConversionList)(
        IActiveIME *This,
        HIMC hIMC,
        LPWSTR szSource,
        UINT uFlag,
        UINT uBufLen,
        CANDIDATELIST *pDest,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *Configure)(
        IActiveIME *This,
        HKL hKL,
        HWND hWnd,
        DWORD dwMode,
        REGISTERWORDW *pRegisterWord);

    HRESULT (STDMETHODCALLTYPE *Destroy)(
        IActiveIME *This,
        UINT uReserved);

    HRESULT (STDMETHODCALLTYPE *Escape)(
        IActiveIME *This,
        HIMC hIMC,
        UINT uEscape,
        void *pData,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *SetActiveContext)(
        IActiveIME *This,
        HIMC hIMC,
        WINBOOL fFlag);

    HRESULT (STDMETHODCALLTYPE *ProcessKey)(
        IActiveIME *This,
        HIMC hIMC,
        UINT uVirKey,
        DWORD lParam,
        BYTE *pbKeyState);

    HRESULT (STDMETHODCALLTYPE *Notify)(
        IActiveIME *This,
        HIMC hIMC,
        DWORD dwAction,
        DWORD dwIndex,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *Select)(
        IActiveIME *This,
        HIMC hIMC,
        WINBOOL fSelect);

    HRESULT (STDMETHODCALLTYPE *SetCompositionString)(
        IActiveIME *This,
        HIMC hIMC,
        DWORD dwIndex,
        void *pComp,
        DWORD dwCompLen,
        void *pRead,
        DWORD dwReadLen);

    HRESULT (STDMETHODCALLTYPE *ToAsciiEx)(
        IActiveIME *This,
        UINT uVirKey,
        UINT uScanCode,
        BYTE *pbKeyState,
        UINT fuState,
        HIMC hIMC,
        DWORD *pdwTransBuf,
        UINT *puSize);

    HRESULT (STDMETHODCALLTYPE *RegisterWord)(
        IActiveIME *This,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szString);

    HRESULT (STDMETHODCALLTYPE *UnregisterWord)(
        IActiveIME *This,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szString);

    HRESULT (STDMETHODCALLTYPE *GetRegisterWordStyle)(
        IActiveIME *This,
        UINT nItem,
        STYLEBUFW *pStyleBuf,
        UINT *puBufSize);

    HRESULT (STDMETHODCALLTYPE *EnumRegisterWord)(
        IActiveIME *This,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szRegister,
        LPVOID pData,
        IEnumRegisterWordW **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCodePageA)(
        IActiveIME *This,
        UINT *uCodePage);

    HRESULT (STDMETHODCALLTYPE *GetLangId)(
        IActiveIME *This,
        LANGID *plid);

    END_INTERFACE
} IActiveIMEVtbl;

interface IActiveIME {
    CONST_VTBL IActiveIMEVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActiveIME_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActiveIME_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActiveIME_Release(This) (This)->lpVtbl->Release(This)
/*** IActiveIME methods ***/
#define IActiveIME_Inquire(This,dwSystemInfoFlags,pIMEInfo,szWndClass,pdwPrivate) (This)->lpVtbl->Inquire(This,dwSystemInfoFlags,pIMEInfo,szWndClass,pdwPrivate)
#define IActiveIME_ConversionList(This,hIMC,szSource,uFlag,uBufLen,pDest,puCopied) (This)->lpVtbl->ConversionList(This,hIMC,szSource,uFlag,uBufLen,pDest,puCopied)
#define IActiveIME_Configure(This,hKL,hWnd,dwMode,pRegisterWord) (This)->lpVtbl->Configure(This,hKL,hWnd,dwMode,pRegisterWord)
#define IActiveIME_Destroy(This,uReserved) (This)->lpVtbl->Destroy(This,uReserved)
#define IActiveIME_Escape(This,hIMC,uEscape,pData,plResult) (This)->lpVtbl->Escape(This,hIMC,uEscape,pData,plResult)
#define IActiveIME_SetActiveContext(This,hIMC,fFlag) (This)->lpVtbl->SetActiveContext(This,hIMC,fFlag)
#define IActiveIME_ProcessKey(This,hIMC,uVirKey,lParam,pbKeyState) (This)->lpVtbl->ProcessKey(This,hIMC,uVirKey,lParam,pbKeyState)
#define IActiveIME_Notify(This,hIMC,dwAction,dwIndex,dwValue) (This)->lpVtbl->Notify(This,hIMC,dwAction,dwIndex,dwValue)
#define IActiveIME_Select(This,hIMC,fSelect) (This)->lpVtbl->Select(This,hIMC,fSelect)
#define IActiveIME_SetCompositionString(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen) (This)->lpVtbl->SetCompositionString(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen)
#define IActiveIME_ToAsciiEx(This,uVirKey,uScanCode,pbKeyState,fuState,hIMC,pdwTransBuf,puSize) (This)->lpVtbl->ToAsciiEx(This,uVirKey,uScanCode,pbKeyState,fuState,hIMC,pdwTransBuf,puSize)
#define IActiveIME_RegisterWord(This,szReading,dwStyle,szString) (This)->lpVtbl->RegisterWord(This,szReading,dwStyle,szString)
#define IActiveIME_UnregisterWord(This,szReading,dwStyle,szString) (This)->lpVtbl->UnregisterWord(This,szReading,dwStyle,szString)
#define IActiveIME_GetRegisterWordStyle(This,nItem,pStyleBuf,puBufSize) (This)->lpVtbl->GetRegisterWordStyle(This,nItem,pStyleBuf,puBufSize)
#define IActiveIME_EnumRegisterWord(This,szReading,dwStyle,szRegister,pData,ppEnum) (This)->lpVtbl->EnumRegisterWord(This,szReading,dwStyle,szRegister,pData,ppEnum)
#define IActiveIME_GetCodePageA(This,uCodePage) (This)->lpVtbl->GetCodePageA(This,uCodePage)
#define IActiveIME_GetLangId(This,plid) (This)->lpVtbl->GetLangId(This,plid)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IActiveIME_QueryInterface(IActiveIME* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IActiveIME_AddRef(IActiveIME* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IActiveIME_Release(IActiveIME* This) {
    return This->lpVtbl->Release(This);
}
/*** IActiveIME methods ***/
static FORCEINLINE HRESULT IActiveIME_Inquire(IActiveIME* This,DWORD dwSystemInfoFlags,IMEINFO *pIMEInfo,LPWSTR szWndClass,DWORD *pdwPrivate) {
    return This->lpVtbl->Inquire(This,dwSystemInfoFlags,pIMEInfo,szWndClass,pdwPrivate);
}
static FORCEINLINE HRESULT IActiveIME_ConversionList(IActiveIME* This,HIMC hIMC,LPWSTR szSource,UINT uFlag,UINT uBufLen,CANDIDATELIST *pDest,UINT *puCopied) {
    return This->lpVtbl->ConversionList(This,hIMC,szSource,uFlag,uBufLen,pDest,puCopied);
}
static FORCEINLINE HRESULT IActiveIME_Configure(IActiveIME* This,HKL hKL,HWND hWnd,DWORD dwMode,REGISTERWORDW *pRegisterWord) {
    return This->lpVtbl->Configure(This,hKL,hWnd,dwMode,pRegisterWord);
}
static FORCEINLINE HRESULT IActiveIME_Destroy(IActiveIME* This,UINT uReserved) {
    return This->lpVtbl->Destroy(This,uReserved);
}
static FORCEINLINE HRESULT IActiveIME_Escape(IActiveIME* This,HIMC hIMC,UINT uEscape,void *pData,LRESULT *plResult) {
    return This->lpVtbl->Escape(This,hIMC,uEscape,pData,plResult);
}
static FORCEINLINE HRESULT IActiveIME_SetActiveContext(IActiveIME* This,HIMC hIMC,WINBOOL fFlag) {
    return This->lpVtbl->SetActiveContext(This,hIMC,fFlag);
}
static FORCEINLINE HRESULT IActiveIME_ProcessKey(IActiveIME* This,HIMC hIMC,UINT uVirKey,DWORD lParam,BYTE *pbKeyState) {
    return This->lpVtbl->ProcessKey(This,hIMC,uVirKey,lParam,pbKeyState);
}
static FORCEINLINE HRESULT IActiveIME_Notify(IActiveIME* This,HIMC hIMC,DWORD dwAction,DWORD dwIndex,DWORD dwValue) {
    return This->lpVtbl->Notify(This,hIMC,dwAction,dwIndex,dwValue);
}
static FORCEINLINE HRESULT IActiveIME_Select(IActiveIME* This,HIMC hIMC,WINBOOL fSelect) {
    return This->lpVtbl->Select(This,hIMC,fSelect);
}
static FORCEINLINE HRESULT IActiveIME_SetCompositionString(IActiveIME* This,HIMC hIMC,DWORD dwIndex,void *pComp,DWORD dwCompLen,void *pRead,DWORD dwReadLen) {
    return This->lpVtbl->SetCompositionString(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen);
}
static FORCEINLINE HRESULT IActiveIME_ToAsciiEx(IActiveIME* This,UINT uVirKey,UINT uScanCode,BYTE *pbKeyState,UINT fuState,HIMC hIMC,DWORD *pdwTransBuf,UINT *puSize) {
    return This->lpVtbl->ToAsciiEx(This,uVirKey,uScanCode,pbKeyState,fuState,hIMC,pdwTransBuf,puSize);
}
static FORCEINLINE HRESULT IActiveIME_RegisterWord(IActiveIME* This,LPWSTR szReading,DWORD dwStyle,LPWSTR szString) {
    return This->lpVtbl->RegisterWord(This,szReading,dwStyle,szString);
}
static FORCEINLINE HRESULT IActiveIME_UnregisterWord(IActiveIME* This,LPWSTR szReading,DWORD dwStyle,LPWSTR szString) {
    return This->lpVtbl->UnregisterWord(This,szReading,dwStyle,szString);
}
static FORCEINLINE HRESULT IActiveIME_GetRegisterWordStyle(IActiveIME* This,UINT nItem,STYLEBUFW *pStyleBuf,UINT *puBufSize) {
    return This->lpVtbl->GetRegisterWordStyle(This,nItem,pStyleBuf,puBufSize);
}
static FORCEINLINE HRESULT IActiveIME_EnumRegisterWord(IActiveIME* This,LPWSTR szReading,DWORD dwStyle,LPWSTR szRegister,LPVOID pData,IEnumRegisterWordW **ppEnum) {
    return This->lpVtbl->EnumRegisterWord(This,szReading,dwStyle,szRegister,pData,ppEnum);
}
static FORCEINLINE HRESULT IActiveIME_GetCodePageA(IActiveIME* This,UINT *uCodePage) {
    return This->lpVtbl->GetCodePageA(This,uCodePage);
}
static FORCEINLINE HRESULT IActiveIME_GetLangId(IActiveIME* This,LANGID *plid) {
    return This->lpVtbl->GetLangId(This,plid);
}
#endif
#endif

#endif


#endif  /* __IActiveIME_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IActiveIME2 interface
 */
#ifndef __IActiveIME2_INTERFACE_DEFINED__
#define __IActiveIME2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IActiveIME2, 0xe1c4bf0e, 0x2d53, 0x11d2, 0x93,0xe1, 0x00,0x60,0xb0,0x67,0xb8,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e1c4bf0e-2d53-11d2-93e1-0060b067b86e")
IActiveIME2 : public IActiveIME
{
    virtual HRESULT STDMETHODCALLTYPE Sleep(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unsleep(
        WINBOOL fDead) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IActiveIME2, 0xe1c4bf0e, 0x2d53, 0x11d2, 0x93,0xe1, 0x00,0x60,0xb0,0x67,0xb8,0x6e)
#endif
#else
typedef struct IActiveIME2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IActiveIME methods ***/
    HRESULT (STDMETHODCALLTYPE *Inquire)(
        IActiveIME2 *This,
        DWORD dwSystemInfoFlags,
        IMEINFO *pIMEInfo,
        LPWSTR szWndClass,
        DWORD *pdwPrivate);

    HRESULT (STDMETHODCALLTYPE *ConversionList)(
        IActiveIME2 *This,
        HIMC hIMC,
        LPWSTR szSource,
        UINT uFlag,
        UINT uBufLen,
        CANDIDATELIST *pDest,
        UINT *puCopied);

    HRESULT (STDMETHODCALLTYPE *Configure)(
        IActiveIME2 *This,
        HKL hKL,
        HWND hWnd,
        DWORD dwMode,
        REGISTERWORDW *pRegisterWord);

    HRESULT (STDMETHODCALLTYPE *Destroy)(
        IActiveIME2 *This,
        UINT uReserved);

    HRESULT (STDMETHODCALLTYPE *Escape)(
        IActiveIME2 *This,
        HIMC hIMC,
        UINT uEscape,
        void *pData,
        LRESULT *plResult);

    HRESULT (STDMETHODCALLTYPE *SetActiveContext)(
        IActiveIME2 *This,
        HIMC hIMC,
        WINBOOL fFlag);

    HRESULT (STDMETHODCALLTYPE *ProcessKey)(
        IActiveIME2 *This,
        HIMC hIMC,
        UINT uVirKey,
        DWORD lParam,
        BYTE *pbKeyState);

    HRESULT (STDMETHODCALLTYPE *Notify)(
        IActiveIME2 *This,
        HIMC hIMC,
        DWORD dwAction,
        DWORD dwIndex,
        DWORD dwValue);

    HRESULT (STDMETHODCALLTYPE *Select)(
        IActiveIME2 *This,
        HIMC hIMC,
        WINBOOL fSelect);

    HRESULT (STDMETHODCALLTYPE *SetCompositionString)(
        IActiveIME2 *This,
        HIMC hIMC,
        DWORD dwIndex,
        void *pComp,
        DWORD dwCompLen,
        void *pRead,
        DWORD dwReadLen);

    HRESULT (STDMETHODCALLTYPE *ToAsciiEx)(
        IActiveIME2 *This,
        UINT uVirKey,
        UINT uScanCode,
        BYTE *pbKeyState,
        UINT fuState,
        HIMC hIMC,
        DWORD *pdwTransBuf,
        UINT *puSize);

    HRESULT (STDMETHODCALLTYPE *RegisterWord)(
        IActiveIME2 *This,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szString);

    HRESULT (STDMETHODCALLTYPE *UnregisterWord)(
        IActiveIME2 *This,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szString);

    HRESULT (STDMETHODCALLTYPE *GetRegisterWordStyle)(
        IActiveIME2 *This,
        UINT nItem,
        STYLEBUFW *pStyleBuf,
        UINT *puBufSize);

    HRESULT (STDMETHODCALLTYPE *EnumRegisterWord)(
        IActiveIME2 *This,
        LPWSTR szReading,
        DWORD dwStyle,
        LPWSTR szRegister,
        LPVOID pData,
        IEnumRegisterWordW **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCodePageA)(
        IActiveIME2 *This,
        UINT *uCodePage);

    HRESULT (STDMETHODCALLTYPE *GetLangId)(
        IActiveIME2 *This,
        LANGID *plid);

    /*** IActiveIME2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Sleep)(
        IActiveIME2 *This);

    HRESULT (STDMETHODCALLTYPE *Unsleep)(
        IActiveIME2 *This,
        WINBOOL fDead);

    END_INTERFACE
} IActiveIME2Vtbl;

interface IActiveIME2 {
    CONST_VTBL IActiveIME2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActiveIME2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActiveIME2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActiveIME2_Release(This) (This)->lpVtbl->Release(This)
/*** IActiveIME methods ***/
#define IActiveIME2_Inquire(This,dwSystemInfoFlags,pIMEInfo,szWndClass,pdwPrivate) (This)->lpVtbl->Inquire(This,dwSystemInfoFlags,pIMEInfo,szWndClass,pdwPrivate)
#define IActiveIME2_ConversionList(This,hIMC,szSource,uFlag,uBufLen,pDest,puCopied) (This)->lpVtbl->ConversionList(This,hIMC,szSource,uFlag,uBufLen,pDest,puCopied)
#define IActiveIME2_Configure(This,hKL,hWnd,dwMode,pRegisterWord) (This)->lpVtbl->Configure(This,hKL,hWnd,dwMode,pRegisterWord)
#define IActiveIME2_Destroy(This,uReserved) (This)->lpVtbl->Destroy(This,uReserved)
#define IActiveIME2_Escape(This,hIMC,uEscape,pData,plResult) (This)->lpVtbl->Escape(This,hIMC,uEscape,pData,plResult)
#define IActiveIME2_SetActiveContext(This,hIMC,fFlag) (This)->lpVtbl->SetActiveContext(This,hIMC,fFlag)
#define IActiveIME2_ProcessKey(This,hIMC,uVirKey,lParam,pbKeyState) (This)->lpVtbl->ProcessKey(This,hIMC,uVirKey,lParam,pbKeyState)
#define IActiveIME2_Notify(This,hIMC,dwAction,dwIndex,dwValue) (This)->lpVtbl->Notify(This,hIMC,dwAction,dwIndex,dwValue)
#define IActiveIME2_Select(This,hIMC,fSelect) (This)->lpVtbl->Select(This,hIMC,fSelect)
#define IActiveIME2_SetCompositionString(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen) (This)->lpVtbl->SetCompositionString(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen)
#define IActiveIME2_ToAsciiEx(This,uVirKey,uScanCode,pbKeyState,fuState,hIMC,pdwTransBuf,puSize) (This)->lpVtbl->ToAsciiEx(This,uVirKey,uScanCode,pbKeyState,fuState,hIMC,pdwTransBuf,puSize)
#define IActiveIME2_RegisterWord(This,szReading,dwStyle,szString) (This)->lpVtbl->RegisterWord(This,szReading,dwStyle,szString)
#define IActiveIME2_UnregisterWord(This,szReading,dwStyle,szString) (This)->lpVtbl->UnregisterWord(This,szReading,dwStyle,szString)
#define IActiveIME2_GetRegisterWordStyle(This,nItem,pStyleBuf,puBufSize) (This)->lpVtbl->GetRegisterWordStyle(This,nItem,pStyleBuf,puBufSize)
#define IActiveIME2_EnumRegisterWord(This,szReading,dwStyle,szRegister,pData,ppEnum) (This)->lpVtbl->EnumRegisterWord(This,szReading,dwStyle,szRegister,pData,ppEnum)
#define IActiveIME2_GetCodePageA(This,uCodePage) (This)->lpVtbl->GetCodePageA(This,uCodePage)
#define IActiveIME2_GetLangId(This,plid) (This)->lpVtbl->GetLangId(This,plid)
/*** IActiveIME2 methods ***/
#define IActiveIME2_Sleep(This) (This)->lpVtbl->Sleep(This)
#define IActiveIME2_Unsleep(This,fDead) (This)->lpVtbl->Unsleep(This,fDead)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IActiveIME2_QueryInterface(IActiveIME2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IActiveIME2_AddRef(IActiveIME2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IActiveIME2_Release(IActiveIME2* This) {
    return This->lpVtbl->Release(This);
}
/*** IActiveIME methods ***/
static FORCEINLINE HRESULT IActiveIME2_Inquire(IActiveIME2* This,DWORD dwSystemInfoFlags,IMEINFO *pIMEInfo,LPWSTR szWndClass,DWORD *pdwPrivate) {
    return This->lpVtbl->Inquire(This,dwSystemInfoFlags,pIMEInfo,szWndClass,pdwPrivate);
}
static FORCEINLINE HRESULT IActiveIME2_ConversionList(IActiveIME2* This,HIMC hIMC,LPWSTR szSource,UINT uFlag,UINT uBufLen,CANDIDATELIST *pDest,UINT *puCopied) {
    return This->lpVtbl->ConversionList(This,hIMC,szSource,uFlag,uBufLen,pDest,puCopied);
}
static FORCEINLINE HRESULT IActiveIME2_Configure(IActiveIME2* This,HKL hKL,HWND hWnd,DWORD dwMode,REGISTERWORDW *pRegisterWord) {
    return This->lpVtbl->Configure(This,hKL,hWnd,dwMode,pRegisterWord);
}
static FORCEINLINE HRESULT IActiveIME2_Destroy(IActiveIME2* This,UINT uReserved) {
    return This->lpVtbl->Destroy(This,uReserved);
}
static FORCEINLINE HRESULT IActiveIME2_Escape(IActiveIME2* This,HIMC hIMC,UINT uEscape,void *pData,LRESULT *plResult) {
    return This->lpVtbl->Escape(This,hIMC,uEscape,pData,plResult);
}
static FORCEINLINE HRESULT IActiveIME2_SetActiveContext(IActiveIME2* This,HIMC hIMC,WINBOOL fFlag) {
    return This->lpVtbl->SetActiveContext(This,hIMC,fFlag);
}
static FORCEINLINE HRESULT IActiveIME2_ProcessKey(IActiveIME2* This,HIMC hIMC,UINT uVirKey,DWORD lParam,BYTE *pbKeyState) {
    return This->lpVtbl->ProcessKey(This,hIMC,uVirKey,lParam,pbKeyState);
}
static FORCEINLINE HRESULT IActiveIME2_Notify(IActiveIME2* This,HIMC hIMC,DWORD dwAction,DWORD dwIndex,DWORD dwValue) {
    return This->lpVtbl->Notify(This,hIMC,dwAction,dwIndex,dwValue);
}
static FORCEINLINE HRESULT IActiveIME2_Select(IActiveIME2* This,HIMC hIMC,WINBOOL fSelect) {
    return This->lpVtbl->Select(This,hIMC,fSelect);
}
static FORCEINLINE HRESULT IActiveIME2_SetCompositionString(IActiveIME2* This,HIMC hIMC,DWORD dwIndex,void *pComp,DWORD dwCompLen,void *pRead,DWORD dwReadLen) {
    return This->lpVtbl->SetCompositionString(This,hIMC,dwIndex,pComp,dwCompLen,pRead,dwReadLen);
}
static FORCEINLINE HRESULT IActiveIME2_ToAsciiEx(IActiveIME2* This,UINT uVirKey,UINT uScanCode,BYTE *pbKeyState,UINT fuState,HIMC hIMC,DWORD *pdwTransBuf,UINT *puSize) {
    return This->lpVtbl->ToAsciiEx(This,uVirKey,uScanCode,pbKeyState,fuState,hIMC,pdwTransBuf,puSize);
}
static FORCEINLINE HRESULT IActiveIME2_RegisterWord(IActiveIME2* This,LPWSTR szReading,DWORD dwStyle,LPWSTR szString) {
    return This->lpVtbl->RegisterWord(This,szReading,dwStyle,szString);
}
static FORCEINLINE HRESULT IActiveIME2_UnregisterWord(IActiveIME2* This,LPWSTR szReading,DWORD dwStyle,LPWSTR szString) {
    return This->lpVtbl->UnregisterWord(This,szReading,dwStyle,szString);
}
static FORCEINLINE HRESULT IActiveIME2_GetRegisterWordStyle(IActiveIME2* This,UINT nItem,STYLEBUFW *pStyleBuf,UINT *puBufSize) {
    return This->lpVtbl->GetRegisterWordStyle(This,nItem,pStyleBuf,puBufSize);
}
static FORCEINLINE HRESULT IActiveIME2_EnumRegisterWord(IActiveIME2* This,LPWSTR szReading,DWORD dwStyle,LPWSTR szRegister,LPVOID pData,IEnumRegisterWordW **ppEnum) {
    return This->lpVtbl->EnumRegisterWord(This,szReading,dwStyle,szRegister,pData,ppEnum);
}
static FORCEINLINE HRESULT IActiveIME2_GetCodePageA(IActiveIME2* This,UINT *uCodePage) {
    return This->lpVtbl->GetCodePageA(This,uCodePage);
}
static FORCEINLINE HRESULT IActiveIME2_GetLangId(IActiveIME2* This,LANGID *plid) {
    return This->lpVtbl->GetLangId(This,plid);
}
/*** IActiveIME2 methods ***/
static FORCEINLINE HRESULT IActiveIME2_Sleep(IActiveIME2* This) {
    return This->lpVtbl->Sleep(This);
}
static FORCEINLINE HRESULT IActiveIME2_Unsleep(IActiveIME2* This,WINBOOL fDead) {
    return This->lpVtbl->Unsleep(This,fDead);
}
#endif
#endif

#endif


#endif  /* __IActiveIME2_INTERFACE_DEFINED__ */

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

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

#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 *);
ULONG           __RPC_USER HBITMAP_UserSize     (ULONG *, ULONG, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserMarshal  (ULONG *, unsigned char *, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *);
void            __RPC_USER HBITMAP_UserFree     (ULONG *, HBITMAP *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __dimm_h__ */
