Condividi tramite


Composizioni

Una composizione è uno stato di input temporaneo che consente a un servizio di testo di specificare sia all'applicazione che all'utente che il testo di input è ancora in uno stato di modifica. Un'applicazione può e deve ottenere informazioni sull'attributo di visualizzazione sulla composizione e utilizzare queste informazioni per visualizzare lo stato di composizione all'utente.

Un esempio dell'uso di una composizione è durante l'input vocale. Mentre l'utente parla, il servizio di testo vocale crea una composizione. Questa composizione rimarrà intatta fino al completamento dell'intero input vocale. Al termine della sessione, il servizio di testo vocale termina la composizione.

Un'applicazione usa la presenza e l'assenza di una composizione per determinare come visualizzare il testo e cosa, se presente, l'elaborazione deve essere eseguita sul testo. Ad esempio, se l'utente usa il motore di riconoscimento vocale per inserire testo, l'applicazione non deve eseguire alcun controllo ortografico o grammaticale su testo di composizione. Il testo viene considerato incompleto fino a quando la composizione non viene terminata.

Servizi di testo

Un servizio di testo crea una composizione chiamando ITfContextComposition::StartComposition. Il servizio di testo può facoltativamente implementare un oggetto ITfCompositionSink che riceve le notifiche degli eventi di composizione. StartComposition restituisce un oggetto ITfComposition che il servizio di testo mantiene un riferimento a e utilizza per modificare e terminare la composizione. Il servizio di testo termina la composizione chiamando ITfComposition::EndComposition.

Se un servizio di testo creerà composizioni, dovrebbe supportare anche gli attributi di visualizzazione per consentire a un'applicazione di visualizzare testo che fa parte di una composizione in modo diverso rispetto al testo standard. Per altre informazioni, vedere Fornire attributi di visualizzazione.

Applicazioni

Un'applicazione può monitorare la creazione, la modifica e la terminazione delle composizioni installando un sink ITfContextOwnerCompositionSink. Quando viene avviata una composizione, viene chiamato ITfContextOwnerCompositionSink::OnStartComposition. Analogamente, quando una composizione viene modificata o terminata, ITfContextOwnerCompositionSink::OnUpdateComposition e verranno chiamati rispettivamente ITfContextOwnerCompositionSink::OnEndComposition.

Di seguito è riportata una procedura tipica per aggiornare un documento usando una composizione.

  1. ITextStoreACP::InsertTextAtSelection o ITextStoreAnchor::InsertTextAtSelection vengono in genere usati per inserire il testo iniziale nella composizione.
  2. La composizione viene avviata con una chiamata a ITfContextComposition::StartComposition, usando l'intervallo di testo restituito da InsertTextAtSelection.
  3. Quando riceve un nuovo input, ad esempio voce o tastiera, l'applicazione aggiorna la composizione con ITextStoreACP::SetText o ITextStoreAnchor::SetText.
  4. Quando l'applicazione determina che è il momento di terminare la composizione, chiama ITfComposition::EndComposition.

L'applicazione deve usare gli attributi di visualizzazione forniti dal servizio di testo per modificare sempre la visualizzazione del testo e non solo quando una composizione è attiva. Per altre informazioni, vedere Using Display Attributes.

Se necessario, un'applicazione può terminare una composizione chiamando ITfContextOwnerCompositionServices::TerminateComposition.