Compartir a través de


Navegación espacial y lógica

Los clientes recuperan información sobre un objeto que se encuentra espacial o lógicamente cerca de otro objeto dentro del mismo contenedor llamando a IAccessible::accNavigate y específico del constantes de navegación.

Con navegación espacial los clientes navegan hasta un objeto en función de su ubicación en la pantalla. Los clientes navegan hacia arriba, abajo, izquierda o derecha desde el objeto actual para obtener información sobre otro objeto dentro del mismo contenedor.

Con navegación lógica los clientes navegan hacia el objeto que lógicamente precede o sigue a otro objeto, según determine el servidor. Los clientes navegan a todos los hijos de un objeto de dos maneras:

Independientemente de la dirección, la navegación visita cada hijo visible que pertenece al objeto padre. Los niños invisibles pueden saltarse con una navegación lógica. Además, cada hijo solo se visita una vez y la navegación no se realiza en bucle. Es decir, el método falla si un cliente intenta navegar antes del primer objeto o después del último.

La navegación espacial y la lógica están relacionadas. Por ejemplo, en una barra de herramientas horizontal, la llamada al método con NAVDIR_RIGHT debería producir los mismos resultados que llamar al método con NAVDIR_NEXT.

El objeto inicial de la navegación es el objeto que uno mismo o a uno de los hijos del objeto, excepto cuando uno u otro NAVDIR_FIRSTCHILD o NAVDIR_LASTCHILD en este caso, la navegación debe comenzar desde el propio objeto.

Si un cliente navega desde un objeto accesible a un elemento hermano de la interfaz de usuario, o si el elemento lVal miembro de varStart es CHILDID_SELF y la bandera específica es navDir es cualquier bandera de navegación excepto NAVDIR_FIRSTCHILD or NAVDIR_LASTCHILD, el resultado en pvarEnd is un niño ID o un IDispatch interfaz. If pvarEnd contiene un identificador de hijo, los clientes deben obtener primero un puntero al identificador del padre IAccessible interfaz para navegar desde este elemento de la interfaz de usuario u obtener más información sobre él. Para obtener el objeto padre, los clientes llaman a la función IAccessible::get_accParent del objeto hermano o del objeto inicial de la navegación.

Tenga en cuenta que los clientes deben tener información sobre todos los objetos flotantes llamando a la EnumChildWindows función. Como un objeto flotante no se recorta a su padre, los clientes no tienen información sobre la relación jerárquica entre dos objetos cercanos en la pantalla.

El siguiente gráfico es un ejemplo de un objeto flotante que no está recortado a su padre.

captura de pantalla de la ventana abierta flotando sobre una ventana más grande de microsoft developer studio

Establecer el orden en la navegación lógica

En la navegación lógica, los desarrolladores que diseñan los objetos establecen las relaciones entre ellos. La navegación lógica es más subjetiva que la espacial. Además, el orden en la navegación lógica no es el mismo que el orden utilizado con los ID de hijo.

Para los objetos que tienen ubicaciones en pantalla, los desarrolladores de servidores deben establecer el orden de navegación de la forma que la mayoría de los usuarios considerarían lógica. En los países/regiones de habla inglesa, por ejemplo, esto significa una ordenación de izquierda a derecha, de arriba abajo.

El orden lógico de navegación debe ser paralelo al orden de navegación del teclado. Por ejemplo, un cuadro de diálogo contiene OK y Cancelar pulsadores y algunos controles de edición. Un cliente que llama IAccessible::accNavigate para navegar al objeto siguiente o anterior en ese cuadro de diálogo se mueve en el mismo orden que un usuario pulsando TAB o MAYÚS+TAB para mover el foco entre elementos.

Para los objetos que no tienen ubicaciones de pantalla definidas, el orden lógico lo deciden los desarrolladores del servidor, y los desarrolladores del cliente no deben hacer suposiciones al respecto. Por ejemplo, es aceptable que objetos no visibles, como los que solo están ocultos temporalmente, se intercalen con objetos visibles.