參數中使用子識別碼的方式

本主題描述輸入參數、輸出參數,以及解譯從 IAccessible 方法傳回之子識別碼的特殊案例。

輸入參數

許多 Microsoft Active Accessibility 函式和大部分 的 IAccessible 屬性都會採用 VARIANT 結構作為輸入參數。 對於大部分 的 IAccessible 屬性,此參數可讓用戶端開發人員指定他們想要物件本身或其中一個物件簡單元素的相關資訊。

Microsoft Active Accessibility 提供常數 CHILDID_SELF ,以指出物件本身需要的資訊。 若要取得簡單元素的相關資訊,用戶端開發人員會在 VARIANT 參數中指定其子 識別碼

初始化VARIANT參數時,除了在lVal成員中指定子識別碼值 (或CHILDID_SELF) 之外,請務必在vt成員中指定VT_I4。

例如,若要取得物件的名稱,而不是其中一個物件的子項目,請初始化lVal成員中第一個參數的VARIANT::get_accName ( CHILDID_SELF,然後在vt成員) 中VT_I4,然後呼叫IAccessible::get_accName

輸出參數

數個 IAccessible 函式和方法都有 VARIANT* 輸出參數,其中包含子識別碼或子物件的 IDispatch 介面指標。 根據用戶端接收VT_I4子識別碼 (簡單元素) (或具有CHILDID_SELF (完整物件) 的 IDispatch介面指標,用戶端必須採取不同的步驟。 遵循這些步驟會提供 IAccessible 介面指標和子識別碼,讓用戶端能夠使用 IAccessible 方法和屬性。 這些步驟適用于 IAccessible::accHitTestget_accFocusget_accSelection 方法。 它們也適用于 AccessibleObjectFromEventAccessibleObjectFromPointAccessibleObjectFromWindow 用戶端函式。

下表列出傳回的可能結果,以及必要的後置處理步驟,讓用戶端會有 IAccessible 介面指標和子識別碼。

傳回的結果 傳回值的後續處理
IDispatch 介面指標 這是完整的 物件。呼叫 QueryInterface 以存取 IAccessible 介面指標。
使用具有CHILDID_SELFIAccessible介面指標來存取IAccessible方法和屬性。
VT_I4子識別碼 使用子識別碼 呼叫 IAccessible::get_accChild ,以查看您是否有 IDispatch 介面指標。如果您收到 IDispatch 介面指標,請使用它搭配 CHILDID_SELF 來存取 IAccessible 介面方法和屬性。
如果 呼叫 get_accChild 失敗,您就會有簡單的元素。 使用原始 IAccessible 介面指標 (您在呼叫上述方法或函式中使用的介面指標,) 傳回 的VT_I4 子識別碼。

您必須先呼叫VariantInit元件物件模型 (COM) 函式來初始化 VARIANT 參數,才能使用VARIANT參數。 當結構完成時,請呼叫 VariantClear 以釋放保留給該 VARIANT的記憶體。

特殊案例

上表中的指導方針有例外,例如 IAccessible::accHitTest 方法傳回子識別碼時。 如果子系是可存取的物件,伺服器必須傳回 IDispatch 介面。 如果 IAccessible::accHitTest傳回子識別碼,則子系是簡單的元素。

此外, accNavigate也有特殊案例。 如需詳細資訊,請參閱 IAccessible::accNavigateSpatial and Logical Navigation

概念

IDispatch 介面

VARIANT 結構