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.
Sada Windows SDK poskytuje prototypy funkcí v obecných verzích znakové stránky windows a verze Unicode. Prototypy je možné zkompilovat tak, aby vytvářely prototypy znakové stránky Windows nebo prototypy Unicode. Všechny tři prototypy jsou popsány v tomto tématu a jsou ilustrovány ukázkami kódu pro funkci SetWindowText.
Následuje příklad obecného prototypu.
BOOL SetWindowText(
HWND hwnd,
LPCTSTR lpText
);
Soubor záhlaví obsahuje obecný název funkce implementovaný jako makro.
#ifdef UNICODE
#define SetWindowText SetWindowTextW
#else
#define SetWindowText SetWindowTextA
#endif // !UNICODE
Preprocesor rozbalí makro na znakovou stránku Systému Windows nebo název funkce Unicode. Písmeno "A" (ANSI) nebo "W" (Unicode) se podle potřeby přidá na konec názvu obecné funkce. Soubor hlavičky pak poskytuje dva konkrétní prototypy, jeden pro znakové stránky Windows a druhý pro Unicode, jak je znázorněno v následujících příkladech.
BOOL SetWindowTextA(
HWND hwnd,
LPCSTR lpText
);
BOOL SetWindowTextW(
HWND hwnd,
LPCWSTR lpText
);
Jak je vysvětleno v datových typech Windows pro řetězce, prototyp obecné funkce používá datový typ LPCTSTR pro textový parametr. Prototyp znakové stránky Windows však používá typ LPCSTR a prototyp Unicode používá LPCWSTR.
U všech funkcí s textovými argumenty by aplikace normálně měly používat prototypy obecných funkcí. Pokud aplikace definuje "UNICODE" buď před #include příkazy pro hlavičkové soubory nebo během kompilace, příkazy budou zkompilovány do funkcí Unicode.
Poznámka
Nové aplikace pro Windows by měly používat Unicode, aby nedocházelo k nekonzistence různých znakových stránek a pro snadnou lokalizaci. Měly by být napsané pomocí obecných funkcí a měly by definovat kódování UNICODE pro kompilaci funkcí do funkcí Unicode. Na několika místech, kde musí aplikace pracovat s 8bitovými daty znaků, může explicitně používat funkce pro znakové stránky Windows.
Vaše aplikace by měla vždy používat prototyp obecné funkce s obecnými řetězcovými a znakovými typy. Všechny názvy funkcí, které končí velkými písmeny "W", přebírají Unicode, tj. široké znaky, parametry. Některé funkce existují pouze ve verzích Unicode a lze je použít pouze s příslušnými datovými typy. Například LCIDToLocaleName a LocaleNameToLCID mají pouze verze Unicode.
Část Požadavky v referenční dokumentaci pro každou funkci unicode a znakové sady poskytuje informace o verzích funkcí implementovaných podporovanými operačními systémy. Pokud je řádek začínající znakem Unicode zahrnutý, má funkce samostatné verze znakové stránky Unicode a Windows.
Poznámka
Pokud má funkce parametr délky pro řetězec znaků, měla by být délka zdokumentována jako počet hodnot TCHAR v řetězci. Tento datový typ odkazuje na bajty pro verze znakové stránky Systému Windows funkce nebo 16bitových slov pro verze Unicode. Funkce, které vyžadují nebo vracejí ukazatele na nezatypované paměťové bloky, jako je například funkce GlobalAlloc, obecně berou velikost v bajtech bez ohledu na použitý prototyp. Pokud je přidělení netypové paměti pro řetězec, musí aplikace vynásobit počet znaků velikostí (TCHAR). Další informace najdete v tématu Použití obecných datových typů.
Související témata