Sdílet prostřednictvím


Prostorová a logická navigace

Klienti načítají informace o objektu, který je prostorově nebo logicky blízko jiného objektu ve stejném kontejneru voláním IAccessible::accNavigate a určením jedné z navigačních konstant.

S prostorovou navigaci klienti přecházet na objekt na základě jeho umístění na obrazovce. Klienti přecházeli z aktuálního objektu nahoru, dolů, doleva nebo doprava a získali informace o jiném objektu ve stejném kontejneru.

Při logické navigaci klienti přecházejí na objekt, který logicky předchází nebo následuje jiný objekt, jak určuje server. Klienti přechádí do všech podřízených objektů dvěma způsoby:

Bez ohledu na směr navigace navštíví každé viditelné podřízené položky, které patří k nadřazeného objektu. Neviditelné podřízené položky mohou být vynechány pomocí logické navigace. Kromě toho je každé dítě navštíveno pouze jednou a navigace se nesmychá. To znamená, že metoda selže, pokud se klient pokusí přejít před prvním objektem nebo za posledním objektem.

Prostorová a logická navigace souvisí. Například na vodorovném panelu nástrojů by volání metody s NAVDIR_RIGHT mělo vytvořit stejné výsledky jako volání metody s NAVDIR_NEXT.

Počátečním objektem navigace je objekt, kterýsebe nebo jeden z podřízených objektů, s výjimkou případů, kdy je zadánNAVDIR_FIRSTCHILD nebo NAVDIR_LASTCHILD; v tomto případě musí navigace začínat od samotného objektu.

Pokud klient přejde z přístupného objektu na prvek uživatelského rozhraní na stejné stejné nebo pokud lVal člen varStart je CHILDID_SELF a zadaný příznak v navDir je jakýkoli navigační příznak s výjimkou NAVDIR_FIRSTCHILD nebo NAVDIR_LASTCHILD, výsledkem pvarEnd je buď podřízené ID, nebo IDispatch rozhraní. Pokud pvarEnd obsahuje podřízené ID, klienti musí nejprve získat ukazatel na rozhraní IAccessible, aby mohli přejít z tohoto prvku uživatelského rozhraní nebo získat další informace o něm. Chcete-li získat nadřazený objekt, klienti volají IAccessible::get_accParent vlastnost objektu na stejné straně nebo počáteční objekt navigace.

Všimněte si, že klienti musí mít informace o všech plovoucích objektech voláním EnumChildWindows funkce. Vzhledem k tomu, že plovoucí objekt není oříznut na nadřazený objekt, klienti nemají informace o hierarchické relaci mezi dvěma objekty blízko sebe na obrazovce.

Následující obrázek je příkladem plovoucího objektu, který není oříznut na nadřazený objekt.

snímek obrazovky otevřeného okna nad větším oknem sady Microsoft Developer Studio

Vytvoření pořadí v logické navigaci

V logické navigaci vytvářejí vývojáři, kteří navrhují objekty, vztahy mezi nimi. Logická navigace je subjektivní než prostorová navigace. Pořadí v logické navigaci také není stejné jako pořadí použité s podřízenými ID.

U objektů s umístěním obrazovky by vývojáři serveru měli nastavit pořadí navigace způsobem, který by většina uživatelů považovala za logickou. Například v anglicky mluvících zemích/oblastech to znamená řazení zleva doprava a shora dolů.

Pořadí logické navigace musí mít paralelní pořadí navigace pomocí klávesnice. Například dialogové okno obsahuje OK a Zrušit tlačítka a několik ovládacích prvků pro úpravy. Klient, který volá IAccessible::accNavigate přejít k dalšímu nebo předchozímu objektu v daném dialogovém okně se přesune ve stejném pořadí jako uživatel, který stisknete klávesu TAB nebo SHIFT+TAB a přesune fokus mezi položkami.

U objektů, které nemají definovaná umístění obrazovky, se logické pořadí rozhoduje vývojáři serverů a vývojáři klientů by o něm neměli předpokládat. Je například přijatelné pro neviditelné objekty, jako jsou objekty, které jsou pouze dočasně skryté, prokládání s viditelnými objekty.