|
|
/*++
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_
|