Relations entre les objets MFC
Pour aider à mettre le processus de création de document/vue en perspective, envisagez d'utiliser un programme en cours d'exécution : un document, la fenêtre frame utilisée pour contenir la vue, puis la vue associée au document.
Un document conserve une liste des vues de ce document et un pointeur vers le modèle de document qui a créé le document.
Une vue conserve un pointeur à son document et est un enfant de la fenêtre frame parente.
Une fenêtre frame de document conserve un pointeur vers la vue active actuelle.
Un modèle de document conserve une liste des documents ouverts.
L'application conserve une liste de ses modèles.
Windows gère toutes les fenêtres actives et peut donc envoyer des messages à celles-ci.
Ces relations sont établies lors de la création de document/vue. Le tableau suivant montre comment les objets d'un programme en cours d'exécution peuvent accéder à d'autres objets. Tout objet peut obtenir un pointeur vers l’objet d’application en appelant la fonction globale AfxGetApp.
Accès à d'autres objets dans votre application
À partir de l'objet | Comment accéder à d'autres objets |
---|---|
Document | Utilisez GetFirstViewPosition et GetNextView pour accéder à la liste d’affichage du document. Appelez GetDocTemplate pour obtenir le modèle de document. |
Afficher | Appelez GetDocument pour obtenir le document. Appelez GetParentFrame pour obtenir la fenêtre frame. |
Fenêtre frame de document | Appelez GetActiveView pour obtenir l’affichage actuel. Appelez GetActiveDocument pour obtenir le document attaché à l’affichage actuel. |
Fenêtre frame MDI | Appelez MDIGetActive pour obtenir le CMDIChildWnd actif. |
En général, une fenêtre frame ne présente qu'une seule vue, mais dans certains cas, comme dans les fenêtres de fractionnement, la même fenêtre frame contient plusieurs vues. La fenêtre frame conserve un pointeur dans la vue actuellement active ; le pointeur est mis à jour lorsqu'une vue est activée.
Remarque
Un pointeur vers la fenêtre de cadre principale est stocké dans la variable membre m_pMainWnd de l’objet d’application. Appel à OnFileNew
votre remplacement de la InitInstance
fonction membre des CWinApp
jeux m_pMainWnd pour vous. Si vous n'appelez pas OnFileNew
, vous devez définir la valeur de la variable dans InitInstance
vous-même. (Les applications de composant COM SDI (serveur) peuvent ne pas définir la variable si /Embedding se trouve sur la ligne de commande.) Notez que m_pMainWnd est maintenant membre de classe CWinThread
plutôt que CWinApp
.
Voir aussi
Modèles de document et processus de création de document/affichage
Création de modèle de document
Création de documents/affichages
Création de documents, fenêtres et vues