Partager via


Plusieurs types de documents, vues, et fenêtres frame

La relation standard entre un document, sa vue, et sa fenêtre cadre est décrite dans Création de documents/vue. De nombreuses applications prennent en charge un type de document unique (mais éventuellement plusieurs documents ouverts de ce type) avec une seule vue sur le document et une fenêtre par document. Mais certaines applications peuvent avoir besoin de modifier une ou plusieurs de ces valeurs par défaut.

Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

  • Plusieurs types de documents

  • vues multiples

  • fenêtres frame multiples

  • fenêtres fractionnées

plusieurs types de document

Le créateur d'application MFC crée une classe de document unique pour vous. Dans certains cas cependant, vous pouvez éventuellement prendre en charge plusieurs types de document. Par exemple, votre application peut nécessiter des documents de feuille de calcul et graphique. Chaque type de document est représenté par sa propre classe de document et éventuellement par sa propre classe d'affichage. Lorsque l'utilisateur sélectionne la nouvelle commande de fichier, l'infrastructure affiche une boîte de dialogue qui répertorie les types de documents pris en charge. Elle crée un document du type que l'utilisateur choisit. Chaque type de document est géré par son propre objet modèle de document.

Pour créer des classes supplémentaires de document, consultez Ajouter une classe. Choisissez CDocument comme le type de classe à partir duquel dériver et fournissez les informations de document requises. Implémentez ensuite les données de la nouvelle classe.

Pour que le framework reconnaisse votre classe supplémentaire de document, vous devez ajouter un deuxième appel à AddDocTemplate dans la redéfinition de InitInstance dans la classe de votre application. Pour plus d'informations, consultez modèles de document.

vues multiples

Beaucoup de documents requièrent une seule vue, mais il est possible de prendre en charge plusieurs vues d'un document unique. Pour mettre en oeuvre des vues multiples, un objet document conserve une liste de ses vues, fournit les fonctions de membre pour ajouter et supprimer des vues, et fournit une fonction membre UpdateAllViews pour alerter plusieurs vues lorsque les données du document ont changé.

MFC prend en charge trois interfaces utilisateur courantes nécessitant des vues multiples dans le même document. Ces modèles sont :

  • Afficher des objets de la même classe, chacune dans une fenêtre cadre de document distincte MDI.

    Vous pouvez prendre en charge la création d'une deuxième fenêtre cadre d'un document. L'utilisateur peut décider qu'une commande de nouvelle fenêtre ouvre une autre frame avec vue sur le même document puis utiliser les deux cadres pour afficher différentes parties du document simultanément. L'infrastructure prend en charge la commande nouvelle fenêtre dans le menu Fenêtre pour les applications MDI en dupliquant la fenêtre cadre et la vue initiales jointes au document.

  • Afficher des objets de la même classe dans la même fenêtre cadre de document.

    Les fenêtres de fractionnement coupent l'espace de vue d'une fenêtre de document unique dans différentes vues multiples du document. Le framework crée plusieurs objets de vue à partir de la même classe d'affichage. Pour plus d'informations, consultez Fractionnement des fenêtres.

  • Afficher des objets de différentes classes dans une fenêtre cadre.

    Dans ce modèle, une variante de la fenêtre de fractionnement, plusieurs vues partagent une même fenêtre cadre. Les vues sont créées pour différentes classes, chaque vue spécifiant une autre méthode pour consulter le même document. Par exemple, une vue peut montrer un document de traitement de texte en mode normal alors que l'autre vue l'affiche en mode d'ensemble. Un contrôle splitter permet à l'utilisateur d'ajuster les tailles relatives des vues.

L'illustration suivante, divisée en plusieurs parties a, b, et c, montre les trois modèles d'interface utilisateur dans l'ordre présentées ci-dessus.

Interfaces utilisateur à plusieurs affichages

Interfaces utilisateur à plusieurs affichages

L'infrastructure fournit les modèles en implémentant l'ordre de nouvelle fenêtre et en fournissant la classe CSplitterWnd, comme décrit dans Fenêtres de fractionnement. Vous pouvez implémenter d'autres modèles en utilisant ceux-ci comme point de départ. Pour des exemples de programmes qui illustrent différentes fonctionnalités des vues, des fenêtres frames, et des séparateurs, consultez Exemples MFC.

Pour plus d'informations sur UpdateAllViews, consultez la classe CView dans le guide de MFC et l'Exemple de dessin à la main levée.

Fenêtres à Frames Multiples

Vous pouvez utiliser la commande de nouvelle fenêtre dans le menu Fenêtre pour que les applications MDI créent une deuxième fenêtre cadre sur le même document. Pour plus d'informations, consultez le premier modèle dans l'illustration Interfaces utilisateur à plusieurs vues.

Fenêtres Fractionnées

Dans une fenêtre de fractionnement, la fenêtre est, ou peut être, divisée en deux volets ou plus que l'on peut faire défiler. Un contrôle splitter (ou « split box ») dans le cadre de fenêtre à côté des barres de défilement permet à l'utilisateur d'ajuster la taille des volets. Chaque volet est une vue sur le même document. Dans les séparateurs « dynamiques », les vues sont de la même classe, comme indiqué dans la partie B de l'illustration Interfaces utilisateur à plusieurs vues. Dans les séparateurs « statiques », des vues peuvent avoir différentes classes. Les fenêtres de fractionnement des deux types sont prises en charge par la classe CSplitterWnd.

Les fenêtres de fractionnement dynamiques, avec des vues de la même classe, permettent aux utilisateurs de fractionner une fenêtre en plusieurs volets à volonté puis de faire défiler les différents volets pour afficher différentes parties du document. L'utilisateur peut également unsplit la fenêtre pour supprimer les vues supplémentaires. Les fenêtres de fractionnement ajoutées à Exemple de dessin à la main levée sont un exemple. Cette rubrique décrit les techniques permettant de créer des fenêtres de fractionnement dynamiques. Une fenêtre de fractionnement dynamique est affichée dans la partie B dans l'illustration Interfaces utilisateur à plusieurs vues.

Les fenêtres de fractionnement statiques, avec des vues de différentes classes, commencent avec la fenêtre divisée en plusieurs volets, chacune avec un objectif différent. Par exemple, dans l'éditeur de bitmaps Visual C++, la fenêtre d'image présente deux volets côte à côte. Le volet gauche affiche une image réelle du bitmap. Le volet droit affiche une image zoomée ou magnifiée du même bitmap. Les volets sont séparés par un « barre de fractionnement » que l'utilisateur peut faire glisser pour modifier la taille des volets. Une fenêtre de fractionnement statique est affichée dans la partie C de l'illustration Interfaces utilisateur à plusieurs vues.

Pour plus d'informations, consultez la classe CSplitterWnd dans le guide de MFC et Exemples MFC.

Voir aussi

Concepts

architecture Document/Vue