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.
Flera av funktionerna för teckensnitt och textutdata har en parameter som anger längden på textutdatasträngen. Ett vanligt exempel är parametern cchText för DrawTextEx.
Var och en av dessa funktioner har både en "ANSI"-version och en Unicode-version (till exempel DrawTextExA respektive DrawTextExW). För "ANSI"-versionen av varje funktion anges längden som ett BYTE-antal och för Unicode-funktionen anges den som ett WORD-antal.
Det är traditionellt att betrakta detta som ett "teckenantal". Det är i allmänhet korrekt för många språk, inklusive engelska, men det är inte korrekt i allmänhet. I "ANSI"-strängar tar tecken i SBCS kodsidor en byte vardera, men de flesta tecken i DBCS kodsidor tar två byte. På samma sätt finns de flesta för närvarande definierade Unicode-tecken i BMP (Basic Multilingual Plane) och deras UTF-16-representationer får plats i ett WORD, men tilläggstecken representeras i Unicode av "surrogater", som kräver två WORD:er.
Var och en av dessa funktioner tar ett längdantal. För "ANSI"-versionen av varje funktion anges längden som byteantallängd för en sträng som inte innehåller NULL- terminator. För Unicode-funktionen är längdantalet antalet byte dividerat med sizeof(WCHAR), vilket är 2, exklusive NULL-terminator. Antalet tecken är antalet tecken, vilket kanske inte är lika med längden på strängen. I vissa fall kräver tecken mer än en BYTE för ANSI (till exempel DBCS- tecken) och mer än ett WORD för Unicode (till exempel vad som kallas surrogattecken). Dessutom kanske antalet glyfer inte är lika med antalet tecken eftersom flera tecken kan vara sammansatta för att göra ett tecken. Längdantalet är mängden data. Antal tecken är antalet enheter som bearbetas som en entitet. Glyfer är det som renderas. I Unicode kan du till exempel ha en sträng med längden 3, vilket är 2 tecken och som resulterar i att 1 glyf återges. Vanligtvis är dock de flesta Unicode-strängarnas längd, teckenantal och antalet renderade glyfer lika.
Du kan använda _tcslen() för att hämta stränglängden. För ANSI returnerar _tcslen() antalet byte. För Unicode returnerar _tcslen() antalet WCHAR(d.v.s. WORD).
Speciella bearbetningstecken som flikar och mjuka bindestreck som inte alltid visas kan påverka det visade resultatet. De ingår i stränglängden och teckenantalet, men de kanske inte representeras direkt av en renderad glyf.
Vissa av dessa funktioner gör det möjligt för anroparen att ange längden som -1 för att indikera att strängen är null-avslutad. I så fall beräknar funktionen antalet tecken automatiskt. Alla funktioner erbjuder inte den här funktionen. Detta anges baserat på funktion per funktion. se dokumentationen för enskilda funktioner.