MLANG.IDL
//+------------------------------------------------------------------------- 
// 
//  Microsoft Windows 
//  Copyright (C) Microsoft Corporation, 1992-1997. 
// 
//  File: mlang.idl 
// 
//  Contents: IMultiLanguage interface definition 
// 
// 
//-------------------------------------------------------------------------- 
 
cpp_quote("//=--------------------------------------------------------------------------=") 
cpp_quote("// MLang.h") 
cpp_quote("//=--------------------------------------------------------------------------=") 
cpp_quote("// (C) Copyright 1995-1997 Microsoft Corporation.  All Rights Reserved.") 
cpp_quote("//") 
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF") 
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO") 
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A") 
cpp_quote("// PARTICULAR PURPOSE.") 
cpp_quote("//=--------------------------------------------------------------------------=") 
cpp_quote("") 
cpp_quote("#pragma comment(lib,\"uuid.lib\")") 
cpp_quote("") 
cpp_quote("//--------------------------------------------------------------------------") 
cpp_quote("// IMultiLanguage Interfaces.") 
cpp_quote("") 
 
#ifndef DO_NO_IMPORTS 
import "unknwn.idl"; 
#endif 
 
[ 
    uuid(275c23e0-3747-11d0-9fea-00aa003f8646), 
    helpstring("MultiLanguage Object Model"), 
    lcid(0x0000), 
    version(0.1) 
] 
library MultiLanguage 
{ 
    importlib("stdole2.tlb"); 
 
 
    [ 
      object, 
      uuid(275c23e3-3747-11d0-9fea-00aa003f8646), 
      pointer_default(unique) 
    ] 
    interface IEnumCodePage : IUnknown 
    { 
        const USHORT MAX_MIMECP_NAME    = 65; 
        const USHORT MAX_MIMECSET_NAME  = 50; 
        const USHORT MAX_MIMEFACE_NAME  = 32; 
 
        typedef enum tagMIMECONTF 
        { 
            MIMECONTF_MAILNEWS          = 1, 
            MIMECONTF_BROWSER           = 2, 
            MIMECONTF_MINIMAL           = 4, 
            MIMECONTF_VALID             = 256 
        } MIMECONTF; 
 
        typedef struct tagMIMECPINFO 
        { 
            DWORD   dwFlags; 
            UINT    uiCodePage; 
            UINT    uiFamilyCodePage; 
            WCHAR   wszDescription[MAX_MIMECP_NAME]; 
            WCHAR   wszWebCharset[MAX_MIMECSET_NAME]; 
            WCHAR   wszHeaderCharset[MAX_MIMECSET_NAME]; 
            WCHAR   wszBodyCharset[MAX_MIMECSET_NAME]; 
            WCHAR   wszFixedWidthFont[MAX_MIMEFACE_NAME]; 
            WCHAR   wszProportionalFont[MAX_MIMEFACE_NAME]; 
            BYTE    bGDICharset; 
        } MIMECPINFO, *PMIMECPINFO; 
 
        typedef struct tagMIMECSETINFO 
        { 
            UINT    uiCodePage; 
            UINT    uiInternetEncoding; 
            WCHAR   wszCharset[MAX_MIMECSET_NAME]; 
        } MIMECSETINFO, *PMIMECSETINFO; 
 
        typedef [unique] IEnumCodePage *LPENUMCODEPAGE; 
 
        HRESULT Clone 
        ( 
            [out] IEnumCodePage **ppEnum 
        ); 
 
        HRESULT Next 
        ( 
            [in]  ULONG         celt, 
            [out] PMIMECPINFO   rgelt, 
            [out] ULONG         *pceltFetched 
        ); 
 
        HRESULT Reset(); 
 
        HRESULT Skip 
        ( 
            [in]  ULONG         celt 
        ); 
    }; 
 
    [ 
      object, 
      uuid(275c23e1-3747-11d0-9fea-00aa003f8646), 
      pointer_default(unique) 
    ] 
    interface IMultiLanguage : IUnknown 
    { 
        typedef [unique] IMultiLanguage *LPMULTILANGUAGE; 
 
        HRESULT GetNumberOfCodePageInfo 
        ( 
            [out] UINT          *pcCodePage 
        ); 
 
        HRESULT GetCodePageInfo 
        ( 
            [in]  UINT          uiCodePage, 
            [out] PMIMECPINFO   pCodePageInfo 
        ); 
 
        HRESULT GetFamilyCodePage 
        ( 
            [in]  UINT          uiCodePage, 
            [out] UINT          *puiFamilyCodePage 
        ); 
 
        HRESULT EnumCodePages 
        ( 
            [in]  DWORD         grfFlags, 
            [out] IEnumCodePage **ppEnumCodePage 
        ); 
 
        HRESULT GetCharsetInfo 
        ( 
            [in]  BSTR          Charset, 
            [out] PMIMECSETINFO pCharsetInfo 
        ); 
 
        HRESULT IsConvertible 
        ( 
            [in]  DWORD         dwSrcEncoding, 
            [in]  DWORD         dwDstEncoding 
        ); 
 
        HRESULT ConvertString 
        ( 
            [in]  DWORD         dwSrcEncoding, 
            [in]  DWORD         dwDstEncoding, 
            [in]  BYTE          *pSrcStr, 
            [in,out]  UINT      *pcSrcSize, 
            [in]  BYTE          *pDstStr, 
            [in,out]  UINT      *pcDstSize 
        ); 
 
        HRESULT ConvertStringToUnicode 
        ( 
            [in]  DWORD         dwEncoding, 
            [in]  CHAR          *pSrcStr, 
            [in,out]  UINT      *pcSrcSize, 
            [in]  WCHAR         *pDstStr, 
            [in,out]  UINT      *pcDstSize 
        ); 
         
        HRESULT ConvertStringFromUnicode 
        ( 
            [in]  DWORD         dwEncoding, 
            [in]  WCHAR         *pSrcStr, 
            [in,out]  UINT      *pcSrcSize, 
            [in]  CHAR          *pDstStr, 
            [in,out]  UINT      *pcDstSize 
        );         
    }; 
 
    [ 
      uuid(275c23e2-3747-11d0-9fea-00aa003f8646), 
    ] 
    coclass CMultiLanguage 
    { 
        [default] interface IMultiLanguage; 
    }; 
 
}