子 ID 在參數中的使用方式
本主題描述如何解釋從 IAccessible 方法傳回的子識別碼的輸入參數、輸出參數和特殊案例。
輸入參數
許多Microsoft Active Accessibility 函式和大部分 IAccessible 屬性都會採用 VARIANT 結構作為輸入參數。 對於大部分 IAccessible 屬性,此參數可讓客戶端開發人員指定他們想要物件本身的相關信息,還是想要有關其中一個對象簡單元素的資訊。
Microsoft Active Accessibility 提供常數 CHILDID_SELF,以表示需要查詢關於該物件本身的資訊。 若要取得簡單項目的相關信息,客戶端開發人員會在 VARIANT 參數中指定其子標識碼。
初始化 VARIANT 參數時,除了在 lVal 成員中指定子標識符值 (或 CHILDID_SELF)之外,請務必在 vt 成員中指定 VT_I4。
例如,若要取得對象的名稱,而不是對象的子元素,請將變數 VARIANT 初始化為 IAccessible::get_accName 的第一個參數(在 lVal 成員中為 CHILDID_SELF,並在 vt 成員中為 VT_I4),然後呼叫 IAccessible::get_accName。
輸出參數
數個 IAccessible 函式和方法具有 VARIANT* 輸出參數,其中包含子ID或指向子物件的 IDispatch 介面指標。 客戶端必須採取不同的步驟,視其是否接收 VT_I4 子標識碼(簡單元素)或 IDispatch 介面指標與 CHILDID_SELF (完整物件)而定。 遵循下列步驟會提供 IAccessible 介面指標和子標識碼,讓客戶端能夠使用 IAccessible 方法和屬性。 這些步驟適用於 IAccessible::accHitTest、get_accFocus和 get_accSelection 方法。 它們也適用於 AccessibleObjectFromEvent、AccessibleObjectFromPoint和 AccessibleObjectFromWindow 用戶端函式。
下表列出傳回的可能結果,以及必要的後續處理步驟,讓用戶端會有 IAccessible 介面指標和子標識碼。
返回的結果 | 傳回值的後續處理 |
---|---|
IDispatch 介面指標 | 這是完整的物件。呼叫 QueryInterface,以存取 IAccessible介面指標。 使用 IAccessible 介面指標搭配 CHILDID_SELF 來存取 IAccessible 方法和屬性。 |
VT_I4子識別碼 | 使用子標識符呼叫 IAccessible::get_accChild,以查看您是否有 IDispatch 介面指標。如果您取得 IDispatch 介面指標,請使用它搭配 CHILDID_SELF 來存取 IAccessible 介面方法和屬性。 如果呼叫 get_accChild 失敗,您有一個簡單的元素。 使用您在上述方法或函式的呼叫中使用的原始 IAccessible 介面指標,以及呼叫傳回的 VT_I4 子標識碼。 |
您必須先呼叫 VariantInit 元件物件模型 (COM) 函式,才能使用 VARIANT 參數來初始化它。 當 結構完成時,請呼叫 VariantClear,以釋放保留給該 VARIANT的記憶體。
特殊案例
上表中的準則有例外狀況,例如當 IAccessible::accHitTest 方法傳回子識別碼時。 如果子系是可存取的對象,伺服器必須傳回 IDispatch 介面。 如果 IAccessible::accHitTest傳回子物件 ID,則該子物件是簡單元素。
此外,accNavigate也有特殊案例。 如需詳細資訊,請參閱 IAccessible::accNavigate 和 Spatial and Logical Navigation。