註釋控件模式
說明實作 IAnnotationProvider的指導方針和慣例,包括屬性和方法的相關信息。 註釋 控件模式是用來公開檔中註釋的屬性。
其中一個範例是批註批注方塊,位於文件的邊界,並連接到某些檔文字或電子表格單元格。
下圖顯示註釋的範例。 如需實作此控制項模式的控制項範例,請參閱 控制項類型和其支援的控制項模式。
本主題包含下列各節。
實作指導方針和慣例
實作 註釋 控件模式時,請注意下列指導方針和慣例:
- 有許多不同類型的註釋。 UIAutomationClient.h 頭檔會定義一組具名常數值,識別MICROSOFT使用者介面自動化支援的批注類型。 如需詳細資訊,請參閱 註釋類型識別碼。
- 如果您使用 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 text 属性,以參考批注。
- 某些種類的註釋不需要完整實作 IAnnotationProvider 介面。 例如,讓 ITextRangeProvider 介面傳回 AnnotationType_SpellingError的 AnnotationTypes text 屬性,以及 AnnotationObjects 文字屬性的 null 值,即可表示簡單的拼字錯誤指標。
- 在看不到的UI元素上實作 IAnnotationProvider 介面很有用。 例如,您可以建立非可見的UI自動化專案,以實作 IAnnotationProvider,以提供文法錯誤的擴充資訊。
- 如果控件包含重疊的批注,則以文字為基礎的控件中的批注可能會相當複雜。 使用下列指導方針來處理複雜的註釋:
- 沒有註釋的文字範圍應該會傳回 AnnotationTypes text 屬性的空陣列,以及 AnnotationObjects text 屬性的空數組。
- 具有一個註釋的文字範圍應該傳回一個整數值的陣列,AnnotationTypes text 屬性,以及一個 IRawElementProviderSimple 介面的數組,AnnotationObjects text 属性。
- 具有多個註釋的文字範圍應該傳回 AnnotationTypes text 屬性的多個整數值數組,以及 AnnotationObjects text 屬性的相符數目 IRawElementProviderSimple 介面的陣列。
- 具有不同批注的文字範圍,例如批注和非批註文字的範圍,應該針對 AnnotationTypes 和 AnnotationObjects傳回 ReservedMixedAttributeValue 属性。 接收此回應的用戶端可以細分文字範圍,以尋找批注開始和結束的位置。
IAnnotationProvider 的必要成員
實作 IAnnotationProvider 介面需要下列屬性。
必要成員 | 成員類型 | 筆記 |
---|---|---|
AnnotationTypeId | 財產 | 沒有。 |
AnnotationTypeName | 財產 | 沒有。 |
作者 | 財產 | 沒有。 |
DateTime | 財產 | 沒有。 |
目標 | 財產 | 沒有。 |
此控制件模式沒有相關聯的事件。
相關主題