Сведения о шаблонах элементов управления Text и TextRange
Текстовое содержимое элемента управления предоставляется с помощью шаблона элемента управления Текст , который представляет содержимое текстового контейнера в виде текстового потока. Шаблон элемента управления Текст требует поддержки шаблона элемента управления TextRange для предоставления атрибутов формата и стиля. Шаблон элемента управления TextRange поддерживает шаблон элемента управления Текст, предоставляя непрерывные или множественные несвязанные диапазоны текста (или диапазоны) в текстовом контейнере с коллекцией начальных и конечных точек. Шаблон элемента управления TextRange поддерживает такие функции, как выбор, сравнение, извлечение и обход.
Примечание
Шаблон элемента управления "Текст " не предоставляет средств для вставки или изменения текста. Однако в зависимости от элемента управления это можно сделать с помощью шаблона элемента управления Значение модель автоматизации пользовательского интерфейса Майкрософт или с помощью прямого ввода с помощью клавиатуры. Существует также шаблон TextEdit , который поддерживает программное изменение текста.
Функциональные возможности, описанные в этом разделе, крайне важны для поставщиков специальных возможностей и их конечных пользователей. Вспомогательные технологии могут использовать модель автоматизации пользовательского интерфейса для сбора полных сведений о форматировании текста для пользователя и обеспечения программной навигации и выделения текста с помощью TextUnit (символ, слово, строка или абзац).
Этот раздел состоит из следующих подразделов.
- модель автоматизации пользовательского интерфейса TextPattern и text Services Framework
- Типы элементов управления
- Интерфейсы поставщика
- Клиентские интерфейсы
- Производительность
- Шаблон текста и виртуализированные внедренные объекты
- Использование пользовательского типа элемента управления с шаблоном элемента управления "Текст"
- Время существования текстового диапазона
- Связанные темы
модель автоматизации пользовательского интерфейса TextPattern и text Services Framework
Text Services Framework (TSF) — это простая и масштабируемая системная платформа, которая обеспечивает службы естественного языка и расширенный ввод текста на рабочем столе и в приложениях. Помимо предоставления интерфейсов для приложений для предоставления хранилища текста, он также поддерживает метаданные для хранилища текста.
TSF был разработан для приложений, которым необходимо внедрять входные данные в контекстные сценарии. Шаблон элемента управления "Текст" , однако, является решением только для чтения, которое предназначено для предоставления оптимизированного доступа к хранилищу текста для средств чтения с экрана и устройств Брайля.
Технологии со специальными возможностями, требующие доступа только для чтения к хранилищу текста, могут использовать шаблон элемента управления "Текст", но требуются функции TSF для контекстного ввода.
Дополнительные сведения см. в разделе Text Services Framework.
Типы элементов управления
Тип элемента управления модель автоматизации пользовательского интерфейса Изменить и Тип элемента управления "Документ" должны поддерживать шаблон элемента управления "Текст". Для улучшения специальных возможностей корпорация Майкрософт рекомендует, чтобы типы элементов управления ToolTip и Text также поддерживали шаблон элемента управления Текст, но это необязательно.
Интерфейсы поставщика
поставщики модель автоматизации пользовательского интерфейса поддерживают шаблон элемента управления Текст для элемента управления путем реализации интерфейсов ITextProvider и ITextRangeProvider. Эти интерфейсы предоставляют подробные сведения об атрибутах для текста в элементе управления и предоставляют надежные возможности навигации.
Поставщику не нужно поддерживать все текстовые атрибуты, если элемент управления не поддерживает какой-либо определенный атрибут.
Поставщик должен поддерживать методы ITextProvider::GetSelection и ITextRangeProvider::Select , если элемент управления поддерживает выделение текста или размещение текстового курсора (или системного курсора) в текстовой области. Если элемент управления не поддерживает эту функцию, ему не нужно поддерживать ни один из этих методов. Однако элемент управления должен предоставлять поддерживаемый тип выделения текста путем реализации свойства ITextProvider::SupportedTextSelection .
Поставщик всегда должен поддерживать константы TextUnit , TextUnit_Character и TextUnit_Document, а также любые другие, которые он может поддерживать.
Примечание
Поставщик может пропустить поддержку определенного Объекта TextUnit , отложив его до следующего наиболее крупного блока, поддерживаемого в следующем порядке: TextUnit_Character, TextUnit_Format, TextUnit_Word, TextUnit_Line, TextUnit_Paragraph, TextUnit_Page и TextUnit_Document.
Клиентские интерфейсы
модель автоматизации пользовательского интерфейса клиентские приложения используют интерфейсы IUIAutomationTextPattern и IUIAutomationTextRange для доступа к текстовому содержимому элемента управления текстом. Клиенты используют IUIAutomationTextPattern для выбора диапазонов текста, называемых текстовыми диапазонами, и для получения указателей на интерфейсы IUIAutomationTextRange для диапазонов. Интерфейс IUIAutomationTextRange позволяет клиентам управлять текстовым диапазоном и получать сведения о тексте в диапазоне, включая такие атрибуты, как имя шрифта, цвет переднего плана, стиль подчеркивания и т. д. Дополнительные сведения см. в разделе Идентификаторы атрибутов текста.
Производительность
Шаблон элемента управления Текст использует межпроцессные вызовы для большей части своей функциональности, поэтому он не предоставляет механизм кэширования для повышения производительности при обработке содержимого. Другие шаблоны элементов управления в Microsoft модель автоматизации пользовательского интерфейса можно получить с помощью метода IUIAutomationElement::GetCachedPattern.
Одним из способов повышения производительности является обеспечение того, чтобы клиенты модель автоматизации пользовательского интерфейса пытались получить блоки текста умеренного размера с помощью метода IUIAutomationTextRange::GetText. Например, использование GetText для получения отдельных символов приведет к попаданиям между процессами для каждого символа, в то время как если не указать максимальную длину при вызове GetText , это приведет к одному попаданию между процессами, но может иметь высокую задержку в зависимости от размера текстового диапазона.
Шаблон текста и виртуализированные внедренные объекты
По возможности реализация ITextProvider и ITextRangeProvider должна поддерживать весь текст документа, включая любой текст за пределами окна просмотра. Для виртуализированного текста или внедренных объектов поставщики должны поддерживать шаблон элемента управления VirtualizedItem (IVirtualizedItemProvider).
Если документ виртуализирован, а весь текстовый поток по-прежнему доступен, свойство ITextProvider::D ocumentRange извлекает диапазон текста, включающий весь документ. Однако вызов метода ITextRangeProvider извлекает коллекцию виртуализированных объектов, представляющих все внедренные объекты в документе. Для взаимодействия с виртуализированным внедренным объектом клиенты должны вызвать метод IVirtualizedItemProvider::Realize, который делает элементы полностью доступными как модель автоматизации пользовательского интерфейса элементы. Клиенты должны следовать аналогичному процессу для работы с элементами сетки во внедренной таблице, где часть таблицы находится вне экрана и виртуализирована.
Использование пользовательского типа элемента управления с шаблоном элемента управления "Текст"
Хотя шаблон элемента управления Текст поддерживает множество текстовых атрибутов и внедренных объектов, невозможно заранее определить все возможные элементы документа и типы презентаций. Для элементов документа, которые не поддерживаются существующими атрибутами или стандартными типами элементов управления, поставщики могут использовать функции расширяемости, предоставляемые типом пользовательского элемента управления модель автоматизации пользовательского интерфейса.
Для приложений и пользовательских интерфейсов, основанных на презентациях страниц, представление границ и макета "page" также может быть выражено как внедренный объект с пользовательским типом элемента управления (т. е LocalizedControlType="page"
. ). Таким образом, внедренный объект может размещать другие элементы страницы, которые не могут быть частью текстового потока документа, например поля колонтитулов каждой страницы, как дочерние элементы внедренного объекта page. Кроме того, каждый объект "page" может независимо поддерживать шаблон элемента управления "Текст ", который хорошо подходит для таких приложений, как средства разработки для презентаций слайд-шоу или среды публикации на основе страниц на рабочем столе.
Время существования текстового диапазона
Если это возможно, поставщик должен убедиться, что все изменения текста, такие как удаления, вставки и перемещения, отражаются в связанном диапазоне текста. Если обновление текстового диапазона невозможно, поставщик должен вызвать событие UIA_Text_TextChangedEventId , чтобы уведомить клиентов о том, что текстовый диапазон больше недействителен и что необходимо получить новый.
Связанные темы
-
Основные понятия
-
Как модель автоматизации пользовательского интерфейса поддерживает внедренные объекты
-
Общие сведения о шаблонах элементов управления модели автоматизации пользовательского интерфейса
-
Модель автоматизации пользовательского интерфейса поддержка текстового содержимого
-
Другие ресурсы