

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for mlang.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__


#ifndef __mlang_h__
#define __mlang_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IMLangStringBufW_FWD_DEFINED__
#define __IMLangStringBufW_FWD_DEFINED__
typedef interface IMLangStringBufW IMLangStringBufW;
#endif 	/* __IMLangStringBufW_FWD_DEFINED__ */


#ifndef __IMLangStringBufA_FWD_DEFINED__
#define __IMLangStringBufA_FWD_DEFINED__
typedef interface IMLangStringBufA IMLangStringBufA;
#endif 	/* __IMLangStringBufA_FWD_DEFINED__ */


#ifndef __IMLangString_FWD_DEFINED__
#define __IMLangString_FWD_DEFINED__
typedef interface IMLangString IMLangString;
#endif 	/* __IMLangString_FWD_DEFINED__ */


#ifndef __IMLangStringWStr_FWD_DEFINED__
#define __IMLangStringWStr_FWD_DEFINED__
typedef interface IMLangStringWStr IMLangStringWStr;
#endif 	/* __IMLangStringWStr_FWD_DEFINED__ */


#ifndef __IMLangStringAStr_FWD_DEFINED__
#define __IMLangStringAStr_FWD_DEFINED__
typedef interface IMLangStringAStr IMLangStringAStr;
#endif 	/* __IMLangStringAStr_FWD_DEFINED__ */


#ifndef __CMLangString_FWD_DEFINED__
#define __CMLangString_FWD_DEFINED__

#ifdef __cplusplus
typedef class CMLangString CMLangString;
#else
typedef struct CMLangString CMLangString;
#endif /* __cplusplus */

#endif 	/* __CMLangString_FWD_DEFINED__ */


#ifndef __IMLangLineBreakConsole_FWD_DEFINED__
#define __IMLangLineBreakConsole_FWD_DEFINED__
typedef interface IMLangLineBreakConsole IMLangLineBreakConsole;
#endif 	/* __IMLangLineBreakConsole_FWD_DEFINED__ */


#ifndef __IEnumCodePage_FWD_DEFINED__
#define __IEnumCodePage_FWD_DEFINED__
typedef interface IEnumCodePage IEnumCodePage;
#endif 	/* __IEnumCodePage_FWD_DEFINED__ */


#ifndef __IEnumRfc1766_FWD_DEFINED__
#define __IEnumRfc1766_FWD_DEFINED__
typedef interface IEnumRfc1766 IEnumRfc1766;
#endif 	/* __IEnumRfc1766_FWD_DEFINED__ */


#ifndef __IEnumScript_FWD_DEFINED__
#define __IEnumScript_FWD_DEFINED__
typedef interface IEnumScript IEnumScript;
#endif 	/* __IEnumScript_FWD_DEFINED__ */


#ifndef __IMLangConvertCharset_FWD_DEFINED__
#define __IMLangConvertCharset_FWD_DEFINED__
typedef interface IMLangConvertCharset IMLangConvertCharset;
#endif 	/* __IMLangConvertCharset_FWD_DEFINED__ */


#ifndef __CMLangConvertCharset_FWD_DEFINED__
#define __CMLangConvertCharset_FWD_DEFINED__

#ifdef __cplusplus
typedef class CMLangConvertCharset CMLangConvertCharset;
#else
typedef struct CMLangConvertCharset CMLangConvertCharset;
#endif /* __cplusplus */

#endif 	/* __CMLangConvertCharset_FWD_DEFINED__ */


#ifndef __IMultiLanguage_FWD_DEFINED__
#define __IMultiLanguage_FWD_DEFINED__
typedef interface IMultiLanguage IMultiLanguage;
#endif 	/* __IMultiLanguage_FWD_DEFINED__ */


#ifndef __IMultiLanguage2_FWD_DEFINED__
#define __IMultiLanguage2_FWD_DEFINED__
typedef interface IMultiLanguage2 IMultiLanguage2;
#endif 	/* __IMultiLanguage2_FWD_DEFINED__ */


#ifndef __IMLangCodePages_FWD_DEFINED__
#define __IMLangCodePages_FWD_DEFINED__
typedef interface IMLangCodePages IMLangCodePages;
#endif 	/* __IMLangCodePages_FWD_DEFINED__ */


#ifndef __IMLangFontLink_FWD_DEFINED__
#define __IMLangFontLink_FWD_DEFINED__
typedef interface IMLangFontLink IMLangFontLink;
#endif 	/* __IMLangFontLink_FWD_DEFINED__ */


#ifndef __IMLangFontLink2_FWD_DEFINED__
#define __IMLangFontLink2_FWD_DEFINED__
typedef interface IMLangFontLink2 IMLangFontLink2;
#endif 	/* __IMLangFontLink2_FWD_DEFINED__ */


#ifndef __IMultiLanguage3_FWD_DEFINED__
#define __IMultiLanguage3_FWD_DEFINED__
typedef interface IMultiLanguage3 IMultiLanguage3;
#endif 	/* __IMultiLanguage3_FWD_DEFINED__ */


#ifndef __CMultiLanguage_FWD_DEFINED__
#define __CMultiLanguage_FWD_DEFINED__

#ifdef __cplusplus
typedef class CMultiLanguage CMultiLanguage;
#else
typedef struct CMultiLanguage CMultiLanguage;
#endif /* __cplusplus */

#endif 	/* __CMultiLanguage_FWD_DEFINED__ */


/* header files for imported files */
#include "unknwn.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_mlang_0000_0000 */
/* [local] */ 

//=--------------------------------------------------------------------------=
// MLang.h                                                                    
//=--------------------------------------------------------------------------=
// Copyright (c) Microsoft Corporation. All rights reserved.
//                                                                            
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF        
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO        
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A             
// PARTICULAR PURPOSE.                                                        
//=--------------------------------------------------------------------------=
                                                                              
#pragma comment(lib,"uuid.lib")                                             
                                                                              
//----------------------------------------------------------------------------
// IMultiLanguage Interfaces.                                                 
                                                                              


extern RPC_IF_HANDLE __MIDL_itf_mlang_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_mlang_0000_0000_v0_0_s_ifspec;


#ifndef __MultiLanguage_LIBRARY_DEFINED__
#define __MultiLanguage_LIBRARY_DEFINED__

/* library MultiLanguage */
/* [version][lcid][helpstring][uuid] */ 

typedef WORD LANGID;

typedef 
enum tagMLSTR_FLAGS
    {	MLSTR_READ	= 1,
	MLSTR_WRITE	= 2
    } 	MLSTR_FLAGS;

// dwfIODControl definitions for ValidateCodePageEx()
#define CPIOD_PEEK          0x40000000L
#define CPIOD_FORCE_PROMPT  0x80000000L

EXTERN_C const IID LIBID_MultiLanguage;

#ifndef __IMLangStringBufW_INTERFACE_DEFINED__
#define __IMLangStringBufW_INTERFACE_DEFINED__

/* interface IMLangStringBufW */
/* [object][unique][helpstring][uuid][local] */ 


EXTERN_C const IID IID_IMLangStringBufW;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("D24ACD21-BA72-11D0-B188-00AA0038C969")
    IMLangStringBufW : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetStatus( 
            /* [annotation][out] */ 
            __out_opt  long *plFlags,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE LockBuf( 
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxLock,
            /* [annotation][size_is][size_is][out] */ 
            __deref_out_ecount(*pcchBuf)  WCHAR **ppszBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnlockBuf( 
            /* [annotation][size_is][in] */ 
            __in_ecount(cchWrite-cchOffset)  const WCHAR *pszBuf,
            /* [in] */ long cchOffset,
            /* [in] */ long cchWrite) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Insert( 
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxInsert,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Delete( 
            /* [in] */ long cchOffset,
            /* [in] */ long cchDelete) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangStringBufWVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangStringBufW * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangStringBufW * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangStringBufW * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetStatus )( 
            IMLangStringBufW * This,
            /* [annotation][out] */ 
            __out_opt  long *plFlags,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf);
        
        HRESULT ( STDMETHODCALLTYPE *LockBuf )( 
            IMLangStringBufW * This,
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxLock,
            /* [annotation][size_is][size_is][out] */ 
            __deref_out_ecount(*pcchBuf)  WCHAR **ppszBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf);
        
        HRESULT ( STDMETHODCALLTYPE *UnlockBuf )( 
            IMLangStringBufW * This,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchWrite-cchOffset)  const WCHAR *pszBuf,
            /* [in] */ long cchOffset,
            /* [in] */ long cchWrite);
        
        HRESULT ( STDMETHODCALLTYPE *Insert )( 
            IMLangStringBufW * This,
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxInsert,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual);
        
        HRESULT ( STDMETHODCALLTYPE *Delete )( 
            IMLangStringBufW * This,
            /* [in] */ long cchOffset,
            /* [in] */ long cchDelete);
        
        END_INTERFACE
    } IMLangStringBufWVtbl;

    interface IMLangStringBufW
    {
        CONST_VTBL struct IMLangStringBufWVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangStringBufW_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangStringBufW_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangStringBufW_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangStringBufW_GetStatus(This,plFlags,pcchBuf)	\
    ( (This)->lpVtbl -> GetStatus(This,plFlags,pcchBuf) ) 

#define IMLangStringBufW_LockBuf(This,cchOffset,cchMaxLock,ppszBuf,pcchBuf)	\
    ( (This)->lpVtbl -> LockBuf(This,cchOffset,cchMaxLock,ppszBuf,pcchBuf) ) 

#define IMLangStringBufW_UnlockBuf(This,pszBuf,cchOffset,cchWrite)	\
    ( (This)->lpVtbl -> UnlockBuf(This,pszBuf,cchOffset,cchWrite) ) 

#define IMLangStringBufW_Insert(This,cchOffset,cchMaxInsert,pcchActual)	\
    ( (This)->lpVtbl -> Insert(This,cchOffset,cchMaxInsert,pcchActual) ) 

#define IMLangStringBufW_Delete(This,cchOffset,cchDelete)	\
    ( (This)->lpVtbl -> Delete(This,cchOffset,cchDelete) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangStringBufW_INTERFACE_DEFINED__ */


#ifndef __IMLangStringBufA_INTERFACE_DEFINED__
#define __IMLangStringBufA_INTERFACE_DEFINED__

/* interface IMLangStringBufA */
/* [object][unique][helpstring][uuid][local] */ 


EXTERN_C const IID IID_IMLangStringBufA;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("D24ACD23-BA72-11D0-B188-00AA0038C969")
    IMLangStringBufA : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetStatus( 
            /* [annotation][out] */ 
            __out_opt  long *plFlags,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE LockBuf( 
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxLock,
            /* [annotation][size_is][size_is][out] */ 
            __deref_out_ecount(*pcchBuf)  CHAR **ppszBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnlockBuf( 
            /* [annotation][size_is][in] */ 
            __in_ecount(cchWrite-cchOffset)  const CHAR *pszBuf,
            /* [in] */ long cchOffset,
            /* [in] */ long cchWrite) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Insert( 
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxInsert,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Delete( 
            /* [in] */ long cchOffset,
            /* [in] */ long cchDelete) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangStringBufAVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangStringBufA * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangStringBufA * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangStringBufA * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetStatus )( 
            IMLangStringBufA * This,
            /* [annotation][out] */ 
            __out_opt  long *plFlags,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf);
        
        HRESULT ( STDMETHODCALLTYPE *LockBuf )( 
            IMLangStringBufA * This,
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxLock,
            /* [annotation][size_is][size_is][out] */ 
            __deref_out_ecount(*pcchBuf)  CHAR **ppszBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchBuf);
        
        HRESULT ( STDMETHODCALLTYPE *UnlockBuf )( 
            IMLangStringBufA * This,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchWrite-cchOffset)  const CHAR *pszBuf,
            /* [in] */ long cchOffset,
            /* [in] */ long cchWrite);
        
        HRESULT ( STDMETHODCALLTYPE *Insert )( 
            IMLangStringBufA * This,
            /* [in] */ long cchOffset,
            /* [in] */ long cchMaxInsert,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual);
        
        HRESULT ( STDMETHODCALLTYPE *Delete )( 
            IMLangStringBufA * This,
            /* [in] */ long cchOffset,
            /* [in] */ long cchDelete);
        
        END_INTERFACE
    } IMLangStringBufAVtbl;

    interface IMLangStringBufA
    {
        CONST_VTBL struct IMLangStringBufAVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangStringBufA_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangStringBufA_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangStringBufA_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangStringBufA_GetStatus(This,plFlags,pcchBuf)	\
    ( (This)->lpVtbl -> GetStatus(This,plFlags,pcchBuf) ) 

#define IMLangStringBufA_LockBuf(This,cchOffset,cchMaxLock,ppszBuf,pcchBuf)	\
    ( (This)->lpVtbl -> LockBuf(This,cchOffset,cchMaxLock,ppszBuf,pcchBuf) ) 

#define IMLangStringBufA_UnlockBuf(This,pszBuf,cchOffset,cchWrite)	\
    ( (This)->lpVtbl -> UnlockBuf(This,pszBuf,cchOffset,cchWrite) ) 

#define IMLangStringBufA_Insert(This,cchOffset,cchMaxInsert,pcchActual)	\
    ( (This)->lpVtbl -> Insert(This,cchOffset,cchMaxInsert,pcchActual) ) 

#define IMLangStringBufA_Delete(This,cchOffset,cchDelete)	\
    ( (This)->lpVtbl -> Delete(This,cchOffset,cchDelete) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangStringBufA_INTERFACE_DEFINED__ */


#ifndef __IMLangString_INTERFACE_DEFINED__
#define __IMLangString_INTERFACE_DEFINED__

/* interface IMLangString */
/* [object][unique][helpstring][uuid][local] */ 


EXTERN_C const IID IID_IMLangString;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C04D65CE-B70D-11D0-B188-00AA0038C969")
    IMLangString : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Sync( 
            /* [in] */ BOOL fNoAccess) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLength( 
            /* [annotation][retval][out] */ 
            __out_opt  long *plLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetMLStr( 
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][in] */ 
            __in  IUnknown *pSrcMLStr,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetMLStr( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [annotation][in] */ 
            __in  IUnknown *pUnkOuter,
            /* [in] */ DWORD dwClsContext,
            /* [annotation][in] */ 
            __in  const IID *piid,
            /* [annotation][out] */ 
            __deref_out  IUnknown **ppDestMLStr,
            /* [annotation][out] */ 
            __out_opt  long *plDestPos,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangStringVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangString * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangString * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangString * This);
        
        HRESULT ( STDMETHODCALLTYPE *Sync )( 
            IMLangString * This,
            /* [in] */ BOOL fNoAccess);
        
        HRESULT ( STDMETHODCALLTYPE *GetLength )( 
            IMLangString * This,
            /* [annotation][retval][out] */ 
            __out_opt  long *plLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetMLStr )( 
            IMLangString * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][in] */ 
            __in  IUnknown *pSrcMLStr,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen);
        
        HRESULT ( STDMETHODCALLTYPE *GetMLStr )( 
            IMLangString * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [annotation][in] */ 
            __in  IUnknown *pUnkOuter,
            /* [in] */ DWORD dwClsContext,
            /* [annotation][in] */ 
            __in  const IID *piid,
            /* [annotation][out] */ 
            __deref_out  IUnknown **ppDestMLStr,
            /* [annotation][out] */ 
            __out_opt  long *plDestPos,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen);
        
        END_INTERFACE
    } IMLangStringVtbl;

    interface IMLangString
    {
        CONST_VTBL struct IMLangStringVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangString_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangString_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangString_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangString_Sync(This,fNoAccess)	\
    ( (This)->lpVtbl -> Sync(This,fNoAccess) ) 

#define IMLangString_GetLength(This,plLen)	\
    ( (This)->lpVtbl -> GetLength(This,plLen) ) 

#define IMLangString_SetMLStr(This,lDestPos,lDestLen,pSrcMLStr,lSrcPos,lSrcLen)	\
    ( (This)->lpVtbl -> SetMLStr(This,lDestPos,lDestLen,pSrcMLStr,lSrcPos,lSrcLen) ) 

#define IMLangString_GetMLStr(This,lSrcPos,lSrcLen,pUnkOuter,dwClsContext,piid,ppDestMLStr,plDestPos,plDestLen)	\
    ( (This)->lpVtbl -> GetMLStr(This,lSrcPos,lSrcLen,pUnkOuter,dwClsContext,piid,ppDestMLStr,plDestPos,plDestLen) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangString_INTERFACE_DEFINED__ */


#ifndef __IMLangStringWStr_INTERFACE_DEFINED__
#define __IMLangStringWStr_INTERFACE_DEFINED__

/* interface IMLangStringWStr */
/* [object][unique][helpstring][uuid][local] */ 


EXTERN_C const IID IID_IMLangStringWStr;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C04D65D0-B70D-11D0-B188-00AA0038C969")
    IMLangStringWStr : public IMLangString
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetWStr( 
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][size_is][string][in] */ 
            __in_ecount(cchSrc)  LPCWSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetStrBufW( 
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][unique][in] */ 
            __in_opt  IMLangStringBufW *pSrcBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetWStr( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [annotation][size_is][out] */ 
            __out_ecount_opt(cchDest)  LPWSTR pszDest,
            /* [in] */ long cchDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStrBufW( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __deref_out  IMLangStringBufW **ppDestBuf,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE LockWStr( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ long lFlags,
            /* [in] */ long cchRequest,
            /* [annotation][size_is][size_is][out] */ 
            __deref_opt_out_ecount(*pcchDest)  LPWSTR *ppszDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchDest,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnlockWStr( 
            /* [annotation][size_is][string][in] */ 
            __in_ecount(cchSrc)  LPCWSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetLocale( 
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ LCID locale) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLocale( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __out_opt  LCID *plocale,
            /* [annotation][out] */ 
            __out_opt  long *plLocalePos,
            /* [annotation][out] */ 
            __out_opt  long *plLocaleLen) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangStringWStrVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangStringWStr * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangStringWStr * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangStringWStr * This);
        
        HRESULT ( STDMETHODCALLTYPE *Sync )( 
            IMLangStringWStr * This,
            /* [in] */ BOOL fNoAccess);
        
        HRESULT ( STDMETHODCALLTYPE *GetLength )( 
            IMLangStringWStr * This,
            /* [annotation][retval][out] */ 
            __out_opt  long *plLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetMLStr )( 
            IMLangStringWStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][in] */ 
            __in  IUnknown *pSrcMLStr,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen);
        
        HRESULT ( STDMETHODCALLTYPE *GetMLStr )( 
            IMLangStringWStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [annotation][in] */ 
            __in  IUnknown *pUnkOuter,
            /* [in] */ DWORD dwClsContext,
            /* [annotation][in] */ 
            __in  const IID *piid,
            /* [annotation][out] */ 
            __deref_out  IUnknown **ppDestMLStr,
            /* [annotation][out] */ 
            __out_opt  long *plDestPos,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetWStr )( 
            IMLangStringWStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][size_is][string][in] */ 
            __in_ecount(cchSrc)  LPCWSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetStrBufW )( 
            IMLangStringWStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][unique][in] */ 
            __in_opt  IMLangStringBufW *pSrcBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *GetWStr )( 
            IMLangStringWStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [annotation][size_is][out] */ 
            __out_ecount_opt(cchDest)  LPWSTR pszDest,
            /* [in] */ long cchDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *GetStrBufW )( 
            IMLangStringWStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __deref_out  IMLangStringBufW **ppDestBuf,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen);
        
        HRESULT ( STDMETHODCALLTYPE *LockWStr )( 
            IMLangStringWStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ long lFlags,
            /* [in] */ long cchRequest,
            /* [annotation][size_is][size_is][out] */ 
            __deref_opt_out_ecount(*pcchDest)  LPWSTR *ppszDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchDest,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen);
        
        HRESULT ( STDMETHODCALLTYPE *UnlockWStr )( 
            IMLangStringWStr * This,
            /* [annotation][size_is][string][in] */ 
            __in_ecount(cchSrc)  LPCWSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetLocale )( 
            IMLangStringWStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ LCID locale);
        
        HRESULT ( STDMETHODCALLTYPE *GetLocale )( 
            IMLangStringWStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __out_opt  LCID *plocale,
            /* [annotation][out] */ 
            __out_opt  long *plLocalePos,
            /* [annotation][out] */ 
            __out_opt  long *plLocaleLen);
        
        END_INTERFACE
    } IMLangStringWStrVtbl;

    interface IMLangStringWStr
    {
        CONST_VTBL struct IMLangStringWStrVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangStringWStr_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangStringWStr_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangStringWStr_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangStringWStr_Sync(This,fNoAccess)	\
    ( (This)->lpVtbl -> Sync(This,fNoAccess) ) 

#define IMLangStringWStr_GetLength(This,plLen)	\
    ( (This)->lpVtbl -> GetLength(This,plLen) ) 

#define IMLangStringWStr_SetMLStr(This,lDestPos,lDestLen,pSrcMLStr,lSrcPos,lSrcLen)	\
    ( (This)->lpVtbl -> SetMLStr(This,lDestPos,lDestLen,pSrcMLStr,lSrcPos,lSrcLen) ) 

#define IMLangStringWStr_GetMLStr(This,lSrcPos,lSrcLen,pUnkOuter,dwClsContext,piid,ppDestMLStr,plDestPos,plDestLen)	\
    ( (This)->lpVtbl -> GetMLStr(This,lSrcPos,lSrcLen,pUnkOuter,dwClsContext,piid,ppDestMLStr,plDestPos,plDestLen) ) 


#define IMLangStringWStr_SetWStr(This,lDestPos,lDestLen,pszSrc,cchSrc,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> SetWStr(This,lDestPos,lDestLen,pszSrc,cchSrc,pcchActual,plActualLen) ) 

#define IMLangStringWStr_SetStrBufW(This,lDestPos,lDestLen,pSrcBuf,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> SetStrBufW(This,lDestPos,lDestLen,pSrcBuf,pcchActual,plActualLen) ) 

#define IMLangStringWStr_GetWStr(This,lSrcPos,lSrcLen,pszDest,cchDest,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> GetWStr(This,lSrcPos,lSrcLen,pszDest,cchDest,pcchActual,plActualLen) ) 

#define IMLangStringWStr_GetStrBufW(This,lSrcPos,lSrcMaxLen,ppDestBuf,plDestLen)	\
    ( (This)->lpVtbl -> GetStrBufW(This,lSrcPos,lSrcMaxLen,ppDestBuf,plDestLen) ) 

#define IMLangStringWStr_LockWStr(This,lSrcPos,lSrcLen,lFlags,cchRequest,ppszDest,pcchDest,plDestLen)	\
    ( (This)->lpVtbl -> LockWStr(This,lSrcPos,lSrcLen,lFlags,cchRequest,ppszDest,pcchDest,plDestLen) ) 

#define IMLangStringWStr_UnlockWStr(This,pszSrc,cchSrc,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> UnlockWStr(This,pszSrc,cchSrc,pcchActual,plActualLen) ) 

#define IMLangStringWStr_SetLocale(This,lDestPos,lDestLen,locale)	\
    ( (This)->lpVtbl -> SetLocale(This,lDestPos,lDestLen,locale) ) 

#define IMLangStringWStr_GetLocale(This,lSrcPos,lSrcMaxLen,plocale,plLocalePos,plLocaleLen)	\
    ( (This)->lpVtbl -> GetLocale(This,lSrcPos,lSrcMaxLen,plocale,plLocalePos,plLocaleLen) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangStringWStr_INTERFACE_DEFINED__ */


#ifndef __IMLangStringAStr_INTERFACE_DEFINED__
#define __IMLangStringAStr_INTERFACE_DEFINED__

/* interface IMLangStringAStr */
/* [object][unique][helpstring][uuid][local] */ 


EXTERN_C const IID IID_IMLangStringAStr;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C04D65D2-B70D-11D0-B188-00AA0038C969")
    IMLangStringAStr : public IMLangString
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetAStr( 
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ UINT uCodePage,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  LPCSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetStrBufA( 
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ UINT uCodePage,
            /* [annotation][in] */ 
            __in_opt  IMLangStringBufA *pSrcBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAStr( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ UINT uCodePageIn,
            /* [annotation][out] */ 
            __reserved  UINT *puCodePageOut,
            /* [annotation][size_is][out] */ 
            __out_ecount_opt(cchDest)  LPSTR pszDest,
            /* [in] */ long cchDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStrBufA( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __out_opt  UINT *puDestCodePage,
            /* [annotation][out] */ 
            __deref_out  IMLangStringBufA **ppDestBuf,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE LockAStr( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ long lFlags,
            /* [in] */ UINT uCodePageIn,
            /* [in] */ long cchRequest,
            /* [annotation][out] */ 
            __out_opt  UINT *puCodePageOut,
            /* [annotation][size_is][size_is][out] */ 
            __deref_opt_out_ecount(*pcchDest)  LPSTR *ppszDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchDest,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnlockAStr( 
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  LPCSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetLocale( 
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ LCID locale) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLocale( 
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __out_opt  LCID *plocale,
            /* [annotation][out] */ 
            __out_opt  long *plLocalePos,
            /* [annotation][out] */ 
            __out_opt  long *plLocaleLen) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangStringAStrVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangStringAStr * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangStringAStr * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangStringAStr * This);
        
        HRESULT ( STDMETHODCALLTYPE *Sync )( 
            IMLangStringAStr * This,
            /* [in] */ BOOL fNoAccess);
        
        HRESULT ( STDMETHODCALLTYPE *GetLength )( 
            IMLangStringAStr * This,
            /* [annotation][retval][out] */ 
            __out_opt  long *plLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetMLStr )( 
            IMLangStringAStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [annotation][in] */ 
            __in  IUnknown *pSrcMLStr,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen);
        
        HRESULT ( STDMETHODCALLTYPE *GetMLStr )( 
            IMLangStringAStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [annotation][in] */ 
            __in  IUnknown *pUnkOuter,
            /* [in] */ DWORD dwClsContext,
            /* [annotation][in] */ 
            __in  const IID *piid,
            /* [annotation][out] */ 
            __deref_out  IUnknown **ppDestMLStr,
            /* [annotation][out] */ 
            __out_opt  long *plDestPos,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetAStr )( 
            IMLangStringAStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ UINT uCodePage,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  LPCSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetStrBufA )( 
            IMLangStringAStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ UINT uCodePage,
            /* [annotation][in] */ 
            __in_opt  IMLangStringBufA *pSrcBuf,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *GetAStr )( 
            IMLangStringAStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ UINT uCodePageIn,
            /* [annotation][out] */ 
            __reserved  UINT *puCodePageOut,
            /* [annotation][size_is][out] */ 
            __out_ecount_opt(cchDest)  LPSTR pszDest,
            /* [in] */ long cchDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *GetStrBufA )( 
            IMLangStringAStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __out_opt  UINT *puDestCodePage,
            /* [annotation][out] */ 
            __deref_out  IMLangStringBufA **ppDestBuf,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen);
        
        HRESULT ( STDMETHODCALLTYPE *LockAStr )( 
            IMLangStringAStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ long lFlags,
            /* [in] */ UINT uCodePageIn,
            /* [in] */ long cchRequest,
            /* [annotation][out] */ 
            __out_opt  UINT *puCodePageOut,
            /* [annotation][size_is][size_is][out] */ 
            __deref_opt_out_ecount(*pcchDest)  LPSTR *ppszDest,
            /* [annotation][out] */ 
            __out_opt  long *pcchDest,
            /* [annotation][out] */ 
            __out_opt  long *plDestLen);
        
        HRESULT ( STDMETHODCALLTYPE *UnlockAStr )( 
            IMLangStringAStr * This,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  LPCSTR pszSrc,
            /* [in] */ long cchSrc,
            /* [annotation][out] */ 
            __out_opt  long *pcchActual,
            /* [annotation][out] */ 
            __out_opt  long *plActualLen);
        
        HRESULT ( STDMETHODCALLTYPE *SetLocale )( 
            IMLangStringAStr * This,
            /* [in] */ long lDestPos,
            /* [in] */ long lDestLen,
            /* [in] */ LCID locale);
        
        HRESULT ( STDMETHODCALLTYPE *GetLocale )( 
            IMLangStringAStr * This,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcMaxLen,
            /* [annotation][out] */ 
            __out_opt  LCID *plocale,
            /* [annotation][out] */ 
            __out_opt  long *plLocalePos,
            /* [annotation][out] */ 
            __out_opt  long *plLocaleLen);
        
        END_INTERFACE
    } IMLangStringAStrVtbl;

    interface IMLangStringAStr
    {
        CONST_VTBL struct IMLangStringAStrVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangStringAStr_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangStringAStr_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangStringAStr_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangStringAStr_Sync(This,fNoAccess)	\
    ( (This)->lpVtbl -> Sync(This,fNoAccess) ) 

#define IMLangStringAStr_GetLength(This,plLen)	\
    ( (This)->lpVtbl -> GetLength(This,plLen) ) 

#define IMLangStringAStr_SetMLStr(This,lDestPos,lDestLen,pSrcMLStr,lSrcPos,lSrcLen)	\
    ( (This)->lpVtbl -> SetMLStr(This,lDestPos,lDestLen,pSrcMLStr,lSrcPos,lSrcLen) ) 

#define IMLangStringAStr_GetMLStr(This,lSrcPos,lSrcLen,pUnkOuter,dwClsContext,piid,ppDestMLStr,plDestPos,plDestLen)	\
    ( (This)->lpVtbl -> GetMLStr(This,lSrcPos,lSrcLen,pUnkOuter,dwClsContext,piid,ppDestMLStr,plDestPos,plDestLen) ) 


#define IMLangStringAStr_SetAStr(This,lDestPos,lDestLen,uCodePage,pszSrc,cchSrc,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> SetAStr(This,lDestPos,lDestLen,uCodePage,pszSrc,cchSrc,pcchActual,plActualLen) ) 

#define IMLangStringAStr_SetStrBufA(This,lDestPos,lDestLen,uCodePage,pSrcBuf,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> SetStrBufA(This,lDestPos,lDestLen,uCodePage,pSrcBuf,pcchActual,plActualLen) ) 

#define IMLangStringAStr_GetAStr(This,lSrcPos,lSrcLen,uCodePageIn,puCodePageOut,pszDest,cchDest,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> GetAStr(This,lSrcPos,lSrcLen,uCodePageIn,puCodePageOut,pszDest,cchDest,pcchActual,plActualLen) ) 

#define IMLangStringAStr_GetStrBufA(This,lSrcPos,lSrcMaxLen,puDestCodePage,ppDestBuf,plDestLen)	\
    ( (This)->lpVtbl -> GetStrBufA(This,lSrcPos,lSrcMaxLen,puDestCodePage,ppDestBuf,plDestLen) ) 

#define IMLangStringAStr_LockAStr(This,lSrcPos,lSrcLen,lFlags,uCodePageIn,cchRequest,puCodePageOut,ppszDest,pcchDest,plDestLen)	\
    ( (This)->lpVtbl -> LockAStr(This,lSrcPos,lSrcLen,lFlags,uCodePageIn,cchRequest,puCodePageOut,ppszDest,pcchDest,plDestLen) ) 

#define IMLangStringAStr_UnlockAStr(This,pszSrc,cchSrc,pcchActual,plActualLen)	\
    ( (This)->lpVtbl -> UnlockAStr(This,pszSrc,cchSrc,pcchActual,plActualLen) ) 

#define IMLangStringAStr_SetLocale(This,lDestPos,lDestLen,locale)	\
    ( (This)->lpVtbl -> SetLocale(This,lDestPos,lDestLen,locale) ) 

#define IMLangStringAStr_GetLocale(This,lSrcPos,lSrcMaxLen,plocale,plLocalePos,plLocaleLen)	\
    ( (This)->lpVtbl -> GetLocale(This,lSrcPos,lSrcMaxLen,plocale,plLocalePos,plLocaleLen) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangStringAStr_INTERFACE_DEFINED__ */


EXTERN_C const CLSID CLSID_CMLangString;

#ifdef __cplusplus

class DECLSPEC_UUID("C04D65CF-B70D-11D0-B188-00AA0038C969")
CMLangString;
#endif

#ifndef __IMLangLineBreakConsole_INTERFACE_DEFINED__
#define __IMLangLineBreakConsole_INTERFACE_DEFINED__

/* interface IMLangLineBreakConsole */
/* [object][local][unique][helpstring][uuid] */ 


EXTERN_C const IID IID_IMLangLineBreakConsole;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("F5BE2EE1-BFD7-11D0-B188-00AA0038C969")
    IMLangLineBreakConsole : public IUnknown
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE BreakLineML( 
            /* [annotation][in] */ 
            __in  IMLangString *pSrcMLStr,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ long cMinColumns,
            /* [in] */ long cMaxColumns,
            /* [annotation][out] */ 
            __out_opt  long *plLineLen,
            /* [annotation][out] */ 
            __out_opt  long *plSkipLen) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE BreakLineW( 
            /* [in] */ LCID locale,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const WCHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ long cMaxColumns,
            /* [annotation][out] */ 
            __out_opt  long *pcchLine,
            /* [annotation][out] */ 
            __out_opt  long *pcchSkip) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE BreakLineA( 
            /* [in] */ LCID locale,
            /* [in] */ UINT uCodePage,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const CHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ long cMaxColumns,
            /* [annotation][out] */ 
            __out_opt  long *pcchLine,
            /* [annotation][out] */ 
            __out_opt  long *pcchSkip) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangLineBreakConsoleVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangLineBreakConsole * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangLineBreakConsole * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangLineBreakConsole * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *BreakLineML )( 
            IMLangLineBreakConsole * This,
            /* [annotation][in] */ 
            __in  IMLangString *pSrcMLStr,
            /* [in] */ long lSrcPos,
            /* [in] */ long lSrcLen,
            /* [in] */ long cMinColumns,
            /* [in] */ long cMaxColumns,
            /* [annotation][out] */ 
            __out_opt  long *plLineLen,
            /* [annotation][out] */ 
            __out_opt  long *plSkipLen);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *BreakLineW )( 
            IMLangLineBreakConsole * This,
            /* [in] */ LCID locale,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const WCHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ long cMaxColumns,
            /* [annotation][out] */ 
            __out_opt  long *pcchLine,
            /* [annotation][out] */ 
            __out_opt  long *pcchSkip);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *BreakLineA )( 
            IMLangLineBreakConsole * This,
            /* [in] */ LCID locale,
            /* [in] */ UINT uCodePage,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const CHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ long cMaxColumns,
            /* [annotation][out] */ 
            __out_opt  long *pcchLine,
            /* [annotation][out] */ 
            __out_opt  long *pcchSkip);
        
        END_INTERFACE
    } IMLangLineBreakConsoleVtbl;

    interface IMLangLineBreakConsole
    {
        CONST_VTBL struct IMLangLineBreakConsoleVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangLineBreakConsole_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangLineBreakConsole_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangLineBreakConsole_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangLineBreakConsole_BreakLineML(This,pSrcMLStr,lSrcPos,lSrcLen,cMinColumns,cMaxColumns,plLineLen,plSkipLen)	\
    ( (This)->lpVtbl -> BreakLineML(This,pSrcMLStr,lSrcPos,lSrcLen,cMinColumns,cMaxColumns,plLineLen,plSkipLen) ) 

#define IMLangLineBreakConsole_BreakLineW(This,locale,pszSrc,cchSrc,cMaxColumns,pcchLine,pcchSkip)	\
    ( (This)->lpVtbl -> BreakLineW(This,locale,pszSrc,cchSrc,cMaxColumns,pcchLine,pcchSkip) ) 

#define IMLangLineBreakConsole_BreakLineA(This,locale,uCodePage,pszSrc,cchSrc,cMaxColumns,pcchLine,pcchSkip)	\
    ( (This)->lpVtbl -> BreakLineA(This,locale,uCodePage,pszSrc,cchSrc,cMaxColumns,pcchLine,pcchSkip) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangLineBreakConsole_INTERFACE_DEFINED__ */


#ifndef __IEnumCodePage_INTERFACE_DEFINED__
#define __IEnumCodePage_INTERFACE_DEFINED__

/* interface IEnumCodePage */
/* [local][unique][uuid][object] */ 

#define	MAX_MIMECP_NAME	( 64 )

#define	MAX_MIMECSET_NAME	( 50 )

#define	MAX_MIMEFACE_NAME	( 32 )

typedef 
enum tagMIMECONTF
    {	MIMECONTF_MAILNEWS	= 0x1,
	MIMECONTF_BROWSER	= 0x2,
	MIMECONTF_MINIMAL	= 0x4,
	MIMECONTF_IMPORT	= 0x8,
	MIMECONTF_SAVABLE_MAILNEWS	= 0x100,
	MIMECONTF_SAVABLE_BROWSER	= 0x200,
	MIMECONTF_EXPORT	= 0x400,
	MIMECONTF_PRIVCONVERTER	= 0x10000,
	MIMECONTF_VALID	= 0x20000,
	MIMECONTF_VALID_NLS	= 0x40000,
	MIMECONTF_MIME_IE4	= 0x10000000,
	MIMECONTF_MIME_LATEST	= 0x20000000,
	MIMECONTF_MIME_REGISTRY	= 0x40000000
    } 	MIMECONTF;

typedef struct tagMIMECPINFO
    {
    DWORD dwFlags;
    UINT uiCodePage;
    UINT uiFamilyCodePage;
    WCHAR wszDescription[ 64 ];
    WCHAR wszWebCharset[ 50 ];
    WCHAR wszHeaderCharset[ 50 ];
    WCHAR wszBodyCharset[ 50 ];
    WCHAR wszFixedWidthFont[ 32 ];
    WCHAR wszProportionalFont[ 32 ];
    BYTE bGDICharset;
    } 	MIMECPINFO;

typedef struct tagMIMECPINFO *PMIMECPINFO;

typedef struct tagMIMECSETINFO
    {
    UINT uiCodePage;
    UINT uiInternetEncoding;
    WCHAR wszCharset[ 50 ];
    } 	MIMECSETINFO;

typedef struct tagMIMECSETINFO *PMIMECSETINFO;

typedef /* [unique] */ IEnumCodePage *LPENUMCODEPAGE;


EXTERN_C const IID IID_IEnumCodePage;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("275c23e3-3747-11d0-9fea-00aa003f8646")
    IEnumCodePage : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Clone( 
            /* [annotation][out] */ 
            __reserved  IEnumCodePage **ppEnum) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Next( 
            /* [in] */ ULONG celt,
            /* [annotation][out] */ 
            __out  PMIMECPINFO rgelt,
            /* [annotation][out] */ 
            __out_opt  ULONG *pceltFetched) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Skip( 
            /* [in] */ ULONG celt) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnumCodePageVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IEnumCodePage * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IEnumCodePage * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IEnumCodePage * This);
        
        HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IEnumCodePage * This,
            /* [annotation][out] */ 
            __reserved  IEnumCodePage **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            IEnumCodePage * This,
            /* [in] */ ULONG celt,
            /* [annotation][out] */ 
            __out  PMIMECPINFO rgelt,
            /* [annotation][out] */ 
            __out_opt  ULONG *pceltFetched);
        
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            IEnumCodePage * This);
        
        HRESULT ( STDMETHODCALLTYPE *Skip )( 
            IEnumCodePage * This,
            /* [in] */ ULONG celt);
        
        END_INTERFACE
    } IEnumCodePageVtbl;

    interface IEnumCodePage
    {
        CONST_VTBL struct IEnumCodePageVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumCodePage_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnumCodePage_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnumCodePage_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnumCodePage_Clone(This,ppEnum)	\
    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 

#define IEnumCodePage_Next(This,celt,rgelt,pceltFetched)	\
    ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) 

#define IEnumCodePage_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define IEnumCodePage_Skip(This,celt)	\
    ( (This)->lpVtbl -> Skip(This,celt) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnumCodePage_INTERFACE_DEFINED__ */


#ifndef __IEnumRfc1766_INTERFACE_DEFINED__
#define __IEnumRfc1766_INTERFACE_DEFINED__

/* interface IEnumRfc1766 */
/* [local][unique][uuid][object] */ 

#define	MAX_RFC1766_NAME	( 6 )

#define	MAX_LOCALE_NAME	( 32 )

typedef struct tagRFC1766INFO
    {
    LCID lcid;
    WCHAR wszRfc1766[ 6 ];
    WCHAR wszLocaleName[ 32 ];
    } 	RFC1766INFO;

typedef struct tagRFC1766INFO *PRFC1766INFO;

typedef /* [unique] */ IEnumRfc1766 *LPENUMRFC1766;


EXTERN_C const IID IID_IEnumRfc1766;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("3dc39d1d-c030-11d0-b81b-00c04fc9b31f")
    IEnumRfc1766 : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Clone( 
            /* [annotation][out] */ 
            __reserved  IEnumRfc1766 **ppEnum) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Next( 
            /* [in] */ ULONG celt,
            /* [annotation][out] */ 
            __out  PRFC1766INFO rgelt,
            /* [annotation][out] */ 
            __out_opt  ULONG *pceltFetched) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Skip( 
            /* [in] */ ULONG celt) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnumRfc1766Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IEnumRfc1766 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IEnumRfc1766 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IEnumRfc1766 * This);
        
        HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IEnumRfc1766 * This,
            /* [annotation][out] */ 
            __reserved  IEnumRfc1766 **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            IEnumRfc1766 * This,
            /* [in] */ ULONG celt,
            /* [annotation][out] */ 
            __out  PRFC1766INFO rgelt,
            /* [annotation][out] */ 
            __out_opt  ULONG *pceltFetched);
        
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            IEnumRfc1766 * This);
        
        HRESULT ( STDMETHODCALLTYPE *Skip )( 
            IEnumRfc1766 * This,
            /* [in] */ ULONG celt);
        
        END_INTERFACE
    } IEnumRfc1766Vtbl;

    interface IEnumRfc1766
    {
        CONST_VTBL struct IEnumRfc1766Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumRfc1766_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnumRfc1766_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnumRfc1766_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnumRfc1766_Clone(This,ppEnum)	\
    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 

#define IEnumRfc1766_Next(This,celt,rgelt,pceltFetched)	\
    ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) 

#define IEnumRfc1766_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define IEnumRfc1766_Skip(This,celt)	\
    ( (This)->lpVtbl -> Skip(This,celt) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnumRfc1766_INTERFACE_DEFINED__ */


#ifndef __IEnumScript_INTERFACE_DEFINED__
#define __IEnumScript_INTERFACE_DEFINED__

/* interface IEnumScript */
/* [local][unique][uuid][object] */ 

#define	MAX_SCRIPT_NAME	( 48 )

typedef BYTE SCRIPT_ID;

typedef __int64 SCRIPT_IDS;

typedef 
enum tagSCRIPTCONTF
    {	sidDefault	= 0,
	sidMerge	= ( sidDefault + 1 ) ,
	sidAsciiSym	= ( sidMerge + 1 ) ,
	sidAsciiLatin	= ( sidAsciiSym + 1 ) ,
	sidLatin	= ( sidAsciiLatin + 1 ) ,
	sidGreek	= ( sidLatin + 1 ) ,
	sidCyrillic	= ( sidGreek + 1 ) ,
	sidArmenian	= ( sidCyrillic + 1 ) ,
	sidHebrew	= ( sidArmenian + 1 ) ,
	sidArabic	= ( sidHebrew + 1 ) ,
	sidDevanagari	= ( sidArabic + 1 ) ,
	sidBengali	= ( sidDevanagari + 1 ) ,
	sidGurmukhi	= ( sidBengali + 1 ) ,
	sidGujarati	= ( sidGurmukhi + 1 ) ,
	sidOriya	= ( sidGujarati + 1 ) ,
	sidTamil	= ( sidOriya + 1 ) ,
	sidTelugu	= ( sidTamil + 1 ) ,
	sidKannada	= ( sidTelugu + 1 ) ,
	sidMalayalam	= ( sidKannada + 1 ) ,
	sidThai	= ( sidMalayalam + 1 ) ,
	sidLao	= ( sidThai + 1 ) ,
	sidTibetan	= ( sidLao + 1 ) ,
	sidGeorgian	= ( sidTibetan + 1 ) ,
	sidHangul	= ( sidGeorgian + 1 ) ,
	sidKana	= ( sidHangul + 1 ) ,
	sidBopomofo	= ( sidKana + 1 ) ,
	sidHan	= ( sidBopomofo + 1 ) ,
	sidEthiopic	= ( sidHan + 1 ) ,
	sidCanSyllabic	= ( sidEthiopic + 1 ) ,
	sidCherokee	= ( sidCanSyllabic + 1 ) ,
	sidYi	= ( sidCherokee + 1 ) ,
	sidBraille	= ( sidYi + 1 ) ,
	sidRunic	= ( sidBraille + 1 ) ,
	sidOgham	= ( sidRunic + 1 ) ,
	sidSinhala	= ( sidOgham + 1 ) ,
	sidSyriac	= ( sidSinhala + 1 ) ,
	sidBurmese	= ( sidSyriac + 1 ) ,
	sidKhmer	= ( sidBurmese + 1 ) ,
	sidThaana	= ( sidKhmer + 1 ) ,
	sidMongolian	= ( sidThaana + 1 ) ,
	sidUserDefined	= ( sidMongolian + 1 ) ,
	sidLim	= ( sidUserDefined + 1 ) ,
	sidFEFirst	= sidHangul,
	sidFELast	= sidHan
    } 	SCRIPTCONTF;

typedef struct tagSCRIPTINFO
    {
    SCRIPT_ID ScriptId;
    UINT uiCodePage;
    WCHAR wszDescription[ 48 ];
    WCHAR wszFixedWidthFont[ 32 ];
    WCHAR wszProportionalFont[ 32 ];
    } 	SCRIPTINFO;

typedef struct tagSCRIPTINFO *PSCRIPTINFO;

typedef /* [unique] */ IEnumScript *LPENUMScript;


EXTERN_C const IID IID_IEnumScript;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("AE5F1430-388B-11d2-8380-00C04F8F5DA1")
    IEnumScript : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Clone( 
            /* [annotation][out] */ 
            __reserved  IEnumScript **ppEnum) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Next( 
            /* [in] */ ULONG celt,
            /* [annotation][out] */ 
            __out  PSCRIPTINFO rgelt,
            /* [annotation][out] */ 
            __out_opt  ULONG *pceltFetched) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Skip( 
            /* [in] */ ULONG celt) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnumScriptVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IEnumScript * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IEnumScript * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IEnumScript * This);
        
        HRESULT ( STDMETHODCALLTYPE *Clone )( 
            IEnumScript * This,
            /* [annotation][out] */ 
            __reserved  IEnumScript **ppEnum);
        
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            IEnumScript * This,
            /* [in] */ ULONG celt,
            /* [annotation][out] */ 
            __out  PSCRIPTINFO rgelt,
            /* [annotation][out] */ 
            __out_opt  ULONG *pceltFetched);
        
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            IEnumScript * This);
        
        HRESULT ( STDMETHODCALLTYPE *Skip )( 
            IEnumScript * This,
            /* [in] */ ULONG celt);
        
        END_INTERFACE
    } IEnumScriptVtbl;

    interface IEnumScript
    {
        CONST_VTBL struct IEnumScriptVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumScript_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnumScript_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnumScript_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnumScript_Clone(This,ppEnum)	\
    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 

#define IEnumScript_Next(This,celt,rgelt,pceltFetched)	\
    ( (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched) ) 

#define IEnumScript_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define IEnumScript_Skip(This,celt)	\
    ( (This)->lpVtbl -> Skip(This,celt) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnumScript_INTERFACE_DEFINED__ */


#ifndef __IMLangConvertCharset_INTERFACE_DEFINED__
#define __IMLangConvertCharset_INTERFACE_DEFINED__

/* interface IMLangConvertCharset */
/* [local][unique][uuid][object] */ 

typedef 
enum tagMLCONVCHARF
    {	MLCONVCHARF_AUTODETECT	= 1,
	MLCONVCHARF_ENTITIZE	= 2,
	MLCONVCHARF_NCR_ENTITIZE	= 2,
	MLCONVCHARF_NAME_ENTITIZE	= 4,
	MLCONVCHARF_USEDEFCHAR	= 8,
	MLCONVCHARF_NOBESTFITCHARS	= 16,
	MLCONVCHARF_DETECTJPN	= 32
    } 	MLCONVCHAR;

typedef 
enum tagMLCPF
    {	MLDETECTF_MAILNEWS	= 0x1,
	MLDETECTF_BROWSER	= 0x2,
	MLDETECTF_VALID	= 0x4,
	MLDETECTF_VALID_NLS	= 0x8,
	MLDETECTF_PRESERVE_ORDER	= 0x10,
	MLDETECTF_PREFERRED_ONLY	= 0x20,
	MLDETECTF_FILTER_SPECIALCHAR	= 0x40,
	MLDETECTF_EURO_UTF8	= 0x80
    } 	MLCP;

typedef /* [unique] */ IMLangConvertCharset *LPMLANGCONVERTCHARSET;


EXTERN_C const IID IID_IMLangConvertCharset;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("d66d6f98-cdaa-11d0-b822-00c04fc9b31f")
    IMLangConvertCharset : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ UINT uiSrcCodePage,
            /* [in] */ UINT uiDstCodePage,
            /* [in] */ DWORD dwProperty) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSourceCodePage( 
            /* [annotation][out] */ 
            __out  UINT *puiSrcCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDestinationCodePage( 
            /* [annotation][out] */ 
            __out  UINT *puiDstCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetProperty( 
            /* [annotation][out] */ 
            __out  DWORD *pdwProperty) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DoConversion( 
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  BYTE *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount(*pcDstSize)  BYTE *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DoConversionToUnicode( 
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DoConversionFromUnicode( 
            /* [annotation][in] */ 
            __in_ecount(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangConvertCharsetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangConvertCharset * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangConvertCharset * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangConvertCharset * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IMLangConvertCharset * This,
            /* [in] */ UINT uiSrcCodePage,
            /* [in] */ UINT uiDstCodePage,
            /* [in] */ DWORD dwProperty);
        
        HRESULT ( STDMETHODCALLTYPE *GetSourceCodePage )( 
            IMLangConvertCharset * This,
            /* [annotation][out] */ 
            __out  UINT *puiSrcCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetDestinationCodePage )( 
            IMLangConvertCharset * This,
            /* [annotation][out] */ 
            __out  UINT *puiDstCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetProperty )( 
            IMLangConvertCharset * This,
            /* [annotation][out] */ 
            __out  DWORD *pdwProperty);
        
        HRESULT ( STDMETHODCALLTYPE *DoConversion )( 
            IMLangConvertCharset * This,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  BYTE *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount(*pcDstSize)  BYTE *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *DoConversionToUnicode )( 
            IMLangConvertCharset * This,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *DoConversionFromUnicode )( 
            IMLangConvertCharset * This,
            /* [annotation][in] */ 
            __in_ecount(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        END_INTERFACE
    } IMLangConvertCharsetVtbl;

    interface IMLangConvertCharset
    {
        CONST_VTBL struct IMLangConvertCharsetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangConvertCharset_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangConvertCharset_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangConvertCharset_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangConvertCharset_Initialize(This,uiSrcCodePage,uiDstCodePage,dwProperty)	\
    ( (This)->lpVtbl -> Initialize(This,uiSrcCodePage,uiDstCodePage,dwProperty) ) 

#define IMLangConvertCharset_GetSourceCodePage(This,puiSrcCodePage)	\
    ( (This)->lpVtbl -> GetSourceCodePage(This,puiSrcCodePage) ) 

#define IMLangConvertCharset_GetDestinationCodePage(This,puiDstCodePage)	\
    ( (This)->lpVtbl -> GetDestinationCodePage(This,puiDstCodePage) ) 

#define IMLangConvertCharset_GetProperty(This,pdwProperty)	\
    ( (This)->lpVtbl -> GetProperty(This,pdwProperty) ) 

#define IMLangConvertCharset_DoConversion(This,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> DoConversion(This,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMLangConvertCharset_DoConversionToUnicode(This,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> DoConversionToUnicode(This,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMLangConvertCharset_DoConversionFromUnicode(This,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> DoConversionFromUnicode(This,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangConvertCharset_INTERFACE_DEFINED__ */


EXTERN_C const CLSID CLSID_CMLangConvertCharset;

#ifdef __cplusplus

class DECLSPEC_UUID("d66d6f99-cdaa-11d0-b822-00c04fc9b31f")
CMLangConvertCharset;
#endif

#ifndef __IMultiLanguage_INTERFACE_DEFINED__
#define __IMultiLanguage_INTERFACE_DEFINED__

/* interface IMultiLanguage */
/* [local][unique][uuid][object] */ 

typedef /* [unique] */ IMultiLanguage *LPMULTILANGUAGE;


EXTERN_C const IID IID_IMultiLanguage;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("275c23e1-3747-11d0-9fea-00aa003f8646")
    IMultiLanguage : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetNumberOfCodePageInfo( 
            /* [annotation][out] */ 
            __out  UINT *pcCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCodePageInfo( 
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  PMIMECPINFO pCodePageInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFamilyCodePage( 
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  UINT *puiFamilyCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumCodePages( 
            /* [in] */ DWORD grfFlags,
            /* [annotation][out] */ 
            __deref_out  IEnumCodePage **ppEnumCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCharsetInfo( 
            /* [in] */ BSTR Charset,
            /* [annotation][out] */ 
            __out  PMIMECSETINFO pCharsetInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsConvertible( 
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertString( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  BYTE *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  BYTE *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicode( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount_opt(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicode( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount_opt(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringReset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRfc1766FromLcid( 
            /* [in] */ LCID Locale,
            /* [annotation][out] */ 
            __deref_out  BSTR *pbstrRfc1766) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLcidFromRfc1766( 
            /* [annotation][out] */ 
            __out  LCID *pLocale,
            /* [annotation][in] */ 
            __in  BSTR bstrRfc1766) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumRfc1766( 
            /* [annotation][out] */ 
            __deref_out  IEnumRfc1766 **ppEnumRfc1766) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRfc1766Info( 
            /* [in] */ LCID Locale,
            /* [annotation][out] */ 
            __out  PRFC1766INFO pRfc1766Info) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CreateConvertCharset( 
            /* [in] */ UINT uiSrcCodePage,
            /* [in] */ UINT uiDstCodePage,
            /* [in] */ DWORD dwProperty,
            /* [annotation][out] */ 
            __deref_out  IMLangConvertCharset **ppMLangConvertCharset) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiLanguageVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiLanguage * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiLanguage * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiLanguage * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumberOfCodePageInfo )( 
            IMultiLanguage * This,
            /* [annotation][out] */ 
            __out  UINT *pcCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetCodePageInfo )( 
            IMultiLanguage * This,
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  PMIMECPINFO pCodePageInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetFamilyCodePage )( 
            IMultiLanguage * This,
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  UINT *puiFamilyCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *EnumCodePages )( 
            IMultiLanguage * This,
            /* [in] */ DWORD grfFlags,
            /* [annotation][out] */ 
            __deref_out  IEnumCodePage **ppEnumCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetCharsetInfo )( 
            IMultiLanguage * This,
            /* [in] */ BSTR Charset,
            /* [annotation][out] */ 
            __out  PMIMECSETINFO pCharsetInfo);
        
        HRESULT ( STDMETHODCALLTYPE *IsConvertible )( 
            IMultiLanguage * This,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertString )( 
            IMultiLanguage * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  BYTE *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  BYTE *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringToUnicode )( 
            IMultiLanguage * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount_opt(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringFromUnicode )( 
            IMultiLanguage * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount_opt(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringReset )( 
            IMultiLanguage * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetRfc1766FromLcid )( 
            IMultiLanguage * This,
            /* [in] */ LCID Locale,
            /* [annotation][out] */ 
            __deref_out  BSTR *pbstrRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *GetLcidFromRfc1766 )( 
            IMultiLanguage * This,
            /* [annotation][out] */ 
            __out  LCID *pLocale,
            /* [annotation][in] */ 
            __in  BSTR bstrRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *EnumRfc1766 )( 
            IMultiLanguage * This,
            /* [annotation][out] */ 
            __deref_out  IEnumRfc1766 **ppEnumRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *GetRfc1766Info )( 
            IMultiLanguage * This,
            /* [in] */ LCID Locale,
            /* [annotation][out] */ 
            __out  PRFC1766INFO pRfc1766Info);
        
        HRESULT ( STDMETHODCALLTYPE *CreateConvertCharset )( 
            IMultiLanguage * This,
            /* [in] */ UINT uiSrcCodePage,
            /* [in] */ UINT uiDstCodePage,
            /* [in] */ DWORD dwProperty,
            /* [annotation][out] */ 
            __deref_out  IMLangConvertCharset **ppMLangConvertCharset);
        
        END_INTERFACE
    } IMultiLanguageVtbl;

    interface IMultiLanguage
    {
        CONST_VTBL struct IMultiLanguageVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiLanguage_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMultiLanguage_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMultiLanguage_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMultiLanguage_GetNumberOfCodePageInfo(This,pcCodePage)	\
    ( (This)->lpVtbl -> GetNumberOfCodePageInfo(This,pcCodePage) ) 

#define IMultiLanguage_GetCodePageInfo(This,uiCodePage,pCodePageInfo)	\
    ( (This)->lpVtbl -> GetCodePageInfo(This,uiCodePage,pCodePageInfo) ) 

#define IMultiLanguage_GetFamilyCodePage(This,uiCodePage,puiFamilyCodePage)	\
    ( (This)->lpVtbl -> GetFamilyCodePage(This,uiCodePage,puiFamilyCodePage) ) 

#define IMultiLanguage_EnumCodePages(This,grfFlags,ppEnumCodePage)	\
    ( (This)->lpVtbl -> EnumCodePages(This,grfFlags,ppEnumCodePage) ) 

#define IMultiLanguage_GetCharsetInfo(This,Charset,pCharsetInfo)	\
    ( (This)->lpVtbl -> GetCharsetInfo(This,Charset,pCharsetInfo) ) 

#define IMultiLanguage_IsConvertible(This,dwSrcEncoding,dwDstEncoding)	\
    ( (This)->lpVtbl -> IsConvertible(This,dwSrcEncoding,dwDstEncoding) ) 

#define IMultiLanguage_ConvertString(This,pdwMode,dwSrcEncoding,dwDstEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertString(This,pdwMode,dwSrcEncoding,dwDstEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage_ConvertStringToUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertStringToUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage_ConvertStringFromUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertStringFromUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage_ConvertStringReset(This)	\
    ( (This)->lpVtbl -> ConvertStringReset(This) ) 

#define IMultiLanguage_GetRfc1766FromLcid(This,Locale,pbstrRfc1766)	\
    ( (This)->lpVtbl -> GetRfc1766FromLcid(This,Locale,pbstrRfc1766) ) 

#define IMultiLanguage_GetLcidFromRfc1766(This,pLocale,bstrRfc1766)	\
    ( (This)->lpVtbl -> GetLcidFromRfc1766(This,pLocale,bstrRfc1766) ) 

#define IMultiLanguage_EnumRfc1766(This,ppEnumRfc1766)	\
    ( (This)->lpVtbl -> EnumRfc1766(This,ppEnumRfc1766) ) 

#define IMultiLanguage_GetRfc1766Info(This,Locale,pRfc1766Info)	\
    ( (This)->lpVtbl -> GetRfc1766Info(This,Locale,pRfc1766Info) ) 

#define IMultiLanguage_CreateConvertCharset(This,uiSrcCodePage,uiDstCodePage,dwProperty,ppMLangConvertCharset)	\
    ( (This)->lpVtbl -> CreateConvertCharset(This,uiSrcCodePage,uiDstCodePage,dwProperty,ppMLangConvertCharset) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMultiLanguage_INTERFACE_DEFINED__ */


#ifndef __IMultiLanguage2_INTERFACE_DEFINED__
#define __IMultiLanguage2_INTERFACE_DEFINED__

/* interface IMultiLanguage2 */
/* [local][unique][uuid][object] */ 

typedef /* [unique] */ IMultiLanguage2 *LPMULTILANGUAGE2;

typedef 
enum tagMLDETECTCP
    {	MLDETECTCP_NONE	= 0,
	MLDETECTCP_7BIT	= 1,
	MLDETECTCP_8BIT	= 2,
	MLDETECTCP_DBCS	= 4,
	MLDETECTCP_HTML	= 8,
	MLDETECTCP_NUMBER	= 16
    } 	MLDETECTCP;

typedef struct tagDetectEncodingInfo
    {
    UINT nLangID;
    UINT nCodePage;
    INT nDocPercent;
    INT nConfidence;
    } 	DetectEncodingInfo;

typedef struct tagDetectEncodingInfo *pDetectEncodingInfo;

typedef 
enum tagSCRIPTFONTCONTF
    {	SCRIPTCONTF_FIXED_FONT	= 0x1,
	SCRIPTCONTF_PROPORTIONAL_FONT	= 0x2,
	SCRIPTCONTF_SCRIPT_USER	= 0x10000,
	SCRIPTCONTF_SCRIPT_HIDE	= 0x20000,
	SCRIPTCONTF_SCRIPT_SYSTEM	= 0x40000
    } 	SCRIPTFONTCONTF;

typedef struct tagSCRIPFONTINFO
    {
    SCRIPT_IDS scripts;
    WCHAR wszFont[ 32 ];
    } 	SCRIPTFONTINFO;

typedef struct tagSCRIPFONTINFO *PSCRIPTFONTINFO;


EXTERN_C const IID IID_IMultiLanguage2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("DCCFC164-2B38-11d2-B7EC-00C04F8F5D9A")
    IMultiLanguage2 : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetNumberOfCodePageInfo( 
            /* [annotation][out] */ 
            __out  UINT *pcCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCodePageInfo( 
            /* [in] */ UINT uiCodePage,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __out  PMIMECPINFO pCodePageInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFamilyCodePage( 
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  UINT *puiFamilyCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumCodePages( 
            /* [in] */ DWORD grfFlags,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumCodePage **ppEnumCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCharsetInfo( 
            /* [in] */ BSTR Charset,
            /* [annotation][out] */ 
            __out  PMIMECSETINFO pCharsetInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsConvertible( 
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertString( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  BYTE *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  BYTE *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicode( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount_opt(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicode( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount_opt(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringReset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRfc1766FromLcid( 
            /* [in] */ LCID Locale,
            /* [annotation][out] */ 
            __deref_out  BSTR *pbstrRfc1766) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLcidFromRfc1766( 
            /* [annotation][out] */ 
            __out  LCID *pLocale,
            /* [annotation][in] */ 
            __in  BSTR bstrRfc1766) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumRfc1766( 
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumRfc1766 **ppEnumRfc1766) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRfc1766Info( 
            /* [in] */ LCID Locale,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __out  PRFC1766INFO pRfc1766Info) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CreateConvertCharset( 
            /* [in] */ UINT uiSrcCodePage,
            /* [in] */ UINT uiDstCodePage,
            /* [in] */ DWORD dwProperty,
            /* [annotation][out] */ 
            __deref_out  IMLangConvertCharset **ppMLangConvertCharset) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringInIStream( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in  IStream *pstmIn,
            /* [annotation][in] */ 
            __in  IStream *pstmOut) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringToUnicodeEx( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ConvertStringFromUnicodeEx( 
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DetectCodepageInIStream( 
            /* [in] */ DWORD dwFlag,
            /* [in] */ DWORD dwPrefWinCodePage,
            /* [annotation][in] */ 
            __in  IStream *pstmIn,
            /* [annotation][out] */ 
            __out  DetectEncodingInfo *lpEncoding,
            /* [annotation][out][in] */ 
            __inout  INT *pnScores) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DetectInputCodepage( 
            /* [in] */ DWORD dwFlag,
            /* [in] */ DWORD dwPrefWinCodePage,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout  INT *pcSrcSize,
            /* [annotation][out] */ 
            __out  DetectEncodingInfo *lpEncoding,
            /* [annotation][out][in] */ 
            __inout  INT *pnScores) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ValidateCodePage( 
            /* [in] */ UINT uiCodePage,
            /* [in] */ HWND hwnd) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCodePageDescription( 
            /* [in] */ UINT uiCodePage,
            /* [in] */ LCID lcid,
            /* [annotation][size_is][out] */ 
            __out_ecount(cchWideChar)  LPWSTR lpWideCharStr,
            /* [in] */ int cchWideChar) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsCodePageInstallable( 
            /* [in] */ UINT uiCodePage) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetMimeDBSource( 
            /* [in] */ MIMECONTF dwSource) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNumberOfScripts( 
            /* [annotation][out] */ 
            __out  UINT *pnScripts) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EnumScripts( 
            /* [in] */ DWORD dwFlags,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumScript **ppEnumScript) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ValidateCodePageEx( 
            /* [in] */ UINT uiCodePage,
            /* [in] */ HWND hwnd,
            /* [in] */ DWORD dwfIODControl) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiLanguage2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiLanguage2 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiLanguage2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiLanguage2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumberOfCodePageInfo )( 
            IMultiLanguage2 * This,
            /* [annotation][out] */ 
            __out  UINT *pcCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetCodePageInfo )( 
            IMultiLanguage2 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __out  PMIMECPINFO pCodePageInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetFamilyCodePage )( 
            IMultiLanguage2 * This,
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  UINT *puiFamilyCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *EnumCodePages )( 
            IMultiLanguage2 * This,
            /* [in] */ DWORD grfFlags,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumCodePage **ppEnumCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetCharsetInfo )( 
            IMultiLanguage2 * This,
            /* [in] */ BSTR Charset,
            /* [annotation][out] */ 
            __out  PMIMECSETINFO pCharsetInfo);
        
        HRESULT ( STDMETHODCALLTYPE *IsConvertible )( 
            IMultiLanguage2 * This,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertString )( 
            IMultiLanguage2 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  BYTE *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  BYTE *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringToUnicode )( 
            IMultiLanguage2 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount_opt(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringFromUnicode )( 
            IMultiLanguage2 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount_opt(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringReset )( 
            IMultiLanguage2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetRfc1766FromLcid )( 
            IMultiLanguage2 * This,
            /* [in] */ LCID Locale,
            /* [annotation][out] */ 
            __deref_out  BSTR *pbstrRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *GetLcidFromRfc1766 )( 
            IMultiLanguage2 * This,
            /* [annotation][out] */ 
            __out  LCID *pLocale,
            /* [annotation][in] */ 
            __in  BSTR bstrRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *EnumRfc1766 )( 
            IMultiLanguage2 * This,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumRfc1766 **ppEnumRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *GetRfc1766Info )( 
            IMultiLanguage2 * This,
            /* [in] */ LCID Locale,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __out  PRFC1766INFO pRfc1766Info);
        
        HRESULT ( STDMETHODCALLTYPE *CreateConvertCharset )( 
            IMultiLanguage2 * This,
            /* [in] */ UINT uiSrcCodePage,
            /* [in] */ UINT uiDstCodePage,
            /* [in] */ DWORD dwProperty,
            /* [annotation][out] */ 
            __deref_out  IMLangConvertCharset **ppMLangConvertCharset);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringInIStream )( 
            IMultiLanguage2 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in  IStream *pstmIn,
            /* [annotation][in] */ 
            __in  IStream *pstmOut);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringToUnicodeEx )( 
            IMultiLanguage2 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringFromUnicodeEx )( 
            IMultiLanguage2 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack);
        
        HRESULT ( STDMETHODCALLTYPE *DetectCodepageInIStream )( 
            IMultiLanguage2 * This,
            /* [in] */ DWORD dwFlag,
            /* [in] */ DWORD dwPrefWinCodePage,
            /* [annotation][in] */ 
            __in  IStream *pstmIn,
            /* [annotation][out] */ 
            __out  DetectEncodingInfo *lpEncoding,
            /* [annotation][out][in] */ 
            __inout  INT *pnScores);
        
        HRESULT ( STDMETHODCALLTYPE *DetectInputCodepage )( 
            IMultiLanguage2 * This,
            /* [in] */ DWORD dwFlag,
            /* [in] */ DWORD dwPrefWinCodePage,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout  INT *pcSrcSize,
            /* [annotation][out] */ 
            __out  DetectEncodingInfo *lpEncoding,
            /* [annotation][out][in] */ 
            __inout  INT *pnScores);
        
        HRESULT ( STDMETHODCALLTYPE *ValidateCodePage )( 
            IMultiLanguage2 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ HWND hwnd);
        
        HRESULT ( STDMETHODCALLTYPE *GetCodePageDescription )( 
            IMultiLanguage2 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ LCID lcid,
            /* [annotation][size_is][out] */ 
            __out_ecount(cchWideChar)  LPWSTR lpWideCharStr,
            /* [in] */ int cchWideChar);
        
        HRESULT ( STDMETHODCALLTYPE *IsCodePageInstallable )( 
            IMultiLanguage2 * This,
            /* [in] */ UINT uiCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *SetMimeDBSource )( 
            IMultiLanguage2 * This,
            /* [in] */ MIMECONTF dwSource);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumberOfScripts )( 
            IMultiLanguage2 * This,
            /* [annotation][out] */ 
            __out  UINT *pnScripts);
        
        HRESULT ( STDMETHODCALLTYPE *EnumScripts )( 
            IMultiLanguage2 * This,
            /* [in] */ DWORD dwFlags,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumScript **ppEnumScript);
        
        HRESULT ( STDMETHODCALLTYPE *ValidateCodePageEx )( 
            IMultiLanguage2 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ HWND hwnd,
            /* [in] */ DWORD dwfIODControl);
        
        END_INTERFACE
    } IMultiLanguage2Vtbl;

    interface IMultiLanguage2
    {
        CONST_VTBL struct IMultiLanguage2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiLanguage2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMultiLanguage2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMultiLanguage2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMultiLanguage2_GetNumberOfCodePageInfo(This,pcCodePage)	\
    ( (This)->lpVtbl -> GetNumberOfCodePageInfo(This,pcCodePage) ) 

#define IMultiLanguage2_GetCodePageInfo(This,uiCodePage,LangId,pCodePageInfo)	\
    ( (This)->lpVtbl -> GetCodePageInfo(This,uiCodePage,LangId,pCodePageInfo) ) 

#define IMultiLanguage2_GetFamilyCodePage(This,uiCodePage,puiFamilyCodePage)	\
    ( (This)->lpVtbl -> GetFamilyCodePage(This,uiCodePage,puiFamilyCodePage) ) 

#define IMultiLanguage2_EnumCodePages(This,grfFlags,LangId,ppEnumCodePage)	\
    ( (This)->lpVtbl -> EnumCodePages(This,grfFlags,LangId,ppEnumCodePage) ) 

#define IMultiLanguage2_GetCharsetInfo(This,Charset,pCharsetInfo)	\
    ( (This)->lpVtbl -> GetCharsetInfo(This,Charset,pCharsetInfo) ) 

#define IMultiLanguage2_IsConvertible(This,dwSrcEncoding,dwDstEncoding)	\
    ( (This)->lpVtbl -> IsConvertible(This,dwSrcEncoding,dwDstEncoding) ) 

#define IMultiLanguage2_ConvertString(This,pdwMode,dwSrcEncoding,dwDstEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertString(This,pdwMode,dwSrcEncoding,dwDstEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage2_ConvertStringToUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertStringToUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage2_ConvertStringFromUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertStringFromUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage2_ConvertStringReset(This)	\
    ( (This)->lpVtbl -> ConvertStringReset(This) ) 

#define IMultiLanguage2_GetRfc1766FromLcid(This,Locale,pbstrRfc1766)	\
    ( (This)->lpVtbl -> GetRfc1766FromLcid(This,Locale,pbstrRfc1766) ) 

#define IMultiLanguage2_GetLcidFromRfc1766(This,pLocale,bstrRfc1766)	\
    ( (This)->lpVtbl -> GetLcidFromRfc1766(This,pLocale,bstrRfc1766) ) 

#define IMultiLanguage2_EnumRfc1766(This,LangId,ppEnumRfc1766)	\
    ( (This)->lpVtbl -> EnumRfc1766(This,LangId,ppEnumRfc1766) ) 

#define IMultiLanguage2_GetRfc1766Info(This,Locale,LangId,pRfc1766Info)	\
    ( (This)->lpVtbl -> GetRfc1766Info(This,Locale,LangId,pRfc1766Info) ) 

#define IMultiLanguage2_CreateConvertCharset(This,uiSrcCodePage,uiDstCodePage,dwProperty,ppMLangConvertCharset)	\
    ( (This)->lpVtbl -> CreateConvertCharset(This,uiSrcCodePage,uiDstCodePage,dwProperty,ppMLangConvertCharset) ) 

#define IMultiLanguage2_ConvertStringInIStream(This,pdwMode,dwFlag,lpFallBack,dwSrcEncoding,dwDstEncoding,pstmIn,pstmOut)	\
    ( (This)->lpVtbl -> ConvertStringInIStream(This,pdwMode,dwFlag,lpFallBack,dwSrcEncoding,dwDstEncoding,pstmIn,pstmOut) ) 

#define IMultiLanguage2_ConvertStringToUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack)	\
    ( (This)->lpVtbl -> ConvertStringToUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack) ) 

#define IMultiLanguage2_ConvertStringFromUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack)	\
    ( (This)->lpVtbl -> ConvertStringFromUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack) ) 

#define IMultiLanguage2_DetectCodepageInIStream(This,dwFlag,dwPrefWinCodePage,pstmIn,lpEncoding,pnScores)	\
    ( (This)->lpVtbl -> DetectCodepageInIStream(This,dwFlag,dwPrefWinCodePage,pstmIn,lpEncoding,pnScores) ) 

#define IMultiLanguage2_DetectInputCodepage(This,dwFlag,dwPrefWinCodePage,pSrcStr,pcSrcSize,lpEncoding,pnScores)	\
    ( (This)->lpVtbl -> DetectInputCodepage(This,dwFlag,dwPrefWinCodePage,pSrcStr,pcSrcSize,lpEncoding,pnScores) ) 

#define IMultiLanguage2_ValidateCodePage(This,uiCodePage,hwnd)	\
    ( (This)->lpVtbl -> ValidateCodePage(This,uiCodePage,hwnd) ) 

#define IMultiLanguage2_GetCodePageDescription(This,uiCodePage,lcid,lpWideCharStr,cchWideChar)	\
    ( (This)->lpVtbl -> GetCodePageDescription(This,uiCodePage,lcid,lpWideCharStr,cchWideChar) ) 

#define IMultiLanguage2_IsCodePageInstallable(This,uiCodePage)	\
    ( (This)->lpVtbl -> IsCodePageInstallable(This,uiCodePage) ) 

#define IMultiLanguage2_SetMimeDBSource(This,dwSource)	\
    ( (This)->lpVtbl -> SetMimeDBSource(This,dwSource) ) 

#define IMultiLanguage2_GetNumberOfScripts(This,pnScripts)	\
    ( (This)->lpVtbl -> GetNumberOfScripts(This,pnScripts) ) 

#define IMultiLanguage2_EnumScripts(This,dwFlags,LangId,ppEnumScript)	\
    ( (This)->lpVtbl -> EnumScripts(This,dwFlags,LangId,ppEnumScript) ) 

#define IMultiLanguage2_ValidateCodePageEx(This,uiCodePage,hwnd,dwfIODControl)	\
    ( (This)->lpVtbl -> ValidateCodePageEx(This,uiCodePage,hwnd,dwfIODControl) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMultiLanguage2_INTERFACE_DEFINED__ */


#ifndef __IMLangCodePages_INTERFACE_DEFINED__
#define __IMLangCodePages_INTERFACE_DEFINED__

/* interface IMLangCodePages */
/* [object][local][unique][helpstring][uuid] */ 

typedef /* [unique] */ IMLangCodePages *PMLANGCODEPAGES;


EXTERN_C const IID IID_IMLangCodePages;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("359F3443-BD4A-11D0-B188-00AA0038C969")
    IMLangCodePages : public IUnknown
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCharCodePages( 
            /* [in] */ WCHAR chSrc,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetStrCodePages( 
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const WCHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ DWORD dwPriorityCodePages,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages,
            /* [annotation][out] */ 
            __out_opt  long *pcchCodePages) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CodePageToCodePages( 
            /* [in] */ UINT uCodePage,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CodePagesToCodePage( 
            /* [in] */ DWORD dwCodePages,
            /* [in] */ UINT uDefaultCodePage,
            /* [annotation][out] */ 
            __out  UINT *puCodePage) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangCodePagesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangCodePages * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangCodePages * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangCodePages * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCharCodePages )( 
            IMLangCodePages * This,
            /* [in] */ WCHAR chSrc,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStrCodePages )( 
            IMLangCodePages * This,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const WCHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ DWORD dwPriorityCodePages,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages,
            /* [annotation][out] */ 
            __out_opt  long *pcchCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CodePageToCodePages )( 
            IMLangCodePages * This,
            /* [in] */ UINT uCodePage,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CodePagesToCodePage )( 
            IMLangCodePages * This,
            /* [in] */ DWORD dwCodePages,
            /* [in] */ UINT uDefaultCodePage,
            /* [annotation][out] */ 
            __out  UINT *puCodePage);
        
        END_INTERFACE
    } IMLangCodePagesVtbl;

    interface IMLangCodePages
    {
        CONST_VTBL struct IMLangCodePagesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangCodePages_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangCodePages_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangCodePages_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangCodePages_GetCharCodePages(This,chSrc,pdwCodePages)	\
    ( (This)->lpVtbl -> GetCharCodePages(This,chSrc,pdwCodePages) ) 

#define IMLangCodePages_GetStrCodePages(This,pszSrc,cchSrc,dwPriorityCodePages,pdwCodePages,pcchCodePages)	\
    ( (This)->lpVtbl -> GetStrCodePages(This,pszSrc,cchSrc,dwPriorityCodePages,pdwCodePages,pcchCodePages) ) 

#define IMLangCodePages_CodePageToCodePages(This,uCodePage,pdwCodePages)	\
    ( (This)->lpVtbl -> CodePageToCodePages(This,uCodePage,pdwCodePages) ) 

#define IMLangCodePages_CodePagesToCodePage(This,dwCodePages,uDefaultCodePage,puCodePage)	\
    ( (This)->lpVtbl -> CodePagesToCodePage(This,dwCodePages,uDefaultCodePage,puCodePage) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangCodePages_INTERFACE_DEFINED__ */


#ifndef __IMLangFontLink_INTERFACE_DEFINED__
#define __IMLangFontLink_INTERFACE_DEFINED__

/* interface IMLangFontLink */
/* [object][local][unique][helpstring][uuid] */ 

typedef /* [unique] */ IMLangFontLink *PMLANGFONTLINK;


EXTERN_C const IID IID_IMLangFontLink;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("359F3441-BD4A-11D0-B188-00AA0038C969")
    IMLangFontLink : public IMLangCodePages
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetFontCodePages( 
            /* [in] */ HDC hDC,
            /* [in] */ HFONT hFont,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE MapFont( 
            /* [in] */ HDC hDC,
            /* [in] */ DWORD dwCodePages,
            /* [in] */ HFONT hSrcFont,
            /* [annotation][out] */ 
            __out_opt  HFONT *phDestFont) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ReleaseFont( 
            /* [in] */ HFONT hFont) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ResetFontMapping( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangFontLinkVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangFontLink * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangFontLink * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangFontLink * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCharCodePages )( 
            IMLangFontLink * This,
            /* [in] */ WCHAR chSrc,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStrCodePages )( 
            IMLangFontLink * This,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const WCHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ DWORD dwPriorityCodePages,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages,
            /* [annotation][out] */ 
            __out_opt  long *pcchCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CodePageToCodePages )( 
            IMLangFontLink * This,
            /* [in] */ UINT uCodePage,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CodePagesToCodePage )( 
            IMLangFontLink * This,
            /* [in] */ DWORD dwCodePages,
            /* [in] */ UINT uDefaultCodePage,
            /* [annotation][out] */ 
            __out  UINT *puCodePage);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetFontCodePages )( 
            IMLangFontLink * This,
            /* [in] */ HDC hDC,
            /* [in] */ HFONT hFont,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *MapFont )( 
            IMLangFontLink * This,
            /* [in] */ HDC hDC,
            /* [in] */ DWORD dwCodePages,
            /* [in] */ HFONT hSrcFont,
            /* [annotation][out] */ 
            __out_opt  HFONT *phDestFont);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ReleaseFont )( 
            IMLangFontLink * This,
            /* [in] */ HFONT hFont);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ResetFontMapping )( 
            IMLangFontLink * This);
        
        END_INTERFACE
    } IMLangFontLinkVtbl;

    interface IMLangFontLink
    {
        CONST_VTBL struct IMLangFontLinkVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangFontLink_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangFontLink_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangFontLink_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangFontLink_GetCharCodePages(This,chSrc,pdwCodePages)	\
    ( (This)->lpVtbl -> GetCharCodePages(This,chSrc,pdwCodePages) ) 

#define IMLangFontLink_GetStrCodePages(This,pszSrc,cchSrc,dwPriorityCodePages,pdwCodePages,pcchCodePages)	\
    ( (This)->lpVtbl -> GetStrCodePages(This,pszSrc,cchSrc,dwPriorityCodePages,pdwCodePages,pcchCodePages) ) 

#define IMLangFontLink_CodePageToCodePages(This,uCodePage,pdwCodePages)	\
    ( (This)->lpVtbl -> CodePageToCodePages(This,uCodePage,pdwCodePages) ) 

#define IMLangFontLink_CodePagesToCodePage(This,dwCodePages,uDefaultCodePage,puCodePage)	\
    ( (This)->lpVtbl -> CodePagesToCodePage(This,dwCodePages,uDefaultCodePage,puCodePage) ) 


#define IMLangFontLink_GetFontCodePages(This,hDC,hFont,pdwCodePages)	\
    ( (This)->lpVtbl -> GetFontCodePages(This,hDC,hFont,pdwCodePages) ) 

#define IMLangFontLink_MapFont(This,hDC,dwCodePages,hSrcFont,phDestFont)	\
    ( (This)->lpVtbl -> MapFont(This,hDC,dwCodePages,hSrcFont,phDestFont) ) 

#define IMLangFontLink_ReleaseFont(This,hFont)	\
    ( (This)->lpVtbl -> ReleaseFont(This,hFont) ) 

#define IMLangFontLink_ResetFontMapping(This)	\
    ( (This)->lpVtbl -> ResetFontMapping(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangFontLink_INTERFACE_DEFINED__ */


#ifndef __IMLangFontLink2_INTERFACE_DEFINED__
#define __IMLangFontLink2_INTERFACE_DEFINED__

/* interface IMLangFontLink2 */
/* [object][local][unique][helpstring][uuid] */ 

typedef struct tagUNICODERANGE
    {
    WCHAR wcFrom;
    WCHAR wcTo;
    } 	UNICODERANGE;

typedef /* [unique] */ IMLangFontLink2 *PMLANGFONTLINK2;


EXTERN_C const IID IID_IMLangFontLink2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("DCCFC162-2B38-11d2-B7EC-00C04F8F5D9A")
    IMLangFontLink2 : public IMLangCodePages
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetFontCodePages( 
            /* [in] */ HDC hDC,
            /* [in] */ HFONT hFont,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ReleaseFont( 
            /* [in] */ HFONT hFont) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE ResetFontMapping( void) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE MapFont( 
            /* [in] */ HDC hDC,
            /* [in] */ DWORD dwCodePages,
            /* [in] */ WCHAR chSrc,
            /* [annotation][out] */ 
            __out_opt  HFONT *pFont) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetFontUnicodeRanges( 
            /* [in] */ HDC hDC,
            /* [annotation][out][in] */ 
            __in  UINT *puiRanges,
            /* [annotation][out] */ 
            __out_opt  UNICODERANGE *pUranges) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetScriptFontInfo( 
            /* [in] */ SCRIPT_ID sid,
            /* [in] */ DWORD dwFlags,
            /* [annotation][out][in] */ 
            __inout  UINT *puiFonts,
            /* [annotation][out] */ 
            __out_opt  SCRIPTFONTINFO *pScriptFont) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CodePageToScriptID( 
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  SCRIPT_ID *pSid) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMLangFontLink2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMLangFontLink2 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMLangFontLink2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMLangFontLink2 * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCharCodePages )( 
            IMLangFontLink2 * This,
            /* [in] */ WCHAR chSrc,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetStrCodePages )( 
            IMLangFontLink2 * This,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchSrc)  const WCHAR *pszSrc,
            /* [in] */ long cchSrc,
            /* [in] */ DWORD dwPriorityCodePages,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages,
            /* [annotation][out] */ 
            __out_opt  long *pcchCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CodePageToCodePages )( 
            IMLangFontLink2 * This,
            /* [in] */ UINT uCodePage,
            /* [annotation][out] */ 
            __out  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CodePagesToCodePage )( 
            IMLangFontLink2 * This,
            /* [in] */ DWORD dwCodePages,
            /* [in] */ UINT uDefaultCodePage,
            /* [annotation][out] */ 
            __out  UINT *puCodePage);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetFontCodePages )( 
            IMLangFontLink2 * This,
            /* [in] */ HDC hDC,
            /* [in] */ HFONT hFont,
            /* [annotation][out] */ 
            __out_opt  DWORD *pdwCodePages);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ReleaseFont )( 
            IMLangFontLink2 * This,
            /* [in] */ HFONT hFont);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *ResetFontMapping )( 
            IMLangFontLink2 * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *MapFont )( 
            IMLangFontLink2 * This,
            /* [in] */ HDC hDC,
            /* [in] */ DWORD dwCodePages,
            /* [in] */ WCHAR chSrc,
            /* [annotation][out] */ 
            __out_opt  HFONT *pFont);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetFontUnicodeRanges )( 
            IMLangFontLink2 * This,
            /* [in] */ HDC hDC,
            /* [annotation][out][in] */ 
            __in  UINT *puiRanges,
            /* [annotation][out] */ 
            __out_opt  UNICODERANGE *pUranges);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetScriptFontInfo )( 
            IMLangFontLink2 * This,
            /* [in] */ SCRIPT_ID sid,
            /* [in] */ DWORD dwFlags,
            /* [annotation][out][in] */ 
            __inout  UINT *puiFonts,
            /* [annotation][out] */ 
            __out_opt  SCRIPTFONTINFO *pScriptFont);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CodePageToScriptID )( 
            IMLangFontLink2 * This,
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  SCRIPT_ID *pSid);
        
        END_INTERFACE
    } IMLangFontLink2Vtbl;

    interface IMLangFontLink2
    {
        CONST_VTBL struct IMLangFontLink2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMLangFontLink2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMLangFontLink2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMLangFontLink2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMLangFontLink2_GetCharCodePages(This,chSrc,pdwCodePages)	\
    ( (This)->lpVtbl -> GetCharCodePages(This,chSrc,pdwCodePages) ) 

#define IMLangFontLink2_GetStrCodePages(This,pszSrc,cchSrc,dwPriorityCodePages,pdwCodePages,pcchCodePages)	\
    ( (This)->lpVtbl -> GetStrCodePages(This,pszSrc,cchSrc,dwPriorityCodePages,pdwCodePages,pcchCodePages) ) 

#define IMLangFontLink2_CodePageToCodePages(This,uCodePage,pdwCodePages)	\
    ( (This)->lpVtbl -> CodePageToCodePages(This,uCodePage,pdwCodePages) ) 

#define IMLangFontLink2_CodePagesToCodePage(This,dwCodePages,uDefaultCodePage,puCodePage)	\
    ( (This)->lpVtbl -> CodePagesToCodePage(This,dwCodePages,uDefaultCodePage,puCodePage) ) 


#define IMLangFontLink2_GetFontCodePages(This,hDC,hFont,pdwCodePages)	\
    ( (This)->lpVtbl -> GetFontCodePages(This,hDC,hFont,pdwCodePages) ) 

#define IMLangFontLink2_ReleaseFont(This,hFont)	\
    ( (This)->lpVtbl -> ReleaseFont(This,hFont) ) 

#define IMLangFontLink2_ResetFontMapping(This)	\
    ( (This)->lpVtbl -> ResetFontMapping(This) ) 

#define IMLangFontLink2_MapFont(This,hDC,dwCodePages,chSrc,pFont)	\
    ( (This)->lpVtbl -> MapFont(This,hDC,dwCodePages,chSrc,pFont) ) 

#define IMLangFontLink2_GetFontUnicodeRanges(This,hDC,puiRanges,pUranges)	\
    ( (This)->lpVtbl -> GetFontUnicodeRanges(This,hDC,puiRanges,pUranges) ) 

#define IMLangFontLink2_GetScriptFontInfo(This,sid,dwFlags,puiFonts,pScriptFont)	\
    ( (This)->lpVtbl -> GetScriptFontInfo(This,sid,dwFlags,puiFonts,pScriptFont) ) 

#define IMLangFontLink2_CodePageToScriptID(This,uiCodePage,pSid)	\
    ( (This)->lpVtbl -> CodePageToScriptID(This,uiCodePage,pSid) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMLangFontLink2_INTERFACE_DEFINED__ */


#ifndef __IMultiLanguage3_INTERFACE_DEFINED__
#define __IMultiLanguage3_INTERFACE_DEFINED__

/* interface IMultiLanguage3 */
/* [local][unique][uuid][object] */ 

typedef /* [unique] */ IMultiLanguage3 *LPMULTILANGUAGE3;


EXTERN_C const IID IID_IMultiLanguage3;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("4e5868ab-b157-4623-9acc-6a1d9caebe04")
    IMultiLanguage3 : public IMultiLanguage2
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE DetectOutboundCodePage( 
            /* [in] */ DWORD dwFlags,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchWideChar)  LPCWSTR lpWideCharStr,
            /* [in] */ UINT cchWideChar,
            /* [annotation][size_is][in] */ 
            __in_ecount_opt(nPreferredCodePages)  const UINT *puiPreferredCodePages,
            /* [in] */ UINT nPreferredCodePages,
            /* [annotation][size_is][out] */ 
            __out_ecount_part(*pnDetectedCodePages, *pnDetectedCodePages)  UINT *puiDetectedCodePages,
            /* [annotation][out][in] */ 
            __inout  UINT *pnDetectedCodePages,
            /* [annotation][string][unique][in] */ 
            __in_opt  LPCWSTR lpSpecialChar) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DetectOutboundCodePageInIStream( 
            /* [in] */ DWORD dwFlags,
            /* [annotation][in] */ 
            __in  IStream *pStrIn,
            /* [annotation][size_is][in] */ 
            __in_ecount_opt(nPreferredCodePages)  const UINT *puiPreferredCodePages,
            /* [in] */ UINT nPreferredCodePages,
            /* [annotation][size_is][out] */ 
            __out_ecount_part(*pnDetectedCodePages, *pnDetectedCodePages)  UINT *puiDetectedCodePages,
            /* [annotation][out][in] */ 
            __inout  UINT *pnDetectedCodePages,
            /* [annotation][string][unique][in] */ 
            __in_opt  LPCWSTR lpSpecialChar) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IMultiLanguage3Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IMultiLanguage3 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IMultiLanguage3 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IMultiLanguage3 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumberOfCodePageInfo )( 
            IMultiLanguage3 * This,
            /* [annotation][out] */ 
            __out  UINT *pcCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetCodePageInfo )( 
            IMultiLanguage3 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __out  PMIMECPINFO pCodePageInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetFamilyCodePage )( 
            IMultiLanguage3 * This,
            /* [in] */ UINT uiCodePage,
            /* [annotation][out] */ 
            __out  UINT *puiFamilyCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *EnumCodePages )( 
            IMultiLanguage3 * This,
            /* [in] */ DWORD grfFlags,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumCodePage **ppEnumCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *GetCharsetInfo )( 
            IMultiLanguage3 * This,
            /* [in] */ BSTR Charset,
            /* [annotation][out] */ 
            __out  PMIMECSETINFO pCharsetInfo);
        
        HRESULT ( STDMETHODCALLTYPE *IsConvertible )( 
            IMultiLanguage3 * This,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertString )( 
            IMultiLanguage3 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  BYTE *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  BYTE *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringToUnicode )( 
            IMultiLanguage3 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount_opt(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount_opt(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringFromUnicode )( 
            IMultiLanguage3 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount_opt(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount_opt(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringReset )( 
            IMultiLanguage3 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetRfc1766FromLcid )( 
            IMultiLanguage3 * This,
            /* [in] */ LCID Locale,
            /* [annotation][out] */ 
            __deref_out  BSTR *pbstrRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *GetLcidFromRfc1766 )( 
            IMultiLanguage3 * This,
            /* [annotation][out] */ 
            __out  LCID *pLocale,
            /* [annotation][in] */ 
            __in  BSTR bstrRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *EnumRfc1766 )( 
            IMultiLanguage3 * This,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumRfc1766 **ppEnumRfc1766);
        
        HRESULT ( STDMETHODCALLTYPE *GetRfc1766Info )( 
            IMultiLanguage3 * This,
            /* [in] */ LCID Locale,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __out  PRFC1766INFO pRfc1766Info);
        
        HRESULT ( STDMETHODCALLTYPE *CreateConvertCharset )( 
            IMultiLanguage3 * This,
            /* [in] */ UINT uiSrcCodePage,
            /* [in] */ UINT uiDstCodePage,
            /* [in] */ DWORD dwProperty,
            /* [annotation][out] */ 
            __deref_out  IMLangConvertCharset **ppMLangConvertCharset);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringInIStream )( 
            IMultiLanguage3 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack,
            /* [in] */ DWORD dwSrcEncoding,
            /* [in] */ DWORD dwDstEncoding,
            /* [annotation][in] */ 
            __in  IStream *pstmIn,
            /* [annotation][in] */ 
            __in  IStream *pstmOut);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringToUnicodeEx )( 
            IMultiLanguage3 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_ecount(*pcDstSize)  WCHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack);
        
        HRESULT ( STDMETHODCALLTYPE *ConvertStringFromUnicodeEx )( 
            IMultiLanguage3 * This,
            /* [annotation][out][in] */ 
            __inout_opt  DWORD *pdwMode,
            /* [in] */ DWORD dwEncoding,
            /* [annotation][in] */ 
            __in_ecount(*pcSrcSize)  WCHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcSrcSize,
            /* [annotation][out] */ 
            __out_bcount(*pcDstSize)  CHAR *pDstStr,
            /* [annotation][out][in] */ 
            __inout_opt  UINT *pcDstSize,
            /* [in] */ DWORD dwFlag,
            /* [annotation][in] */ 
            __in_opt  WCHAR *lpFallBack);
        
        HRESULT ( STDMETHODCALLTYPE *DetectCodepageInIStream )( 
            IMultiLanguage3 * This,
            /* [in] */ DWORD dwFlag,
            /* [in] */ DWORD dwPrefWinCodePage,
            /* [annotation][in] */ 
            __in  IStream *pstmIn,
            /* [annotation][out] */ 
            __out  DetectEncodingInfo *lpEncoding,
            /* [annotation][out][in] */ 
            __inout  INT *pnScores);
        
        HRESULT ( STDMETHODCALLTYPE *DetectInputCodepage )( 
            IMultiLanguage3 * This,
            /* [in] */ DWORD dwFlag,
            /* [in] */ DWORD dwPrefWinCodePage,
            /* [annotation][in] */ 
            __in_bcount(*pcSrcSize)  CHAR *pSrcStr,
            /* [annotation][out][in] */ 
            __inout  INT *pcSrcSize,
            /* [annotation][out] */ 
            __out  DetectEncodingInfo *lpEncoding,
            /* [annotation][out][in] */ 
            __inout  INT *pnScores);
        
        HRESULT ( STDMETHODCALLTYPE *ValidateCodePage )( 
            IMultiLanguage3 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ HWND hwnd);
        
        HRESULT ( STDMETHODCALLTYPE *GetCodePageDescription )( 
            IMultiLanguage3 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ LCID lcid,
            /* [annotation][size_is][out] */ 
            __out_ecount(cchWideChar)  LPWSTR lpWideCharStr,
            /* [in] */ int cchWideChar);
        
        HRESULT ( STDMETHODCALLTYPE *IsCodePageInstallable )( 
            IMultiLanguage3 * This,
            /* [in] */ UINT uiCodePage);
        
        HRESULT ( STDMETHODCALLTYPE *SetMimeDBSource )( 
            IMultiLanguage3 * This,
            /* [in] */ MIMECONTF dwSource);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumberOfScripts )( 
            IMultiLanguage3 * This,
            /* [annotation][out] */ 
            __out  UINT *pnScripts);
        
        HRESULT ( STDMETHODCALLTYPE *EnumScripts )( 
            IMultiLanguage3 * This,
            /* [in] */ DWORD dwFlags,
            /* [in] */ LANGID LangId,
            /* [annotation][out] */ 
            __deref_out  IEnumScript **ppEnumScript);
        
        HRESULT ( STDMETHODCALLTYPE *ValidateCodePageEx )( 
            IMultiLanguage3 * This,
            /* [in] */ UINT uiCodePage,
            /* [in] */ HWND hwnd,
            /* [in] */ DWORD dwfIODControl);
        
        HRESULT ( STDMETHODCALLTYPE *DetectOutboundCodePage )( 
            IMultiLanguage3 * This,
            /* [in] */ DWORD dwFlags,
            /* [annotation][size_is][in] */ 
            __in_ecount(cchWideChar)  LPCWSTR lpWideCharStr,
            /* [in] */ UINT cchWideChar,
            /* [annotation][size_is][in] */ 
            __in_ecount_opt(nPreferredCodePages)  const UINT *puiPreferredCodePages,
            /* [in] */ UINT nPreferredCodePages,
            /* [annotation][size_is][out] */ 
            __out_ecount_part(*pnDetectedCodePages, *pnDetectedCodePages)  UINT *puiDetectedCodePages,
            /* [annotation][out][in] */ 
            __inout  UINT *pnDetectedCodePages,
            /* [annotation][string][unique][in] */ 
            __in_opt  LPCWSTR lpSpecialChar);
        
        HRESULT ( STDMETHODCALLTYPE *DetectOutboundCodePageInIStream )( 
            IMultiLanguage3 * This,
            /* [in] */ DWORD dwFlags,
            /* [annotation][in] */ 
            __in  IStream *pStrIn,
            /* [annotation][size_is][in] */ 
            __in_ecount_opt(nPreferredCodePages)  const UINT *puiPreferredCodePages,
            /* [in] */ UINT nPreferredCodePages,
            /* [annotation][size_is][out] */ 
            __out_ecount_part(*pnDetectedCodePages, *pnDetectedCodePages)  UINT *puiDetectedCodePages,
            /* [annotation][out][in] */ 
            __inout  UINT *pnDetectedCodePages,
            /* [annotation][string][unique][in] */ 
            __in_opt  LPCWSTR lpSpecialChar);
        
        END_INTERFACE
    } IMultiLanguage3Vtbl;

    interface IMultiLanguage3
    {
        CONST_VTBL struct IMultiLanguage3Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IMultiLanguage3_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IMultiLanguage3_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IMultiLanguage3_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IMultiLanguage3_GetNumberOfCodePageInfo(This,pcCodePage)	\
    ( (This)->lpVtbl -> GetNumberOfCodePageInfo(This,pcCodePage) ) 

#define IMultiLanguage3_GetCodePageInfo(This,uiCodePage,LangId,pCodePageInfo)	\
    ( (This)->lpVtbl -> GetCodePageInfo(This,uiCodePage,LangId,pCodePageInfo) ) 

#define IMultiLanguage3_GetFamilyCodePage(This,uiCodePage,puiFamilyCodePage)	\
    ( (This)->lpVtbl -> GetFamilyCodePage(This,uiCodePage,puiFamilyCodePage) ) 

#define IMultiLanguage3_EnumCodePages(This,grfFlags,LangId,ppEnumCodePage)	\
    ( (This)->lpVtbl -> EnumCodePages(This,grfFlags,LangId,ppEnumCodePage) ) 

#define IMultiLanguage3_GetCharsetInfo(This,Charset,pCharsetInfo)	\
    ( (This)->lpVtbl -> GetCharsetInfo(This,Charset,pCharsetInfo) ) 

#define IMultiLanguage3_IsConvertible(This,dwSrcEncoding,dwDstEncoding)	\
    ( (This)->lpVtbl -> IsConvertible(This,dwSrcEncoding,dwDstEncoding) ) 

#define IMultiLanguage3_ConvertString(This,pdwMode,dwSrcEncoding,dwDstEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertString(This,pdwMode,dwSrcEncoding,dwDstEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage3_ConvertStringToUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertStringToUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage3_ConvertStringFromUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize)	\
    ( (This)->lpVtbl -> ConvertStringFromUnicode(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize) ) 

#define IMultiLanguage3_ConvertStringReset(This)	\
    ( (This)->lpVtbl -> ConvertStringReset(This) ) 

#define IMultiLanguage3_GetRfc1766FromLcid(This,Locale,pbstrRfc1766)	\
    ( (This)->lpVtbl -> GetRfc1766FromLcid(This,Locale,pbstrRfc1766) ) 

#define IMultiLanguage3_GetLcidFromRfc1766(This,pLocale,bstrRfc1766)	\
    ( (This)->lpVtbl -> GetLcidFromRfc1766(This,pLocale,bstrRfc1766) ) 

#define IMultiLanguage3_EnumRfc1766(This,LangId,ppEnumRfc1766)	\
    ( (This)->lpVtbl -> EnumRfc1766(This,LangId,ppEnumRfc1766) ) 

#define IMultiLanguage3_GetRfc1766Info(This,Locale,LangId,pRfc1766Info)	\
    ( (This)->lpVtbl -> GetRfc1766Info(This,Locale,LangId,pRfc1766Info) ) 

#define IMultiLanguage3_CreateConvertCharset(This,uiSrcCodePage,uiDstCodePage,dwProperty,ppMLangConvertCharset)	\
    ( (This)->lpVtbl -> CreateConvertCharset(This,uiSrcCodePage,uiDstCodePage,dwProperty,ppMLangConvertCharset) ) 

#define IMultiLanguage3_ConvertStringInIStream(This,pdwMode,dwFlag,lpFallBack,dwSrcEncoding,dwDstEncoding,pstmIn,pstmOut)	\
    ( (This)->lpVtbl -> ConvertStringInIStream(This,pdwMode,dwFlag,lpFallBack,dwSrcEncoding,dwDstEncoding,pstmIn,pstmOut) ) 

#define IMultiLanguage3_ConvertStringToUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack)	\
    ( (This)->lpVtbl -> ConvertStringToUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack) ) 

#define IMultiLanguage3_ConvertStringFromUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack)	\
    ( (This)->lpVtbl -> ConvertStringFromUnicodeEx(This,pdwMode,dwEncoding,pSrcStr,pcSrcSize,pDstStr,pcDstSize,dwFlag,lpFallBack) ) 

#define IMultiLanguage3_DetectCodepageInIStream(This,dwFlag,dwPrefWinCodePage,pstmIn,lpEncoding,pnScores)	\
    ( (This)->lpVtbl -> DetectCodepageInIStream(This,dwFlag,dwPrefWinCodePage,pstmIn,lpEncoding,pnScores) ) 

#define IMultiLanguage3_DetectInputCodepage(This,dwFlag,dwPrefWinCodePage,pSrcStr,pcSrcSize,lpEncoding,pnScores)	\
    ( (This)->lpVtbl -> DetectInputCodepage(This,dwFlag,dwPrefWinCodePage,pSrcStr,pcSrcSize,lpEncoding,pnScores) ) 

#define IMultiLanguage3_ValidateCodePage(This,uiCodePage,hwnd)	\
    ( (This)->lpVtbl -> ValidateCodePage(This,uiCodePage,hwnd) ) 

#define IMultiLanguage3_GetCodePageDescription(This,uiCodePage,lcid,lpWideCharStr,cchWideChar)	\
    ( (This)->lpVtbl -> GetCodePageDescription(This,uiCodePage,lcid,lpWideCharStr,cchWideChar) ) 

#define IMultiLanguage3_IsCodePageInstallable(This,uiCodePage)	\
    ( (This)->lpVtbl -> IsCodePageInstallable(This,uiCodePage) ) 

#define IMultiLanguage3_SetMimeDBSource(This,dwSource)	\
    ( (This)->lpVtbl -> SetMimeDBSource(This,dwSource) ) 

#define IMultiLanguage3_GetNumberOfScripts(This,pnScripts)	\
    ( (This)->lpVtbl -> GetNumberOfScripts(This,pnScripts) ) 

#define IMultiLanguage3_EnumScripts(This,dwFlags,LangId,ppEnumScript)	\
    ( (This)->lpVtbl -> EnumScripts(This,dwFlags,LangId,ppEnumScript) ) 

#define IMultiLanguage3_ValidateCodePageEx(This,uiCodePage,hwnd,dwfIODControl)	\
    ( (This)->lpVtbl -> ValidateCodePageEx(This,uiCodePage,hwnd,dwfIODControl) ) 


#define IMultiLanguage3_DetectOutboundCodePage(This,dwFlags,lpWideCharStr,cchWideChar,puiPreferredCodePages,nPreferredCodePages,puiDetectedCodePages,pnDetectedCodePages,lpSpecialChar)	\
    ( (This)->lpVtbl -> DetectOutboundCodePage(This,dwFlags,lpWideCharStr,cchWideChar,puiPreferredCodePages,nPreferredCodePages,puiDetectedCodePages,pnDetectedCodePages,lpSpecialChar) ) 

#define IMultiLanguage3_DetectOutboundCodePageInIStream(This,dwFlags,pStrIn,puiPreferredCodePages,nPreferredCodePages,puiDetectedCodePages,pnDetectedCodePages,lpSpecialChar)	\
    ( (This)->lpVtbl -> DetectOutboundCodePageInIStream(This,dwFlags,pStrIn,puiPreferredCodePages,nPreferredCodePages,puiDetectedCodePages,pnDetectedCodePages,lpSpecialChar) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IMultiLanguage3_INTERFACE_DEFINED__ */


EXTERN_C const CLSID CLSID_CMultiLanguage;

#ifdef __cplusplus

class DECLSPEC_UUID("275c23e2-3747-11d0-9fea-00aa003f8646")
CMultiLanguage;
#endif
#endif /* __MultiLanguage_LIBRARY_DEFINED__ */

/* interface __MIDL_itf_mlang_0001_0019 */
/* [local] */ 

#ifndef _MLANG_H_API_DEF_                                                     
#define _MLANG_H_API_DEF_                                                     
                                                                              
// APIs prototypes                                                            
STDAPI LcidToRfc1766A(__in LCID Locale, __out_bcount(iMaxLength) LPSTR pszRfc1766, __in int iMaxLength);         
STDAPI LcidToRfc1766W(__in LCID Locale, __out_ecount(nChar) LPWSTR pwszRfc1766, __in int nChar);             
#ifdef UNICODE                                                                
#define LcidToRfc1766        LcidToRfc1766W                                   
#else                                                                         
#define LcidToRfc1766        LcidToRfc1766A                                   
#endif                                                                        
STDAPI Rfc1766ToLcidA(__out LCID *pLocale, __in LPCSTR pszRfc1766);           
STDAPI Rfc1766ToLcidW(__out LCID *pLocale, __in LPCWSTR pszRfc1766);          
#ifdef UNICODE                                                                
#define Rfc1766ToLcid        Rfc1766ToLcidW                                   
#else                                                                         
#define Rfc1766ToLcid        Rfc1766ToLcidA                                   
#endif                                                                        
                                                                              
STDAPI IsConvertINetStringAvailable(DWORD dwSrcEncoding, DWORD dwDstEncoding);
STDAPI ConvertINetString(__inout_opt LPDWORD lpdwMode, __in DWORD dwSrcEncoding, __in DWORD dwDstEncoding, __in_bcount_opt(*lpnSrcSize) LPCSTR lpSrcStr, __inout_opt LPINT lpnSrcSize, __out_bcount_opt(*lpnDstSize) LPSTR lpDstStr, __inout_opt LPINT lpnDstSize); 
STDAPI ConvertINetMultiByteToUnicode(__inout_opt LPDWORD lpdwMode, __in DWORD dwEncoding, __in_opt LPCSTR lpSrcStr, __inout_opt LPINT lpnMultiCharCount, __out_ecount_opt(*lpnWideCharCount) LPWSTR lpDstStr, __inout_opt LPINT lpnWideCharCount); 
STDAPI ConvertINetUnicodeToMultiByte(__inout_opt LPDWORD lpdwMode, __in DWORD dwEncoding, __in_opt LPCWSTR lpSrcStr, __inout_opt LPINT lpnWideCharCount, __out_bcount_opt(*lpnMultiCharCount) LPSTR lpDstStr, __inout_opt LPINT lpnMultiCharCount); 
                                                                              
#endif // _MLANG_H_API_DEF_                                                   


extern RPC_IF_HANDLE __MIDL_itf_mlang_0001_0019_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_mlang_0001_0019_v0_0_s_ifspec;

/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



