Usar anotación de servidor

En este tema se proporciona información sobre el uso de la anotación del servidor para especificar un objeto de devolución de llamada.

Para invalidar una propiedad que especifica un objeto de devolución de llamada

  1. Obtenga un puntero de interfaz IAccessible al elemento accesible que se va a anotar.
  2. Llame a QueryInterface en el elemento accesible para obtener un puntero de interfaz IAccIdentity .
  3. Llame a IAccIdentity::GetIdentityString() en el puntero de interfaz IAccIdentity para obtener una cadena que identifique de forma única el elemento accesible que se va a anotar.
  4. Use CoCreateInstance o CoCreateInstanceEx para crear el objeto IAccPropServices .
  5. Cree un objeto Component Object Model (COM) que implemente IAccPropServer.
  6. Llame a IAccPropServices::SetPropServer, pasando la cadena de identidad, un GUID que indica la propiedad que se va a invalidar y un puntero al objeto de devolución de llamada IAccPropServer .
  7. Liberar punteros de interfaz y memoria libre.

Cuando un cliente solicita la propiedad del elemento accesible, se llamará al objeto de devolución de llamada y devolverá el valor al cliente.

Al especificar un valor, los desarrolladores de servidores pueden usar alternativamente el método IAccPropServices::ComposeHwndIdentityString para obtener una cadena de identidad; o pueden usar el método IAccPropServices::SetHwndPropServer y especificar los parámetros hwnd, idObject o idChild en lugar de una cadena de identidad.

Al usar SetPropServer o SetHwndPropServer en un objeto contenedor, los desarrolladores de servidores pueden especificar opcionalmente que la información de invalidación también se aplique a todos los elementos secundarios de ese contenedor.

Los servidores pueden borrar explícitamente la anotación en cualquier momento mediante IAccPropServices::ClearProps. Normalmente, esto no es necesario, ya que el servicio de anotación limpiará y liberará automáticamente la información de anotación cuando el elemento accesible que se anota desaparece.

A continuación se muestra una lista de propiedades que se pueden anotar mediante este procedimiento.

Propiedades admitidas al especificar una devolución de llamada

Al especificar una devolución de llamada, se pueden anotar las siguientes propiedades. Actualmente, estas propiedades no se pueden anotar directamente especificando un valor.

Propiedad Tipo
PROPID_ACC_NAME VT_BSTR
PROPID_ACC_DESCRIPTION VT_BSTR
PROPID_ACC_ROLE VT_I4
PROPID_ACC_STATE VT_I4
PROPID_ACC_HELP VT_BSTR
PROPID_ACC_KEYBOARDSHORTCUT VT_BSTR
PROPID_ACC_DEFAULTACTION VT_BSTR
PROPID_ACC_VALUEMAP VT_BSTR
PROPID_ACC_ROLEMAP VT_BSTR
PROPID_ACC_STATEMAP VT_BSTR
PROPID_ACC_FOCUS VT_DISPATCH
VT_I4
PROPID_ACC_SELECTION VT_DISPATCH
VT_I4
VT_UNKNOWN
PROPID_ACC_PARENT VT_DISPATCH
PROPID_ACC_NAV_UP VT_DISPATCH
VT_I4
PROPID_ACC_NAV_DOWN VT_DISPATCH
VT_I4
PROPID_ACC_NAV_LEFT VT_DISPATCH
VT_I4
PROPID_ACC_NAV_RIGHT VT_DISPATCH
VT_I4
PROPID_ACC_NAV_PREV VT_DISPATCH
VT_I4
PROPID_ACC_NAV_NEXT VT_DISPATCH
VT_I4
PROPID_ACC_NAV_FIRSTCHILD VT_DISPATCH
VT_I4
PROPID_ACC_NAV_LASTCHILD VT_DISPATCH
VT_I4