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;
};

}