Skladby
Složení je dočasný vstupní stav, který umožňuje textové službě určit aplikaci i uživateli, že vstupní text je stále ve stavu změny. Aplikace může a měla by získat informace o atributu o složení a použít tyto informace k zobrazení stavu složení uživateli.
Jedním z příkladů použití složení je vstup řeči. Zatímco uživatel mluví, služba pro převod řeči na text vytvoří složení. Toto složení zůstane nedotčené, dokud nebude dokončen celý vstup řeči. Když relace skončí, služba převodu řeči na text ukončí složení.
Aplikace používá přítomnost a absenci složení k určení způsobu zobrazení textu a co, pokud existuje, zpracování by mělo být provedeno u textu. Pokud například uživatel používá k zadávání textu řečový modul, aplikace by neměla provádět žádnou kontrolu pravopisu ani gramatiky u textu složení. Text je považovaný za neúplný, dokud se složení neukončil.
Textové služby
Textová služba vytvoří složení voláním ITfContextComposition::StartComposition. Textová služba může volitelně implementovat ITfCompositionSink objekt, který přijímá oznámení událostí složení. StartComposition vrátí ITfComposition objekt, na který textová služba uchovává odkaz a používá k úpravě a ukončení složení. Textová služba ukončí složení voláním ITfComposition::EndComposition.
Pokud bude textová služba vytvářet kompozice, měla by také podporovat zobrazované atributy, aby aplikace mohla zobrazit text, který je součástí složení odlišně než standardní text. Další informace naleznete v tématu poskytování atributů zobrazení.
Aplikace
Aplikace může monitorovat vytváření, změnu a ukončení složení instalací ITfContextOwnerCompositionSink jímky. Při spuštění skladby ITfContextOwnerCompositionSink::OnStartComposition je volána. Podobně když se změní nebo ukončí složení, ITfContextOwnerCompositionSink::OnUpdateComposition a ITfContextOwnerCompositionSink::OnEndComposition se zavolá.
Následuje typický postup aktualizace dokumentu pomocí složení.
- ITextStoreACP::InsertTextAtSelection nebo ITextStoreAnchor::InsertTextAtSelection se obvykle používají k vložení počátečního textu do složení.
- Složení je zahájeno voláním ITfContextComposition::StartComposition, pomocí rozsahu textu vráceného InsertTextAtSelection.
- Když obdrží nový vstup, jako je řeč nebo zadávání klávesnice, aplikace aktualizuje složení ITextStoreACP::SetText nebo ITextStoreAnchor::SetText.
- Když aplikace zjistí, že je čas ukončit složení, volá ITfComposition::EndComposition.
Aplikace by měla používat atributy zobrazení poskytované textovou službou k úpravě zobrazení textu vždy, a to nejen v případě, že je skladba aktivní. Další informace naleznete v tématu Použití atributů zobrazení.
V případě potřeby může aplikace ukončit složení voláním ITfContextOwnerCompositionServices::TerminateComposition.