Portrait de l'architecture document/vue
Les documents et les vues sont associés dans une application MFC classique. Les données sont stockées dans le document, mais la vue a un accès privilégié aux données. La séparation du document de l’affichage sépare le stockage et la maintenance des données de son affichage.
Obtention de l’accès aux données de document à partir de la vue
La vue accède aux données de son document avec la fonction GetDocument , qui retourne un pointeur vers le document ou en rendant la classe d’affichage C++ friend
de la classe de document. La vue utilise ensuite son accès aux données pour obtenir les données lorsqu’elles sont prêtes à dessiner ou à les manipuler.
Par exemple, à partir de la fonction membre OnDraw de la vue, l’affichage utilise GetDocument
pour obtenir un pointeur de document. Ensuite, il utilise ce pointeur pour accéder à un CString
membre de données dans le document. La vue transmet la chaîne à la TextOut
fonction. Pour afficher le code de cet exemple, consultez Dessin dans une vue.
Entrée utilisateur dans la vue
La vue peut également interpréter un clic de souris en lui-même comme sélection ou modification de données. De même, il peut interpréter les séquences de touches en tant qu’entrée de données ou modification. Supposons que l’utilisateur tape une chaîne dans une vue qui gère le texte. La vue obtient un pointeur vers le document et utilise le pointeur pour transmettre les nouvelles données au document, qui les stocke dans une structure de données.
Mise à jour de plusieurs vues du même document
Dans une application avec plusieurs vues du même document, comme une fenêtre de fractionnement dans un éditeur de texte, la vue transmet d’abord les nouvelles données au document. Ensuite, il appelle la fonction membre UpdateAllViews du document, qui indique à toutes les vues du document de se mettre à jour, reflétant les nouvelles données. Cela synchronise les vues.