Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Windows SDK innehåller funktionsprototyper i allmänna, Windows-kodsidanoch Unicode- versioner. Prototyperna kan kompileras för att skapa antingen Prototyper för Windows-kodsidor eller Unicode-prototyper. Alla tre prototyperna beskrivs i det här avsnittet och illustreras av kodexempel för funktionen SetWindowText.
Följande är ett exempel på en generisk prototyp.
BOOL SetWindowText(
HWND hwnd,
LPCTSTR lpText
);
Rubrikfilen innehåller det allmänna funktionsnamnet som implementerats som ett makro.
#ifdef UNICODE
#define SetWindowText SetWindowTextW
#else
#define SetWindowText SetWindowTextA
#endif // !UNICODE
Förprocessorn expanderar makrot till antingen Windows-kodsidan eller Unicode-funktionsnamnet. Bokstaven "A" (ANSI) eller "W" (Unicode) läggs till i slutet av det generiska funktionsnamnet efter behov. Huvudfilen innehåller sedan två specifika prototyper, en för Windows-kodsidor och en för Unicode, enligt följande exempel.
BOOL SetWindowTextA(
HWND hwnd,
LPCSTR lpText
);
BOOL SetWindowTextW(
HWND hwnd,
LPCWSTR lpText
);
Som beskrivs i Windows-datatyper för strängaranvänder den generiska funktionsprototypen datatypen LPCTSTR för textparametern. Windows-kodsidans prototyp använder dock typen LPCSTR och Unicode-prototypen använder LPCWSTR.
För alla funktioner med textargument bör program normalt använda de generiska funktionsprototyperna. Om ett program definierar "UNICODE" antingen före #include-instruktionerna för huvudfilerna eller under kompilering, kompileras uttrycken till Unicode-funktioner.
Not
Nya Windows-program bör använda Unicode för att undvika inkonsekvenser i olika kodsidor och för att underlätta lokaliseringen. De ska skrivas med generiska funktioner och definiera UNICODE för att kompilera funktionerna till Unicode-funktioner. På de få platser där ett program måste fungera med 8-bitars teckendata kan det använda funktionerna för Windows-kodsidor explicit.
Programmet bör alltid använda en generisk funktionsprototyp med de allmänna sträng- och teckentyperna. Alla funktionsnamn som slutar med versalen "W" tar Unicode, det vill:s breda tecken, parametrar. Vissa funktioner finns bara i Unicode-versioner och kan endast användas med lämpliga datatyper. Till exempel har LCIDToLocaleName och LocaleNameToLCID endast Unicode-versioner.
Avsnittet Krav i referensdokumentationen för varje Unicode- och teckenuppsättningsfunktion innehåller information om de funktionsversioner som implementeras av operativsystem som stöds. Om en rad som börjar med "Unicode" ingår har funktionen separata unicode- och Windows-kodsideversioner.
Not
När en funktion har en längdparameter för en teckensträng ska längden dokumenteras som ett antal TCHAR-värden i strängen. Den här datatypen refererar till byte för Windows-kodsideversioner av funktionen eller 16-bitars ord för Unicode-versioner. Funktioner som kräver eller returnerar pekare till otypade minnesblock, till exempel funktionen GlobalAlloc, tar vanligtvis en storlek i byte, oavsett vilken prototyp som används. Om allokeringen av otypat minne är för en sträng måste programmet multiplicera antalet tecken med sizeof(TCHAR). Mer information finns i Använda allmänna datatyper.
Relaterade ämnen