Udostępnij przez


Nawigacja przestrzenna i logiczna

Klienci pobierają informacje o obiekcie, który jest przestrzennie lub logicznie blisko innego obiektu w tym samym kontenerze, wywołując IAccessible::accNavigate i określając jedną z stałych nawigacji .

W przypadku nawigacji przestrzennej klienci przechodzą do obiektu w oparciu o jego lokalizację na ekranie. Klienci przechodzą w górę, w dół, w lewo lub w prawo z bieżącego obiektu, aby uzyskać informacje o innym obiekcie w tym samym kontenerze.

W przypadku nawigacji logicznej klienci przechodzą do obiektu, który logicznie poprzedza lub podąża za innym obiektem określonym przez serwer. Klienci przechodzą do wszystkich elementów podrzędnych obiektu na dwa sposoby:

Niezależnie od kierunku nawigacja odwiedza każde widoczne dziecko należące do obiektu nadrzędnego. Niewidoczne elementy podrzędne mogą być pomijane z nawigacją logiczną. Ponadto każde dziecko jest odwiedzane tylko raz, a nawigacja nie jest w pętli. Oznacza to, że metoda kończy się niepowodzeniem, jeśli klient próbuje przejść przed pierwszym obiektem lub po ostatnim obiekcie.

Nawigacja przestrzenna i logiczna są powiązane. Na przykład na poziomym pasku narzędzi wywołanie metody za pomocą NAVDIR_RIGHT powinno spowodować wygenerowanie tych samych wyników co wywołanie metody za pomocą NAVDIR_NEXT.

Obiekt początkowy nawigacji jest obiektem, którysiebie lub jednym z elementów podrzędnych obiektu, z wyjątkiem sytuacji, gdy określonoNAVDIR_FIRSTCHILD lub NAVDIR_LASTCHILD; w takim przypadku nawigacja musi zaczynać się od samego obiektu.

Jeśli klient przechodzi z dostępnego obiektu do elementu interfejsu użytkownika równorzędnego lub jeśli element lVal elementu varStart jest CHILDID_SELF, a określona flaga w nawigacji jest dowolną flagą nawigacji, z wyjątkiem NAVDIR_FIRSTCHILD lub NAVDIR_LASTCHILD, wynikiem pvarEnd jest identyfikator podrzędny lub interfejs IDispatch. Jeśli pvarEnd zawiera identyfikator podrzędny, klienci muszą najpierw uzyskać wskaźnik do interfejsu IAccessible elementu nadrzędnego, aby przejść z tego elementu interfejsu użytkownika lub uzyskać więcej informacji na jego temat. Aby uzyskać obiekt nadrzędny, klienci wywołają właściwość IAccessible::get_accParent obiektu równorzędnego lub obiekt początkowy nawigacji.

Należy pamiętać, że klienci muszą mieć informacje o wszystkich obiektach zmiennoprzecinkowych przez wywołanie funkcji EnumChildWindows. Ponieważ obiekt zmiennoprzecinkowa nie jest przycięty do obiektu nadrzędnego, klienci nie mają informacji o relacji hierarchicznej między dwoma obiektami blisko siebie na ekranie.

Poniższa ilustracja to przykład obiektu zmiennoprzecinkowego, który nie jest przycięty do obiektu nadrzędnego.

zrzut ekranu przedstawiający okno otwarte przestawne powyżej większego okna programu Microsoft Developer Studio

Ustanawianie kolejności w nawigacji logicznej

W nawigacji logicznej deweloperzy projektujący obiekty tworzą relacje między nimi. Nawigacja logiczna jest bardziej subiektywna niż nawigacja przestrzenna. Ponadto kolejność nawigacji logicznej nie jest taka sama jak kolejność używana z identyfikatorami podrzędnymi.

W przypadku obiektów, które mają lokalizacje ekranu, deweloperzy serwerów powinni ustanowić kolejność nawigacji w sposób, w jaki większość użytkowników rozważy logiczne. Na przykład w krajach/regionach w języku angielskim oznacza to kolejność od lewej do prawej, od góry do dołu.

Kolejność nawigacji logicznej musi być równoległa kolejność nawigacji za pomocą klawiatury. Na przykład okno dialogowe zawiera OK i Przycisk anuluj i kilka kontrolek edycji. Klient, który wywołuje IAccessible::accNavigate, aby przejść do następnego lub poprzedniego obiektu w tym oknie dialogowym przenosi się w takiej samej kolejności, jak użytkownik naciskając TAB lub SHIFT+TAB, aby przenieść fokus między elementami.

W przypadku obiektów, które nie mają zdefiniowanych lokalizacji ekranu, kolejność logiczna jest określana przez deweloperów serwerów, a deweloperzy klientów nie powinni podejmować żadnych założeń. Na przykład dopuszczalne jest, aby obiekty nie widoczne, takie jak obiekty, które są tymczasowo ukryte, przeplatane widocznymi obiektami.