注釈コントロール パターン
プロパティとメソッドに関する情報など、 IAnnotationProvider を実装するためのガイドラインと規則について説明します。 注釈コントロール パターンは、ドキュメント内の注釈のプロパティを公開するために使用されます。
たとえば、文書の余白にあるコメント吹き出しを、文書のテキストまたはスプレッドシート セルに接続します。
次の図は、注釈の例を示しています。 このコントロール パターンを実装するコントロールの例については、「 コントロールの種類とサポートされているコントロール パターン」を参照してください。
このトピックは、次のセクションで構成されています。
実装のガイドラインと規則
注釈コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。
- 注釈にはさまざまな種類があります。 UIAutomationClient.h ヘッダー ファイルは、Microsoft UI オートメーションがサポートする注釈の種類を識別する名前付き定数値のセットを定義します。 詳細については、「 注釈型識別子」を参照してください。
- AnnotationType_Unknownを使用する場合は、クライアントが注釈型の名前を検出できるようにするには、IAnnotationProvider::AnnotationTypeName プロパティを実装する必要があります。 標準の注釈型に AnnotationTypeName を実装する必要はありません。UI オートメーションは既定の名前を提供しますが、既定の名前をオーバーライドする必要がある場合は実装できます。
- IAnnotationProvider::Author プロパティは省略可能です。
- IAnnotationProvider::D ateTime プロパティは省略可能です。
- IAnnotationProvider::Target プロパティは、注釈を UI 要素にリンクし、クライアントが注釈から注釈が参照する UI 要素に戻るために必要です。
- 注釈にはさまざまな形式を使用できるため、 IAnnotationProvider インターフェイスでは、注釈の値またはテキストを格納するためのプロパティは定義されません。 単純な注釈は IValueProvider インターフェイスを公開する必要があり、 IValueProvider::Value プロパティは注釈テキストを指定する読み取り専用の値を返す必要があります。 より豊富な注釈では、クライアントにより豊富なテキストを提供するために 、ITextProvider インターフェイスを公開する必要があります。
- UI 要素から 要素の注釈への移動は、次のように注釈が付けられている要素の種類によって異なります。
- スプレッドシート セルの場合は、注釈を参照する ISpreadsheetItemProvider::GetAnnotationObjects メソッドを実装します。
- テキスト コンテンツの場合は、注釈を参照するために、ITextRangeProvider インターフェイスに AnnotationObjects テキスト属性を実装します。
- 一部の種類の注釈では、 IAnnotationProvider インターフェイスの完全な実装は必要ありません。 たとえば、ITextRangeProvider インターフェイスから AnnotationType_SpellingError の AnnotationTypes テキスト属性を返し、AnnotationObjects テキスト属性に null 値を返すことで、単純なスペル ミス インジケーターを表すことができます。
- 表示されない UI 要素に IAnnotationProvider インターフェイスを実装すると便利です。 たとえば、IAnnotationProvider を実装する非表示のUI オートメーション要素を作成して、文法エラーに関する拡張情報を提供できます。
- テキスト ベースのコントロール内の注釈は、コントロールに重複するコメントが含まれている場合、複雑になる可能性があります。 複雑な注釈を処理するには、次のガイドラインを使用します。
- 注釈のないテキスト範囲は、 AnnotationTypes テキスト属性の空の配列と AnnotationObjects テキスト属性の空の配列を返す必要があります。
- 注釈が 1 つのテキスト範囲は、AnnotationTypes テキスト属性に対して 1 つの整数値の配列と、AnnotationObjects テキスト属性の 1 つの IRawElementProviderSimple インターフェイスの配列を返す必要があります。
- 複数の注釈を持つテキスト範囲は、AnnotationTypes テキスト属性の複数の整数値の配列と、AnnotationObjects テキスト属性に対応する数の IRawElementProviderSimple インターフェイスの配列を返す必要があります。
- 注釈付きテキストと注釈なしテキストの両方を含む範囲など、さまざまな注釈を持つテキスト範囲は、AnnotationTypes と AnnotationObjects の両方に対して ReservedMixedAttributeValue プロパティを返す必要があります。 この応答を受け取るクライアントは、テキスト範囲を分割して、注釈の開始位置と終了位置を見つけることができます。
IAnnotationProvider の必須メンバー
IAnnotationProvider インターフェイスを実装するために、次のプロパティが必要です。
必須メンバー | メンバーの型 | メモ |
---|---|---|
AnnotationTypeId | プロパティ | [なし] : |
AnnotationTypeName | プロパティ | [なし] : |
Author | プロパティ | [なし] : |
DateTime | プロパティ | [なし] : |
移行先 | プロパティ | [なし] : |
このコントロール パターンには、関連するイベントがありません。
関連トピック