Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Několik funkcí písma a textového výstupu má parametr, který určuje délku textového výstupního řetězce. Typickým příkladem je parametr cchTextDrawTextEx.
Každá z těchto funkcí má verzi ANSI i verzi Unicode (například DrawTextExA a DrawTextExW). Pro verzi "ANSI" každé funkce je délka určena jako počet BYTE a pro funkci Unicode je určena jako počet SLOV.
Je tradiční si to představit jako "počet znaků". To je obecně přesné pro mnoho jazyků, včetně angličtiny, ale obecně to není přesné. V řetězcích ANSI znaky v SBCS znakové sady mají jeden bajt, ale většina znaků v DBCS znakové sady mají dva bajty. Podobně většina aktuálně definovaných znaků Unicode se nachází v základní vícejazyčné rovině (BMP) a jejich reprezentace UTF-16 se vejdou do jednoho WORDu, ale doplňkové znaky jsou reprezentovány v Unicode "náhradními znaky", které vyžadují dvě WORD.
Každá z těchto funkcí přijímá délkový počet. Pro verzi "ANSI" každé funkce je délka určena jako počet bajtů řetězce, který neobsahuje ukončovací znak NULL. Ve funkci Unicode je počet znaků vypočítán jako počet bajtů dělený hodnotou sizeof(WCHAR), což je 2, aniž by se počítal ukončovací znak NULL. Počet znaků je počet znaků, který se nemusí rovnat počtu znaků řetězce. V některých případech si znaky vyžadují více než jeden bajt v rámci kódování ANSI (například znak DBCS) a více než jedno slovo pro Unicode (například náhradní znaky). Počet glyfů se navíc nemusí shodovat s počtem znaků, protože může být složeno více znaků, aby bylo možné vytvořit jeden glyf. Počet délky je množství dat. Počet znaků je počet jednotek, které se zpracovávají jako jedna entita. Glyfy jsou to, co se vykresluje. Například v Unicode můžete mít řetězec s délkou 3, což je 2 znaky a výsledkem je vykreslení 1 glyf. Většina řetězců Unicode, počet znaků a počet vykreslených glyfů jsou ale obvykle stejné.
K získání délky řetězce můžete použít _tcslen(). Pro ANSI vrátí _tcslen() počet bajtů. Pro Unicode vrací _tcslen() počet WCHARů (to znamená WORDy).
Speciální zpracovávané znaky, jako jsou tabulátory a měkké spojovníky, které nejsou vždy nakreslené, můžou ovlivnit nakreslený výstup. Zahrnou se do délky řetězce a počtu znaků, ale nemusí být přímo reprezentovány vykresleným glyfem.
Některé z těchto funkcí umožňují volajícímu určit délku jako -1, aby naznačil, že řetězec je ukončen nulovým znakem; v takovém případě funkce automaticky vypočítá počet znaků. Tuto funkci nenabízí všechny funkce. To je určeno na základě funkce podle funkce; viz dokumentace k jednotlivým funkcím.