/*++ Copyright (c) 1991 Microsoft Corporation Module Name: winnls.h Abstract: This module defines the 32-Bit Windows NLS APIs. Author: David J. Gilman (davegi) 22-Mar-1991 Revision History: --*/ #ifndef _WINNLS_ #define _WINNLS_ // // NLSAPI and wide character related types. // typedef char CHAR; typedef PDWORD LPWCHAR; typedef LPSTR LPCHAR; typedef DWORD HLCID; typedef DWORD HLOCALE; // // Length of locale strings. // #define MAX_LANG_LEN ( 128 ) #define MAX_CTRY_LEN ( 128 ) #define MAX_CP_LEN ( 128 ) // // String based locale representation. // typedef struct tagLC_STRINGS { CHAR szLanguage[MAX_LANG_LEN]; // language name CHAR szCountry[MAX_CTRY_LEN]; // country name CHAR szCodePage[MAX_CP_LEN]; // codepage name } LC_STRINGS, *LPLC_STRINGS, *PLC_STRINGS; // // Code based local representation. // typedef struct tagLC_ID { WORD wLanguage; // language id WORD wCountry; // country id WORD wCodePage; // codepage id } LC_ID, *LPLC_ID, *PLC_ID; // // Locale information enumeration type. // #define LI_CPDATA ( 0 ) #define LI_CTRYDATA ( 1 ) #define LI_LANGDATA ( 2 ) // // Locale information type. // #define LI_CPDATA ( 0 ) #define LI_CTRYDATA ( 1 ) #define LI_LANGDATA ( 2 ) #define LI_LCMONETARY ( 3 ) #define LI_LCNUMERIC ( 4 ) #define LI_DATETIMEFMT ( 5 ) #define LI_DATETIMESTR ( 6 ) // // LC_ID and LC_STRINGS indicator. // #define QF_LCID ( 0 ) #define QF_STRINGS ( 1 ) // // Requested character type information. // #define CT_CTYPE1 ( 1 ) #define CT_CTYPE2 ( 2 ) // // Character type 1 (CT_CTYPE1) information // #define C1_ALPHA ( 0x100 ) #define C1_CONTROLCHAR ( 0x020 ) #define C1_DIACRITIC ( 0x200 ) #define C1_DIGIT ( 0x004 ) #define C1_LOWERCASE ( 0x002 ) #define C1_PUNCTUATION ( 0x010 ) #define C1_WHITESPACE ( 0x008 ) #define C1_SYMBOL ( 0x400 ) #define C1_UPPERCASE ( 0x001 ) // // Extended character type 1 (CT_CTYPE1) information // #define C1_ALPHNUMERIC ( C1_ALPHA | C1_DIGIT ) #define C1_GRAPHIC ( C1_PUNCTUATION | C1_ALPHNUMERIC ) // // Character type 2 (CT_CTYPE2) information // #define C2_STRONGLEFTTORIGHT ( 0 ) #define C2_STRONGRIGHTTOLEFT ( 1 ) #define C2_WEAKLEFTTORIGHT ( 2 ) #define C2_WEAKRIGHTTOLEFT ( 3 ) #define C2_NEUTRAL ( 4 ) #define C2_NUMERICCONTEXT ( 5 ) #define C2_OPENPUNCTUATION ( 6 ) #define C2_CLOSEPUNCTUATION ( 7 ) // // Extended character type 2 (CT_CTYPE2) information // #define C2_UPSTREAM ( C2_CLOSEPUNCTUATION + 1 ) #define C2_DOWNSTREAM ( C2_CLOSEPUNCTUATION + 2 ) #define C2_IDEOGRAPHIC ( C2_CLOSEPUNCTUATION + 3 ) #define C2_NONBREAKING ( C2_CLOSEPUNCTUATION + 4 ) // // Comparison flags // #define CF_IGNORECASE ( 1 ) #define CF_IGNOREDIACRITIC ( 2 ) #define CF_IGNORESYMBOLS ( 4 ) // // Map types and flags. // #define MAP_COLLATE ( 0 ) #define MAP_CTYPE1 ( 1 ) #define MAP_CTYPE2 ( 2 ) #define MAP_UPPERCASE ( 3 ) #define MAP_LOWERCASE ( 4 ) #define MAP_UCTOMB ( 5 ) #define MAP_MBTOUC ( 6 ) #define MAP_SORTKEY ( 7 ) // // Character traits. // #define STR_IGNORECASE ( 0 ) #define STR_IGNOREDIACRITIC ( 1 ) #define STR_IGNORESYMBOLS ( 2 ) // // Low level NLSAPI routines. // HLCID BeginEnumLocale( DWORD dwEnumType, LPLC_ID lpLCID ); BOOL GetNextLocale( HLCID hEnumHandle, LPLC_ID lpLCID ); BOOL EndEnumLocale( HLCID hEnumHandle ); DWORD GetLocaleInfo( LPLC_ID lpLocale, DWORD dwLCType, LPVOID pvLCData, DWORD cbBuf ); BOOL GetQualifiedLocale( WORD wType, LPVOID lpInput, LPLC_ID lpOutID, LPLC_STRINGS lpOutStr ); // // High level NLSAPI routines. // BOOL GetCharType( HLOCALE hLocale, WORD wInfoType, WCHAR wcChar, LPWORD lpCharType ); BOOL CloseLocale( HLOCALE hLocale ); int CompareString( HLOCALE hLocale, DWORD dwCmpFlags, LPWSTR lpwstrString1, int nCount1, LPWSTR lpwstrString2, int nCount2 ); int QueryMap( HLOCALE hLocale, WORD wMapType, WORD wMapFlags, WCHAR wcBeginMap, WCHAR wcEndMap, LPVOID pvOutMap, DWORD dwOutSize ); int MapString( HLOCALE hLocale, DWORD dwMapFlags, LPWSTR lpWCSrcStr, int nWCSrc, LPWSTR lpWCDestStr, int nWCDest ); HLOCALE OpenLocale( LPLC_ID lpLCID ); // // MBCS Support NLSAPI Routines // int WideCharToMultiByte( WORD wCodePage, LPWSTR lpWideCharStr, int nWideChar, LPSTR lpMultiByteStr, int nChar, LPCHAR lpDefaultChar ); int MultiByteToWideChar( WORD wCodePage, LPSTR lpMultiByteStr, int nChar, LPWSTR lpWideCharStr, int nWideChar ); int MultiByteToMultiByte( WORD wTranslations, WORD wSrcCodePage, LPSTR lpSrcString, int nSrcChar, WORD wDestCodePage, LPSTR wDestString, int nDestChar ); #endif // _WINNLS_