Cómo se usan los identificadores secundarios en parámetros

En este tema se describen los parámetros de entrada, los parámetros de salida y los casos especiales para interpretar los identificadores secundarios devueltos por métodos IAccessible .

Parámetros de entrada

Muchas de las funciones de accesibilidad activa de Microsoft y la mayoría de las propiedades IAccessible toman una estructura VARIANT como parámetro de entrada. Para la mayoría de las propiedades IAccessible , este parámetro permite a los desarrolladores cliente especificar si quieren información sobre el propio objeto o sobre uno de los elementos simples del objeto.

Accesibilidad activa de Microsoft proporciona la constante CHILDID_SELF para indicar que se necesita información sobre el propio objeto. Para obtener información sobre un elemento simple, los desarrolladores cliente especifican su identificador secundario en el parámetro VARIANT .

Al inicializar un parámetro VARIANT , asegúrese de especificar VT_I4 en el miembro vt además de especificar el valor de identificador secundario (o CHILDID_SELF) en el miembro lVal .

Por ejemplo, para obtener el nombre de un objeto y no uno de los elementos secundarios del objeto, inicialice el variant para el primer parámetro de IAccessible::get_accName ( CHILDID_SELF en el miembro lVal y VT_I4 en el miembro vt ) y, a continuación, llame a IAccessible::get_accName.

Parámetros de salida

Varias funciones y métodos IAccessible tienen un parámetro de salida VARIANT* que contiene un identificador secundario o un puntero de interfaz IDispatch a un objeto secundario. Hay diferentes pasos que un cliente debe realizar en función de si reciben un identificador secundario de VT_I4 (elemento simple) o un puntero de interfaz IDispatch con CHILDID_SELF (objeto completo). Siguiendo estos pasos, se proporcionará un puntero de interfaz IAccessible y un identificador secundario que, juntos, permiten a los clientes usar las propiedades y los métodos IAccessible . Estos pasos se aplican a los métodos IAccessible::accHitTest, get_accFocus y get_accSelection . También se aplican a las funciones de cliente AccessibleObjectFromEvent, AccessibleObjectFromPoint y AccessibleObjectFromWindow .

En la tabla siguiente se enumeran los posibles resultados devueltos y los pasos posteriores necesarios para que los clientes tengan un puntero de interfaz IAccessible y un identificador secundario.

Resultado devuelto Procesamiento posterior al valor devuelto
Puntero de interfaz IDispatch Se trata de un objeto completo. Llame a QueryInterface para acceder al puntero de interfaz IAccessible .
Use el puntero de interfaz IAccessible con CHILDID_SELF para acceder a propiedades y métodos IAccessible .
VT_I4 identificador secundario Llame a IAccessible::get_accChild con el identificador secundario para ver si tiene un puntero de interfaz IDispatch . Si obtiene un puntero de interfaz IDispatch , úselo con CHILDID_SELF para acceder a propiedades y métodos de interfaz IAccessible .
Si se produce un error en la llamada a get_accChild , tiene un elemento simple. Use el puntero de interfaz IAccessible original (el que usó en la llamada al método o función mencionado anteriormente) con el identificador secundario VT_I4 que devolvió la llamada.

Para poder usar un parámetro VARIANT , debe inicializarlo llamando a la función VariantInit Component Object Model (COM). Cuando termine con la estructura, llame a VariantClear para liberar la memoria reservada para ese VARIANT.

Casos especiales

Hay excepciones a las directrices de la tabla anterior, como cuando el método IAccessible::accHitTest devuelve un identificador secundario. Los servidores deben devolver una interfaz IDispatch si el elemento secundario es un objeto accesible. Si IAccessible::accHitTest devuelve un identificador secundario, el elemento secundario es un elemento simple.

Además, hay casos especiales para accNavigate. Para obtener más información, vea IAccessible::accNavigate y Navegación espacial y lógica.

Conceptual

IDispatch (interfaz)

Variant (estructura)