Compositions

Une composition est un état d’entrée temporaire qui permet à un service de texte de spécifier à l’application et à l’utilisateur que le texte d’entrée est toujours en état de modification. Une application peut et doit obtenir des informations d’attribut d’affichage sur la composition et utiliser ces informations pour afficher l’état de composition à l’utilisateur.

Un exemple d’utilisation d’une composition est pendant la saisie vocale. Pendant que l’utilisateur parle, le service de texte vocal crée une composition. Cette composition reste intacte jusqu’à ce que l’entrée vocale entière soit terminée. À la fin de la session, le service de texte vocal met fin à la composition.

Une application utilise la présence et l’absence d’une composition pour déterminer comment afficher le texte et ce qui, le cas échéant, le traitement doit être effectué sur le texte. Par exemple, si l’utilisateur utilise le moteur vocal pour entrer du texte, l’application ne doit pas effectuer de vérification orthographique ou grammaticale sur un texte de composition. Le texte est considéré comme incomplet jusqu’à ce que la composition soit terminée.

Services de texte

Un service de texte crée une composition en appelant ITfContextComposition::StartComposition. Le service de texte peut éventuellement implémenter un objet ITfCompositionSink qui reçoit des notifications d’événements de composition. StartComposition retourne un objet ITfComposition auquel le service de texte conserve une référence et utilise pour modifier et mettre fin à la composition. Le service de texte met fin à la composition en appelant ITfComposition::EndComposition.

Si un service de texte va créer des compositions, il doit également prendre en charge les attributs d’affichage pour permettre à une application d’afficher le texte qui fait partie d’une composition différemment du texte standard. Pour plus d’informations, consultez Fourniture d’attributs d’affichage.

Applications

Une application peut surveiller la création, la modification et l’arrêt des compositions en installant un récepteur ITfContextOwnerCompositionSink . Lorsqu’une composition est démarrée, ITfContextOwnerCompositionSink::OnStartComposition est appelé. De même, lorsqu’une composition est modifiée ou terminée, ITfContextOwnerCompositionSink::OnUpdateComposition et ITfContextOwnerCompositionSink::OnEndComposition sont appelés, respectivement.

Voici une procédure classique pour mettre à jour un document à l’aide d’une composition.

  1. ITextStoreACP::InsertTextAtSelection ou ITextStoreAnchor::InsertTextAtSelection sont généralement utilisés pour insérer le texte initial dans la composition.
  2. La composition est démarrée par un appel à ITfContextComposition::StartComposition, à l’aide de la plage de texte retournée par InsertTextAtSelection.
  3. Lorsqu’elle reçoit de nouvelles entrées telles que la parole ou le clavier, l’application met à jour la composition avec ITextStoreACP::SetText ou ITextStoreAnchor::SetText.
  4. Lorsque l’application détermine qu’il est temps de mettre fin à la composition, elle appelle ITfComposition::EndComposition.

L’application doit utiliser les attributs d’affichage fournis par le service de texte pour modifier l’affichage du texte à tout moment, et pas seulement lorsqu’une composition est active. Pour plus d’informations, consultez Utilisation d’attributs d’affichage.

Si nécessaire, une application peut mettre fin à une composition en appelant ITfContextOwnerCompositionServices::TerminateComposition.