Condividi tramite


Spostamento spaziale e logico

I client recuperano informazioni su un oggetto spaziale o logicamente vicino a un altro oggetto all'interno dello stesso contenitore chiamando IAccessible::accNavigate e specificando una delle costanti di navigazione.

Con i client di spostamento spaziale passano a un oggetto in base alla posizione sullo schermo. I client si spostano verso l'alto, verso il basso, a sinistra o a destra dall'oggetto corrente per ottenere informazioni su un altro oggetto all'interno dello stesso contenitore.

Con i client di spostamento logico passano all'oggetto che precede o segue logicamente un altro oggetto, come determinato dal server. I client passano a tutti gli elementi figlio di un oggetto in due modi:

Indipendentemente dalla direzione, la navigazione visita ogni elemento figlio visibile che appartiene all'oggetto padre. Gli elementi figlio invisibili possono essere ignorati con lo spostamento logico. Inoltre, ogni elemento figlio viene visitato una sola volta e lo spostamento non scorre. Ovvero, il metodo ha esito negativo se un client tenta di spostarsi prima del primo oggetto o dopo l'ultimo oggetto.

La navigazione spaziale e logica è correlata. Ad esempio, in una barra degli strumenti orizzontale, la chiamata al metodo con NAVDIR_RIGHT dovrebbe produrre gli stessi risultati della chiamata al metodo con NAVDIR_NEXT.

L'oggetto iniziale della navigazione è l'oggettostesso o uno degli elementi figlio dell'oggetto, tranne quando viene specificato NAVDIR_FIRSTCHILD o NAVDIR_LASTCHILD. In questo caso, lo spostamento deve iniziare dall'oggetto stesso.

Se un client passa da un oggetto accessibile a un elemento dell'interfaccia utente di pari livello o se il membro lVal di varStart è CHILDID_SELF e il flag specificato in navDir è qualsiasi flag di navigazione tranne NAVDIR_FIRSTCHILD o NAVDIR_LASTCHILD, il risultato in pvarEnd è un ID figlio o un'interfaccia IDispatch. Se pvarEnd contiene un ID figlio, i client devono prima ottenere un puntatore all'interfaccia IAccessible dell'elemento padre per spostarsi da questo elemento dell'interfaccia utente o per ottenere altre informazioni su di esso. Per ottenere l'oggetto padre, i client chiamano la proprietà IAccessible::get_accParent dell'oggetto di pari livello o l'oggetto iniziale della struttura di spostamento.

Si noti che i client devono avere informazioni su tutti gli oggetti mobili chiamando la funzione EnumChildWindows. Poiché un oggetto mobile non viene ritagliato nel relativo elemento padre, i client non dispongono di informazioni sulla relazione gerarchica tra due oggetti vicini uno all'altro sullo schermo.

L'immagine seguente è un esempio di oggetto mobile che non viene ritagliato nel relativo elemento padre.

screenshot della finestra aperta mobile sopra una finestra di Microsoft Developer Studio più grande

Definizione dell'ordine nella navigazione logica

Nello spostamento logico, gli sviluppatori che progettano gli oggetti stabiliscono le relazioni tra di esse. La navigazione logica è più soggettiva rispetto alla navigazione spaziale. Inoltre, l'ordine di spostamento logico non è uguale all'ordine usato con GLI ID figlio.

Per gli oggetti con posizioni dello schermo, gli sviluppatori di server devono stabilire l'ordine di spostamento nel modo in cui la maggior parte degli utenti considererebbe logica. In paesi/aree geografiche di lingua inglese, ad esempio, questo significa un ordinamento da sinistra a destra, dall'alto verso il basso.

L'ordine di spostamento logico deve essere parallelo dell'ordine di spostamento tramite tastiera. Ad esempio, una finestra di dialogo contiene pulsanti OK e Annulla push e alcuni controlli di modifica. Un client che chiama IAccessible::accNavigate per passare all'oggetto successivo o precedente in tale finestra di dialogo si sposta nello stesso ordine in cui un utente preme TAB o MAIUSC+TAB per spostare lo stato attivo tra gli elementi.

Per gli oggetti che non hanno posizioni dello schermo definite, l'ordine logico viene deciso dagli sviluppatori di server e gli sviluppatori client non devono fare ipotesi su di esso. Ad esempio, è accettabile che gli oggetti non visibili, ad esempio gli oggetti che sono solo temporaneamente nascosti, vengano interspersi con oggetti visibili.