Delen via


Windows-gegevenstypen voor tekenreeksen

De meeste tekenreeksbewerkingen kunnen dezelfde logica gebruiken voor Unicode- en voor Windows-codepagina's. Het enige verschil is dat de basiseenheid van de bewerking een 16-bits teken (ook wel een breed teken genoemd) is voor Unicode en een 8-bits teken voor Windows-codepagina's. De Windows-headerbestanden bieden verschillende typedefinities waarmee u eenvoudig bronnen kunt maken die kunnen worden gecompileerd voor Unicode of voor Windows-codepagina's.

Windows ondersteunt drie sets teken- en tekenreeksgegevenstypen: een set algemene typedefinities die kunnen worden gecompileerd voor Unicode- of Windows-codepagina's en twee sets specifieke typedefinities. De ene set specifieke typedefinities is voor gebruik met Unicode en de andere is voor gebruik met Windows-codepagina's.

Een toepassing die algemene gegevenstypen gebruikt, kan worden gecompileerd voor Unicode door 'UNICODE' te definiëren vóór de #include instructies voor de headerbestanden of tijdens de compilatie. Nieuwe Windows-toepassingen moeten Unicode gebruiken om inconsistenties van verschillende codepagina's te voorkomen en om lokalisatie te vereenvoudigen. Ze moeten worden geschreven met algemene gegevenstypen en moeten 'UNICODE' definiëren om deze typen te compileren in Unicode-typen. Op de weinige plaatsen waar een toepassing moet werken met 8-bits tekengegevens, kan deze expliciet gebruikmaken van de typen voor Windows-codepagina's.

De mogelijkheid om de algemene typen te compileren in typen voor Windows-codepagina's bestaat voornamelijk ter ondersteuning van verouderde toepassingen. Als u wilt compileren voor Windows-codepagina's, hoeft de toepassing alleen de UNICODE-definitie weg te laten.

In het volgende voorbeeld ziet u de methode die wordt gebruikt in de Windows-headerbestanden om de drie sets met gegevenstypen te definiëren. Zie het headerbestand Winnt.h voor de implementatie.

// Generic types

#ifdef UNICODE
    typedef wchar_t TCHAR;
#else
    typedef unsigned char TCHAR;
#endif

typedef TCHAR *LPTSTR, *LPTCH;

// 8-bit character specific

typedef unsigned char CHAR;
typedef CHAR *LPSTR, *LPCH;

// Unicode specific (wide characters)

typedef unsigned wchar_t WCHAR;
typedef WCHAR *LPWSTR, *LPWCH;

De letter 'T' in een typedefinitie, bijvoorbeeld TCHAR of LPTSTR, wijst een algemeen type aan dat kan worden gecompileerd voor Windows-codepagina's of Unicode. De letter 'W' in een typedefinitie, bijvoorbeeld WCHAR of LPWSTR, wijst een Unicode-type aan. Omdat Windows-codepagina's van het oudere formulier zijn, hebben ze eenvoudige typedefinities, zoals CHAR en LPSTR. Zie Windows-gegevenstypenvoor een volledige beschrijving van gegevenstypen in Windows.

Unicode in de Windows-API