Partager via


Utilisation de plusieurs fenêtres d’affichage dans DirectManipulation

Lors de l’utilisation de plusieurs fenêtres d’affichage, le testd’accès détermine quelle(s) fenêtre(s) d’affichage sont affectées par l’entrée utilisateur en prenant l’emplacement d’écran d’un contact et en déterminant le rectangle de la fenêtre d’affichage qui atteint le contact.

Un scénario courant dans Manipulation directe consiste à placer une fenêtre d’affichage dans une autre, également appelées fenêtres d’affichage d’imbrication. Si le contact atteint plusieurs fenêtres d’affichage, l’ordre des appels SetContact par le WndProc de la fenêtre détermine la relation parent-enfant des fenêtres d’affichage imbriquées.

Règle : l’élément enfant doit appeler SetContactavant d’appeler le parent.

diagramme montrant la hiérarchie des tests d’accès

Un contact apparaît dans une fenêtre d’affichage. SetContact doit d’abord être appelé sur la fenêtre d’affichage orange (enfant), puis sur la fenêtre d’affichage verte (parente) pour établir la hiérarchie correcte.

Ciblage de la fenêtre d’affichage appropriée

Un contact peut être associé à n’importe quel nombre de fenêtres d’affichage et chaque contact peut être affecté à un ensemble différent de fenêtres d’affichage.

Chaque fenêtre d’affichage peut être configurée pour prendre en charge des interactions spécifiques, selon les besoins.

En fonction de ces paramètres, La manipulation directe identifie la fenêtre d’affichage qui gère l’entrée. La fenêtre d’affichage la plus enfant de la hiérarchie de test d’accès a la première chance de gérer l’entrée. Toutefois, le chaînage et la promotion parente peuvent changer la fenêtre d’affichage qui gère l’entrée.

Chaînage

Lorsque la fin du contenu est atteinte lors d’une manipulation, La manipulation directe applique un effet de limite pour indiquer que le contenu ne peut pas aller plus loin. Toutefois, si une fenêtre d’affichage enfant est chaînée à une fenêtre d’affichage parente, cet effet est supprimé. Au lieu de cela, la fenêtre d’affichage des ancêtres la plus proche dans la hiérarchie de test de succès qui prend en charge la manipulation, gère l’entrée. Si la direction de la manipulation est inversée de telle sorte que l’ancêtre retourne au point où le chaînage a été déclenché, la manipulation « déchaine » et le contrôle retourne à la fenêtre d’affichage enfant.

diagramme montrant la manipulation chaînée

Lorsque l’utilisateur effectue un panoramique de la fenêtre d’affichage enfant jusqu’au bord du contenu, la manipulation « s’enchaîne » à la fenêtre d’affichage parente, et l’utilisateur commence à effectuer un panoramique du contenu parent à la place.

Notes

Les axes X et Y s’enchaînent indépendamment l’un de l’autre. Par conséquent, si un panoramique diagonale atteint la limite x avant la limite y, la manipulation déplace le parent dans la direction x tout en continuant à déplacer l’enfant dans la direction y. Pour activer ou désactiver le chaînage, appelez l’API SetChaining sur la fenêtre d’affichage enfant.

Rails

La spécification de rails dans la configuration d’une fenêtre d’affichage affecte la façon dont l’entrée est chaînée à partir de la fenêtre d’affichage. Plus précisément, l’entrée ne peut pas être chaînée à partir d’une fenêtre d’affichage enfant à son parent dans le mode panoramique « sans rails ». Pour chaîner l’entrée lorsque des rails sont définis, l’utilisateur doit avoir mis en panne verticalement ou horizontalement et être verrouillé sur les rails.

zoom ;

Si une fenêtre d’affichage enfant est imbriquée à l’intérieur d’un parent et que les deux sont configurées pour le zoom, une manipulation de zoom peut être chaînée de l’enfant au parent. Toutefois, si la manipulation continue, elle fonctionne uniquement sur le parent et ne peut pas « déchainer » à l’enfant. Si l’utilisateur enchaîne un zoom de l’enfant au parent, La manipulation directe suspend l’enfant jusqu’à ce que tous les contacts associés à la manipulation soient supprimés de l’écran. À ce stade, l’enfant est libéré de la suspension et l’utilisateur peut faire un panoramique de la fenêtre d’affichage enfant.

Ciblage des mouvements : promotion parente

Le ciblage de mouvement est le processus par lequel La manipulation directe regroupe les contacts et détermine la fenêtre d’affichage qui traite l’entrée. La promotion parente fait référence aux cas où l’entrée est transférée de l’enfant au parent. Par exemple, lorsqu’un utilisateur dépose deux contacts et se pince dans une fenêtre d’affichage enfant configurée uniquement pour le défilement, l’entrée est promue sur le parent afin que le zoom se produise. La promotion parente se produit, que le chaînage soit activé ou non sur la fenêtre d’affichage enfant.

Contrairement au chaînage, la promotion parente n’est pas inversée. La fenêtre d’affichage parente continue de traiter l’entrée d’interaction jusqu’à ce que tous les contacts soient levés (les fenêtres d’affichage enfants arrêtent le traitement de l’entrée).