Freigeben über


Kompositionen

Eine Komposition ist ein temporärer Eingabezustand, der es einem Textdienst ermöglicht, sowohl für die Anwendung als auch den Benutzer anzugeben, dass der Eingabetext sich noch in einem Änderungszustand befindet. Eine Anwendung kann und sollte Anzeigeattributeinformationen zur Komposition abrufen und diese Informationen verwenden, um den Kompositionszustand für den Benutzer anzuzeigen.

Ein Beispiel für die Verwendung einer Komposition ist während der Spracheingabe. Während der Benutzer spricht, erstellt der Sprachtextdienst eine Komposition. Diese Komposition bleibt erhalten, bis die gesamte Spracheingabe abgeschlossen ist. Wenn die Sitzung endet, beendet der Sprachtextdienst die Komposition.

Eine Anwendung verwendet das Vorhandensein und Fehlen einer Komposition, um zu bestimmen, wie Text angezeigt wird und was, falls vorhanden, die Verarbeitung für den Text durchgeführt werden soll. Wenn der Benutzer beispielsweise das Sprachmodul zum Eingeben von Text verwendet, sollte die Anwendung keine Rechtschreib- oder Grammatikprüfung für Kompositionstext durchführen. Der Text wird als unvollständig betrachtet, bis die Komposition beendet wird.

Textdienste

Ein Textdienst erstellt eine Komposition durch Aufrufen ITfContextComposition::StartComposition. Der Textdienst kann optional einen ITfCompositionSink Objekt implementieren, das Kompositionsereignisbenachrichtigungen empfängt. StartComposition gibt ein ITfComposition- -Objekt zurück, auf das der Textdienst einen Verweis speichert und verwendet, um die Komposition zu ändern und zu beenden. Der Textdienst beendet die Komposition durch Aufrufen ITfComposition::EndComposition.

Wenn ein Textdienst Kompositionen erstellt, sollte er auch Anzeigeattribute unterstützen, um einer Anwendung das Anzeigen von Text zu ermöglichen, der Teil einer Komposition ist, anders als Standardtext. Weitere Informationen finden Sie unter Bereitstellen von Anzeigeattributen.

Anträge

Eine Anwendung kann die Erstellung, Änderung und Beendigung von Kompositionen überwachen, indem ein ITfContextOwnerCompositionSink Sink installiert wird. Wenn eine Komposition gestartet wird, wird ITfContextOwnerCompositionSink::OnStartComposition aufgerufen. Ebenso wird ITfContextOwnerCompositionSink::OnUpdateComposition und ITfContextOwnerCompositionSink::OnEndComposition aufgerufen.

Es folgt ein typisches Verfahren zum Aktualisieren eines Dokuments mithilfe einer Komposition.

  1. ITextStoreACP::InsertTextAtSelection oder ITextStoreAnchor::InsertTextAtSelection werden in der Regel verwendet, um den ursprünglichen Text in die Komposition einzufügen.
  2. Die Komposition wird mit einem Aufruf von ITfContextComposition::StartCompositiongestartet, wobei der von InsertTextAtSelectionzurückgegebene Textbereich verwendet wird.
  3. Wenn sie neue Eingaben wie Sprach- oder Tastatureingabe empfängt, aktualisiert die Anwendung die Komposition mit ITextStoreACP::SetText oder ITextStoreAnchor::SetText.
  4. Wenn die Anwendung feststellt, dass es zeit ist, die Komposition zu beenden, ruft sie ITfComposition::EndCompositionauf.

Die Anwendung sollte die vom Textdienst bereitgestellten Anzeigeattribute verwenden, um die Anzeige von Text jederzeit zu ändern und nicht nur, wenn eine Komposition aktiv ist. Weitere Informationen finden Sie unter Verwenden von Anzeigeattributen.

Bei Bedarf kann eine Anwendung eine Komposition beenden, indem ITfContextOwnerCompositionServices::TerminateCompositionaufgerufen wird.