Home COM GDI+ WebBrowser Data Access 

MLang Reference

 

 

This section covers the functionality provided by MLang, which is intended to help developers solve problems presented by the international scope of the Internet. These tools allow a developer to deal with a variety of international and multilingual issues. MLang provides:

  • Code page and locale enumeration from the MIME database.

  • Code page, locale, and character set information retrieval.

  • Character set conversion between different multibyte character sets, as well as to and from Unicode.

  • A method of working with a set of code pages at once.

  • A way to determine which code pages contain a given character or string.

  • Detection of which possible code pages and languages text data is written in.

  • Custom font creation to display characters from a variety of character sets at once.

  • Locale-aware line breaking for console-based applications.

 

 

Objects

 

Code Page Enumeration

Conversion

Locale Enumeration

 

 

Multilanguage

Script Enumeration

 

Interfaces

 

IEnumCodePage

IEnumRfc1766

IEnumScript

IMLangCodePages

IMLangConvertCharset

IMLangFontLink

IMLangFontLink2

IMLangLineBreakConsole

IMLangString (not currently implemented)

IMLangStringAStr (not currently implemented)

IMLangStringBuf (not currently implemented)

 

 

IMLangStringNotifySink (not currently implemented)

IMLangStringWStr (not currently implemented)

IMLStrAttr (not currently implemented)

IMLStrAttrAStr (not currently implemented)

IMLStrAttrLocale (not currently implemented)

IMLStrAttrLong (not currently implemented)

IMLStrAttrNotifySink (not currently implemented)

IMLStrAttrWStr (not currently implemented)

IMultiLanguage

IMultiLanguage2

IMultiLanguage3

 

 

Functions

 

ConvertINetMultiByteToUnicode

 

Translates a source string to a Unicode string and returns the result to a buffer.
 

 

DECLARE FUNCTION ConvertINetMultiByteToUnicode _
  LIB "MLANG.DLL" _
  ALIAS "ConvertINetMultiByteToUnicode" ( _
  BYREF lpdwMode AS DWORD, _
  BYVAL dwSrcEncoding AS DWORD, _
  BYREF lpSrcStr AS ANY, _
  BYREF lpnMultiCharCount AS LONG, _
  BYREF lpDstStr AS ANY, _
  BYREF lpnWideCharCount AS LONG _
) AS LONG
 

 

ConvertINetString

 

Performs character set conversion between a given source codepage and a destination codepage identifier.
 

 

DECLARE FUNCTION ConvertINetString _
  LIB "MLANG.DLL" _
  ALIAS "ConvertINetString" ( _
  BYREF lpdwMode AS DWORD, _
  BYVAL dwSrcEncoding AS DWORD, _
  BYVAL dwDstEncoding AS DWORD, _
  BYREF lpSrcStr AS ANY, _
  BYREF lpnSrcSize AS LONG, _
  BYREF lpDstStr AS ANY, _
  BYREF lpnDstSize AS LONG _
) AS LONG
 

 

ConvertINetUnicodeToMultiByte

 

Translates a character stream in Unicode to the specified destination codepage.
 

 

DECLARE FUNCTION ConvertINetUnicodeToMultiByte _
  LIB "MLANG.DLL" _
  ALIAS "ConvertINetUnicodeToMultiByte" ( _
  BYREF lpdwMode AS DWORD, _
  BYVAL dwEncoding AS DWORD, _
  BYREF lpSrcStr AS ANY, _
  BYREF lpnWideCharCount AS LONG, _
  BYREF lpDstStr AS ANY, _
  BYREF lpnMultiCharCount AS LONG _
) AS LONG
 

 

IsConvertInetStringAvaliable

 

An application uses the IsConvertINetStringAvailable function to verify that the specified character set conversion can be performed.
 

 

DECLARE FUNCTION IsConvertINetStringAvailable _
  LIB "MLANG.DLL" _
  ALIAS "IsConvertINetStringAvailable" ( _
  BYVAL dwSrcEncoding AS DWORD, _
  BYVAL dwDstEncoding AS DWORD _
) AS LONG
 

 

LcidToRfc1766

 

Translates a Microsoft Windows locale identifier to a human-readable name that conforms to RFC-1766.
 

 

DECLARE FUNCTION LcidToRfc1766 _
  LIB "MLANG.DLL" _
  ALIAS "LcidToRfc1766A" ( _
  BYVAL Locale AS LONG, _
  BYREF pszRfc1766 AS ASCIIZ, _
  BYREF nChar AS LONG _
) AS LONG
 

DECLARE FUNCTION LcidToRfc1766W _
  LIB "MLANG.DLL" _
  ALIAS "LcidToRfc1766W" ( _
  BYVAL Locale AS LONG, _
  BYREF pszRfc1766 AS ANY, _
  BYREF nChar AS LONG _
) AS LONG

 

 

Rfc1766ToLcid

 

Translates a Microsoft Windows locale identifier to a human-readable name that conforms to RFC-1766.
 

 

DECLARE FUNCTION Rfc1766ToLcid _
  LIB "MLANG.DLL" _
  ALIAS "Rfc1766ToLcidA" ( _
  BYREF Locale AS LONG, _
  BYREF pszRfc1766 AS ASCIIZ, _
) AS LONG
 

DECLARE FUNCTION Rfc1766ToLcidW _
  LIB "MLANG.DLL" _
  ALIAS "Rfc1766ToLcidW" ( _
  BYVAL Locale AS LONG, _
  BYREF pszRfc1766 AS ANY, _
) AS LONG

 

 

Structures

 

DetectEncodingInfo

 

Contains the results of code page detection by the IMultiLanguage2::DetectCodepageInIStream and IMultiLanguage2::DetectInputCodepage methods.
 

 

TYPE DetectEncodingInfo
   nLangID AS DWORD
   nCodePage AS DWORD
   nDocPercent AS LONG
   nConfidence AS LONG

END TYPE
 

 

MIMECPINFO

 

Contains detailed information gathered from the MIME database about a given code page.
 

 

TYPE MIMECPINFO
   dwFlags AS DWORD
   uiCodePage AS DWORD
   uiFamilyCodePage AS DWORD
   wszDescription AS STRING * %MAX_MIMECP_NAME * 2
   wszWebCharset AS STRING * %MAX_MIMECSET_NAME * 2
   wszHeaderCharset AS STRING * %MAX_MIMECSET_NAME * 2
   wszBodyCharset AS STRING * %MAX_MIMECSET_NAME * 2
   wszFixedWidthFont AS STRING * %MAX_MIMEFACE_NAME * 2
   wszProportionalFont AS STRING * %MAX_MIMEFACE_NAME * 2
   bGDICharset AS BYTE
END TYPE

 

 

MIMECSETINFO

 

Contains information about a given charset.
 

 

TYPE MIMECSETINFO
   uiCodePage AS DWORD
   uiInternetEncoding AS DWORD
   wszCharset AS STRING * %MAX_MIMECSET_NAME * 2
END TYPE

 

 

RFC1766INFO

 

Contains information about a given locale identifier value (LCID), including the corresponding RFC1766-conforming name.
 

 

TYPE RFC1766INFO
   lcid AS LONG
   wszRfc1766 AS STRING * %MAX_RFC1766_NAME * 2
   wszLocaleName AS STRING * %MAX_LOCALE_NAME * 2
END TYPE

 

 

SCRIPTINFO

 

Contains the information about the specified script.
 

 

TYPE SCRIPTINFO
   ScriptId AS BYTE
   uiCodePage AS DWORD
   wszDescription AS STRING * %MAX_SCRIPT_NAME * 2
   wszFixedWidthFont AS STRING * %MAX_MIMEFACE_NAME * 2
   wszProportionalFont AS STRING * %MAX_MIMEFACE_NAME * 2

END TYPE
 

 

UNICODERANGE

 

Contains the Unicode range supported by a particular font.
 

 

TYPE UNICODERANGE
   wcFrom AS STRING * 2
   wcTo AS STRING * 2
END TYPE

 

 

Enumerations

 

MIMECONTF

 

Used as a member of the MIMECPINFO structure to specify the possible uses of a code page.
 

 

%MIMECONTF_MAILNEWS = &H1
%MIMECONTF_BROWSER = &H2
%MIMECONTF_MINIMAL = &H4
%MIMECONTF_IMPORT = &H8
%MIMECONTF_SAVABLE_MAILNEWS = &H100
%MIMECONTF_SAVABLE_BROWSER = &H200
%MIMECONTF_EXPORT = &H400
%MIMECONTF_PRIVCONVERTER = &H10000
%MIMECONTF_VALID = &H20000
%MIMECONTF_VALID_NLS = &H40000
%MIMECONTF_MIME_IE4 = &H10000000
%MIMECONTF_MIME_LATEST = &H20000000
%MIMECONTF_MIME_REGISTRY = &H40000000
 

 

MLCONVCHAR

 

Used as an inbound or outbound flag for character set conversion.
 

 

%MLCONVCHARF_NONE = 0
%MLCONVCHARF_AUTODETECT = 1
%MLCONVCHARF_NCR_ENTITIZE = 2
%MLCONVCHARF_NAME_ENTITIZE = 4
%MLCONVCHARF_USEDEFCHAR = 8
%MLCONVCHARF_NOBESTFITCHARS = 16

%MLCONVCHARF_DETECTJPN = 32
 

 

MLCP

 

Used with the IMultiLanguage3::DetectOutboundCodePage and IMultiLanguage3::DetectOutboundCodePageInIStream to control the behavior of the methods.
 

 

%MLDETECTF_MAILNEWS = &H1
%MLDETECTF_BROWSER = &H2
%MLDETECTF_VALID = &H4
%MLDETECTF_VALID_NLS = &H8
%MLDETECTF_PRESERVE_ORDER = &H10
%MLDETECTF_PREFERRED_ONLY = &H20
%MLDETECTF_FILTER_SPECIALCHAR = &H40

%MLDETECTF_EURO_UTF8 = &H80
 

 

MLDETECTCP

 

Used with the code page detection methods IMultiLanguage2::DetectInputCodepage and IMultiLanguage2::DetectCodepageInIStream to specify the type of the incoming data.
 

 

%MLDETECTCP_NONE = 0
%MLDETECTCP_7BIT = 1
%MLDETECTCP_8BIT = 2
%MLDETECTCP_DBCS = 4
%MLDETECTCP_HTML = 8

%LDETECTCP_NUMBER = 16
 

 

SCRIPTCONTF

 

Contains the script identifiers.
 

 

%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

 

 

SCRIPTFONTCONTF

 

Contains the script font values.
 

 

%SCRIPTCONTF_FIXED_FONT = &H1
%SCRIPTCONTF_PROPORTIONAL_FONT = &H2
%SCRIPTCONTF_SCRIPT_USER = &H10000
%SCRIPTCONTF_SCRIPT_HIDE = &H20000
%SCRIPTCONTF_SCRIPT_SYSTEM = &H40000

 

 

Constants

 

DetectEncodingInfo

 

%MAX_MIMECP_NAME = 64
%MAX_MIMECSET_NAME = 50
%MAX_MIMEFACE_NAME = 32

 

 

Page last updated on Sunday, 26 March 2006 10:45:23 +0100