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.
Řetězec kompozice je aktuální text v okně složení. Toto je text, který editor IME převede na konečné znaky. Každý řetězec složení se skládá z jedné nebo více "klauzulí". Klauzule je nejmenší kombinace znaků, které editor IME dokáže převést na konečný znak. Chcete-li získat a nastavit řetězec složení, aplikace volá funkce ImmGetCompositionString a ImmSetCompositionString, přičemž tyto odpovídající funkce jsou volány v uvedeném pořadí.
Když uživatel zadá text do okna pro psaní, editor IME sleduje stav kompozičního řetězce. Tento stav zahrnuje informace o atributu, informace o klauzuli, zadání informací a pozici kurzoru. Aplikace může načíst stav složení pomocí funkce ImmGetCompositionString.
Informace o atributu se vykreslují v poli 8bitových hodnot, které určují stav znaků v řetězci složení. Všechny znaky jedné klauzule musí mít stejný atribut. Pole obsahuje jednu hodnotu pro každý bajt v řetězci, včetně jednoho bajtu pro první a druhý bajt jakýchkoli dvoubajtových znaků v řetězci. Pro každou hodnotu v matici může být bity 0 až 3 kombinací následujících hodnot.
| Hodnota | Význam |
|---|---|
| ATTR_INPUT | Znak zadaný uživatelem IME zatím tento znak nepřevedl. |
| Chyba_vstupu_attr | Chybový znak, který editor IME nemůže převést. Editor IME například nemůže sestavit některé souhlásky. |
| ATRIBUT_CÍLOVÝ_PŘEVEDENÝ | Znak vybraný uživatelem a potom převedený editorem IME. |
| ATTR_CONVERTED | Znak, který editor IME už převedl. |
| ATTR_TARGET_NOTCONVERTED | Převod znaku. Uživatel vybral tento znak, ale editor IME ho ještě nepřevedl. |
| ATTR_FIKSEKONVERTOVÁNO | Znaky, které editor IME už nebude převádět. |
Všechny ostatní hodnoty jsou rezervované. V japonštině je jakýkoli nekonvertovaný znak, který má atribut ATTR_INPUT, hiragana, katakana nebo alfanumerický znak. V korejštině představuje tento atribut znak Hangul, který editor IME ještě nepřevednul. V tradiční čínštině a zjednodušené čínštině může každý editor IME omezit svůj znak v určitém rozsahu.
Informace o klauzuli obsažené ve stavu řetězce složení jsou pole 32bitových hodnot, které určují pozice klauzulí v řetězci složení. Pole obsahuje jednu hodnotu pro každou klauzuli a konečnou hodnotu, která určuje délku celého řetězce. Každá hodnota v poli určuje posun v bajtech od začátku řetězce k klauzuli. První hodnota je vždy 0, protože první klauzule vždy začíná na začátku řetězce. Pokud má například řetězec dvě klauzule, informace o klauzuli mají tři hodnoty: první hodnota je 0, druhá hodnota je posun druhé klauzule a třetí hodnota je délka řetězce. V Unicode se pozice klauzule počítá ve znacích Unicode a délka řetězce je jeho velikost ve znacích Unicode.
Informace o psaní obsažené ve stavu řetězce složení jsou znakový řetězec ukončený hodnotou null, který představuje znaky, které uživatel zadává na klávesnici.
Pozice kurzoru obsažená ve stavu řetězce složení je hodnota označující pozici kurzoru vzhledem ke znakům v řetězci složení. Hodnota je posun v bajtech od začátku řetězce. Pokud je tato hodnota 0, kurzor je bezprostředně před prvním znakem v řetězci. Pokud je hodnota rovna délce řetězce, kurzor je bezprostředně za posledním znakem. Pokud je hodnota 1, kurzor není k dispozici. U unicode se pozice i délka měří ve znaznachu Unicode.
Aplikace může nastavit řetězec složení nebo prvky stavu složení pomocí funkce ImmSetCompositionString. Aby se zajistilo, že okno složení aktualizuje svůj vzhled na základě těchto změn, funkce umožní aplikaci odeslat do okna zprávu s oznámením. Aplikace, které nastavují kombinaci stavových prvků složení, obvykle zakazují oznámení pro všechna kromě posledního volání této funkce, aby se pro okno složení vygenerovala pouze jedna zpráva s oznámením.
Konečně, ovládací prvek pro úpravu podporuje dvě zprávy pro změnu zpracování skládacích řetězců pomocí IME. Další informace najdete v tématu EM_GETIMESTATUS a EM_SETIMESTATUS. Další informace o ovládacím prvku pro editaci naleznete v tématu Editovat ovládací prvek.
Související témata