本主题描述了用于解释从IAccessible方法返回的子 ID 的输入参数、输出参数和特殊情况。
输入参数许多 Microsoft Active Accessibility 函数和大多数IAccessible属性都采用VARIANT结构作为输入参数。对于大多数IAccessible属性,此参数允许客户端开发人员指定他们是需要有关对象本身的信息还是有关对象的简单元素之一的信息。
Microsoft Active Accessibility 提供常量CHILDID_SELF以指示需要有关对象本身的信息。要获取有关简单元素的信息,客户端开发人员在VARIANT参数中指定其子 ID 。
初始化VARIANT参数时,除了在lVal成员中指定子 ID 值(或CHILDID_SELF)外,请确保在vt成员中指定VT_I4。
例如,要得到一个对象的名称,而不是对象的子元素之一,初始化VARIANT的第一个参数的IAccessible :: get_accName(将LVAL成员指定为CHILDID_SELF,将VT成员指定为VT_I4),然后调用的IAccessible ::get_accName。
输出参数几个IAccessible函数和方法有一个VARIANT * 输出参数,其中包含一个子 ID 或一个IDispatch接口指针到一个子对象。客户端必须采取不同的步骤,具体取决于他们是收到VT_I4子 ID(简单元素)还是带有CHILDID_SELF(完整对象)的IDispatch接口指针。遵循这些步骤将提供IAccessible接口指针和子 ID,它们一起允许客户端使用IAccessible方法和属性。这些步骤适用于IAccessible::accHitTest、get_accFocus和get_accSelection方法。它们也适用于AccessibleObjectFromEvent、 AccessibleObjectFromPoint和AccessibleObjectFromWindow客户端函数。
下表列出了可能返回的结果和所需的后处理步骤,以便客户端拥有IAccessible接口指针和子 ID。
在您可以使用VARIANT参数之前,您必须通过调用VariantInit组件对象模型 (COM) 函数对其进行初始化。完成结构后,调用VariantClear以释放为该VARIANT保留的内存。
特别案例上表中的准则存在例外情况,例如当IAccessible::accHitTest方法返回子 ID 时。如果子对象是可访问的对象,则服务器必须返回IDispatch接口。如果IAccessible::accHitTest返回子 ID ,则子元素是一个简单元素。
此外,还有accNavigate 的特殊情况。有关详细信息,请参阅IAccessible::accNavigate和空间和逻辑导航。