À propos des modèles de contrôle Text et TextRange

Le contenu textuel d’un contrôle est exposé à l’aide du modèle de contrôle Texte , qui représente le contenu d’un conteneur de texte sous forme de flux de texte. Le modèle de contrôle Text nécessite la prise en charge du modèle de contrôle TextRange pour exposer les attributs de format et de style. Le modèle de contrôle TextRange prend en charge le modèle de contrôle Text en représentant des étendues de texte contiguës ou multiples et disjointes (ou plages) dans un conteneur de texte avec une collection de points de terminaison de début et de fin. Le modèle de contrôle TextRange prend en charge des fonctionnalités telles que la sélection, la comparaison, la récupération et la traversée.

Notes

Le modèle de contrôle Text ne permet pas d’insérer ou de modifier du texte. Toutefois, selon le contrôle, cela peut être effectué à l’aide du modèle de contrôle Valeur Microsoft UI Automation ou à l’aide d’une entrée directe au clavier. Il existe également un modèle TextEdit qui prend en charge la modification par programmation du texte.

 

Les fonctionnalités décrites dans cette rubrique sont essentielles pour les fournisseurs de technologies d’assistance et leurs utilisateurs finaux. Les technologies d’assistance peuvent utiliser UI Automation pour collecter des informations de mise en forme de texte complètes pour l’utilisateur et fournir une navigation par programme et une sélection de texte par TextUnit (caractère, mot, ligne ou paragraphe).

Cette rubrique contient les sections suivantes :

UI Automation TextPattern et text Services Framework

Text Services Framework (TSF) est une infrastructure système simple et évolutive qui permet des services en langage naturel et une entrée de texte avancée sur le bureau et dans les applications. En plus de fournir des interfaces permettant aux applications d’exposer leur magasin de texte, il prend également en charge les métadonnées pour le magasin de texte.

TSF a été conçu pour les applications qui doivent injecter des entrées dans des scénarios contextuels. Le modèle de contrôle Texte , toutefois, est une solution en lecture seule destinée à fournir un accès optimisé à un magasin de texte pour les lecteurs d’écran et les appareils Braille.

Les technologies accessibles qui nécessitent un accès en lecture seule à un magasin de texte peuvent utiliser le modèle de contrôle Texte, mais auront besoin des fonctionnalités de TSF pour une entrée contextuelle.

Pour plus d’informations, consultez Text Services Framework.

Types de contrôles

Le UI Automation type de contrôle Modifier et le type de contrôle Document doivent prendre en charge le modèle de contrôle Texte. Pour améliorer l’accessibilité, Microsoft recommande que les types d’info-bulle et de contrôle Texte prennent également en charge le modèle de contrôle Texte, mais ce n’est pas obligatoire.

Interfaces de fournisseur

UI Automation fournisseurs prennent en charge le modèle de contrôle Text pour un contrôle en implémentant les interfaces ITextProvider et ITextRangeProvider. Ces interfaces exposent des informations détaillées sur les attributs du texte dans le contrôle et fournissent des fonctionnalités de navigation robustes.

Un fournisseur n’a pas besoin de prendre en charge tous les attributs de texte si le contrôle ne prend pas en charge un attribut particulier.

Un fournisseur doit prendre en charge les méthodes ITextProvider::GetSelection et ITextRangeProvider::Select si le contrôle prend en charge la sélection de texte ou le placement du curseur de texte (ou de la caret système) dans la zone de texte. Si le contrôle ne prend pas en charge cette fonctionnalité, il n’a pas besoin de prendre en charge l’une ou l’autre de ces méthodes. Toutefois, le contrôle doit exposer le type de sélection de texte qu’il prend en charge en implémentant la propriété ITextProvider::SupportedTextSelection .

Un fournisseur doit toujours prendre en charge les constantes TextUnit , les TextUnit_Character et les TextUnit_Document, ainsi que toutes les autres qu’il est en mesure de prendre en charge.

Notes

Le fournisseur peut ignorer la prise en charge d’un TextUnit spécifique en se reportant à la plus grande unité suivante prise en charge dans l’ordre suivant : TextUnit_Character, TextUnit_Format, TextUnit_Word, TextUnit_Line, TextUnit_Paragraph, TextUnit_Page et TextUnit_Document.

 

Interfaces clientes

UI Automation applications clientes utilisent les interfaces IUIAutomationTextPattern et IUIAutomationTextRange pour accéder au contenu textuel d’un contrôle de texte. Les clients utilisent IUIAutomationTextPattern pour sélectionner des étendues de texte appelées plages de texte et pour récupérer des pointeurs vers les interfaces IUIAutomationTextRange pour les plages. L’interface IUIAutomationTextRange permet aux clients de manipuler la plage de texte et de récupérer des informations sur le texte de la plage, notamment des attributs tels que le nom de la police, la couleur de premier plan, le style de soulignement, etc. Pour plus d’informations, consultez Identificateurs d’attribut de texte.

Performances

Le modèle de contrôle Texte s’appuie sur des appels inter-processus pour la plupart de ses fonctionnalités, de sorte qu’il ne fournit pas de mécanisme de mise en cache pour améliorer les performances lors du traitement du contenu. D’autres modèles de contrôle dans Microsoft UI Automation sont accessibles à l’aide de la méthode IUIAutomationElement::GetCachedPattern.

L’une des techniques permettant d’améliorer les performances consiste à s’assurer que UI Automation clients tentent de récupérer des blocs de texte de taille moyenne à l’aide de la méthode IUIAutomationTextRange::GetText. Par exemple, l’utilisation de GetText pour récupérer des caractères uniques entraîne des accès interprocesseurs pour chaque caractère, tandis que le fait de ne pas spécifier une longueur maximale lors de l’appel de GetText entraîne un accès interprocesseur, mais peut avoir une latence élevée en fonction de la taille de la plage de texte.

Modèle de texte et objets incorporés virtualisés

Dans la mesure du possible, une implémentation fournisseur d’ITextProvider et D’ITextRangeProvider doit prendre en charge l’intégralité du texte d’un document, y compris tout texte en dehors de la fenêtre d’affichage. Pour le texte hors écran ou les objets incorporés virtualisés, les fournisseurs doivent prendre en charge le modèle de contrôle VirtualizedItem (IVirtualizedItemProvider).

Si un document est virtualisé alors que l’ensemble du flux de texte est toujours disponible, la propriété ITextProvider::D ocumentRange récupère une plage de texte qui inclut l’ensemble du document. Toutefois, l’appel de la méthode ITextRangeProvider récupère une collection d’objets virtualisés qui représentent tous les objets incorporés dans le document. Pour interagir avec un objet incorporé virtualisé, les clients doivent appeler la méthode IVirtualizedItemProvider::Realize, qui rend les éléments entièrement accessibles en tant qu’éléments UI Automation. Les clients doivent suivre un processus similaire pour travailler avec des éléments de grille dans une table incorporée où une partie de la table est hors écran et virtualisée.

Utilisation du type de contrôle personnalisé avec le modèle de contrôle de texte

Bien que le modèle de contrôle Texte prenne en charge de nombreux attributs de texte et objets incorporés, il n’est pas possible de définir à l’avance tous les éléments de document et types de présentation possibles. Pour les éléments de document qui ne sont pas pris en charge par les attributs existants ou les types de contrôle standard, les fournisseurs peuvent utiliser les fonctionnalités d’extensibilité fournies par le type de contrôle personnalisé UI Automation.

Pour les applications et les interfaces utilisateur basées sur des présentations de page, la limite et la présentation de mise en page de « page » peuvent également être exprimées sous la forme d’un objet incorporé qui a un type de contrôle personnalisé (autrement dit, LocalizedControlType="page"). De cette façon, l’objet incorporé peut héberger d’autres éléments de page qui ne peuvent pas facilement faire partie du flux de texte du document, tels que les champs d’en-tête et de pied de page de chaque page, en tant qu’enfants de l’objet incorporé « page ». Sinon, chaque objet « page » peut prendre en charge le modèle de contrôle Texte indépendamment, ce qui fonctionne bien pour les applications telles que les outils de création pour les présentations de diaporamas ou les environnements de publication de bureau basés sur des pages.

Durée de vie d’une plage de texte

Si possible, un fournisseur doit s’assurer que les modifications de texte, telles que les suppressions, les insertions et les déplacements, sont reflétées dans la plage de texte associée. Si la mise à jour de la plage de texte n’est pas possible, le fournisseur doit déclencher un événement UIA_Text_TextChangedEventId pour informer les clients que la plage de texte n’est plus valide et qu’une nouvelle plage de texte doit être récupérée.

Conceptuel

Comment UI Automation prend en charge les objets incorporés

Vue d'ensemble des modèles de contrôle UI Automation

UI Automation prise en charge du contenu textuel

Utilisation de contrôles textuels

Autres ressources

Text Services Framework