Шаблон элемента управления заметками

Описание рекомендаций и соглашений по реализации IAnnotationProvider, включая сведения о свойствах и методах. Шаблон элемента управления Заметки используется для предоставления свойств заметки в документе.

Одним из примеров является выноска примечаний, которая находится на полях документа и связана с текстом документа или ячейкой электронной таблицы.

На следующем рисунке показан пример заметки. Примеры элементов управления, реализующих этот шаблон, см. в разделах Типы элементов управления и поддерживаемые ими шаблоны элементов управления.

Снимок экрана: балуон комментариев в документе

В этом разделе содержатся следующие подразделы.

Правила и соглашения реализации

При реализации шаблона элемента управления Заметки обратите внимание на следующие рекомендации и соглашения.

  • Существует множество различных видов заметок. Файл заголовка UIAutomationClient.h определяет набор именованных значений констант, определяющих типы заметок, поддерживаемые Microsoft модель автоматизации пользовательского интерфейса. Дополнительные сведения см. в разделе Идентификаторы типов заметки.
  • При использовании AnnotationType_Unknown необходимо реализовать свойство IAnnotationProvider::AnnotationTypeName , чтобы клиенты могли обнаруживать имя типа заметки. Вам не нужно реализовывать AnnotationTypeName для стандартного типа заметки, так как модель автоматизации пользовательского интерфейса предоставляет имя по умолчанию, но его можно реализовать, если нужно переопределить имя по умолчанию.
  • Свойство IAnnotationProvider::Author является необязательным.
  • Свойство IAnnotationProvider::D ateTime является необязательным.
  • Свойство IAnnotationProvider::Target является обязательным, так как оно связывает заметку с элементом пользовательского интерфейса, позволяя клиенту переходить от заметки обратно к элементу пользовательского интерфейса, на который ссылается заметка.
  • Поскольку заметки могут принимать различные формы, интерфейс IAnnotationProvider не определяет свойство для хранения значения или текста заметки. Простая заметка должна предоставлять интерфейс IValueProvider , а свойство IValueProvider::Value должно возвращать доступное только для чтения значение, указывающее текст заметки. Более расширенная заметка должна предоставлять интерфейс ITextProvider для предоставления клиентам более полного текста.
  • Переход от элемента пользовательского интерфейса к заметке в элементе зависит от типа элемента, в который добавляется заметка, как показано ниже.
  • Некоторые виды заметок не требуют полной реализации интерфейса IAnnotationProvider . Например, простой индикатор орфографической ошибки может быть представлен тем, что интерфейс ITextRangeProvider возвращает текстовый атрибут AnnotationTypesAnnotationType_SpellingError и значение NULL для текстового атрибута AnnotationObjects .
  • Может быть полезно реализовать интерфейс IAnnotationProvider в невидимом элементе пользовательского интерфейса. Например, можно создать невидимый элемент модель автоматизации пользовательского интерфейса, реализующий IAnnotationProvider для предоставления расширенных сведений о грамматической ошибке.
  • Заметки в текстовом элементе управления могут быть сложными, если элемент управления содержит перекрывающиеся комментарии. Используйте следующие рекомендации для обработки сложных заметок.
    • Текстовый диапазон без заметок должен возвращать пустой массив для текстового атрибута AnnotationTypes и пустой массив для текстового атрибута AnnotationObjects .
    • Текстовый диапазон с одной заметкой должен возвращать массив из одного целочисленного значения для текстового атрибута AnnotationTypes и массив одного интерфейса IRawElementProviderSimple для текстового атрибута AnnotationObjects .
    • Текстовый диапазон с несколькими заметками должен возвращать массив из нескольких целочисленных значений для текстового атрибута AnnotationTypes и массив соответствующего числа интерфейсов IRawElementProviderSimple для текстового атрибута AnnotationObjects .
    • Текстовый диапазон с различными заметками, например диапазон с аннотированной и неаннотированной текстом, должен возвращать свойство ReservedMixedAttributeValue как для AnnotationTypes, так и для AnnotationObjects. Клиент, получающий этот ответ, может разделить диапазон текста, чтобы найти, где начинаются и заканчиваются заметки.

Обязательные члены для IAnnotationProvider

Для реализации интерфейса IAnnotationProvider требуются следующие свойства.

Обязательные члены Тип члена Примечания
AnnotationTypeId Свойство Нет.
AnnotationTypeName Свойство Нет.
Автор Свойство Нет.
Дата и время Свойство Нет.
Назначение Свойство Нет.

 

Этот шаблон элемента управления не имеет связанных событий.

Типы элементов управления и поддерживаемые ими шаблоны элементов управления

Общие сведения о шаблонах элементов управления модели автоматизации пользовательского интерфейса

Общие сведения о дереве модели автоматизации пользовательского интерфейса