Cette note décrit les problèmes de création et de la propriété de WinApps, DocTemplates, Documents, images et vues. Vous pouvez trouver la plupart de cette information et autres création intéressante et les questions de propriété, dans le Guide du programmeur Visual C++.
WinApp
Il n'y a qu'un seul objet CWinApp dans le système.
Il est statiquement construit et initialisé par la mise en œuvre du cadre interne de WinMain. Vous devez dériver de CWinApp de faire quelque chose d'utile (exception : DLL d'extension ne devraient pas avoir une instance de CWinApp — l'initialisation se faite plutôt dans DllMain ).
L'objet CWinApp un possède une liste de modèles de document (une CPtrList). Il y a un ou plusieurs modèle de document par une application. DocTemplates sont généralement chargées à partir du fichier de ressources (c'est-à-dire, un tableau de chaînes) dans CWinApp::InitInstance.
pTemplate = nouveau CDocTemplate (IDR_MYDOCUMENT,...) ;
AddDocTemplate(pTemplate)
L'un objet CWinApp est propriétaire de toutes les fenêtres du frame dans l'application. La fenêtre frame principale de l'application doit être stockée dans CWinApp::m_pMainWnd; habituellement vous définissez m_pMainWnd dans la mise en œuvre de InitInstance si vous n'avez pas laissé AppWizard pour vous. Pour l'interface monodocument (SDI), c'est une CFrameWnd qui sert à la fenêtre frame principale de l'application ainsi que la fenêtre frame de document à l'adresse seulement. C'est un MDI-Frame (classe CMDIFrameWnd) qui sert à la fenêtre frame principale de l'application qui contient tous l'enfant s de CFrameWndmultiple document interface (multidocument MDI). Chaque fenêtre enfant de classe CMDIChildWnd (dérivée de CFrameWnd) et est l'un des fenêtres frames de document potentiellement nombreux.
DocTemplates
Le CDocTemplate est le créateur et le gestionnaire de documents. Elle possède les documents qu'il crée. Si votre application utilise l'approche axée sur les ressources décrite ci-après, elle devra pas dériver de CDocTemplate.
Pour une application SDI, la classe CSingleDocTemplate tient compte d'un document ouvert. Pour une application MDI, la classe CMultiDocTemplate maintient une liste (un CPtrList) de tous les documents actuellement ouverts créés à partir de ce modèle. CDocTemplate::AddDocument et CDocTemplate::RemoveDocument fournissent le membre virtuel des fonctions pour ajouter ou supprimer un document à partir du modèle. CDocTemplate est un ami de CDocument , ainsi nous pouvons définir le pointeur dos protégé de CDocument::m_pDocTemplate pour pointer vers le modèle de doc qui a créé le document.
CWinApp gère l'implémentation par défaut OnFileOpen , qui à son tour interroge tous les modèles de doc. La mise en œuvre comprend la recherche de documents déjà ouverts et décider quel format pour ouvrir de nouveaux documents dans.
CDocTemplate gère la liaison de l'interface utilisateur pour les documents et images.
CDocTemplate conserve un décompte du nombre de documents sans nom.
CDocument
Un CDocument est détenue par un CDocTemplate.
Les documents ont une liste de vues actuellement ouverts (dérivée de CView) Visualisez le document ( CPtrList).
Documents de ne pas créent/détruisent les points de vue, mais ils sont attachés les uns aux autres, après qu'ils sont créés. Lorsqu'un document est fermé (c'est-à-dire par fichier/fermer), tous les points de vue attachés seront fermées. Le document sera fermé lorsque la dernière vue sur un document est fermée (c'est-à-dire, fenêtre/Close).
La CDocument::AddView, RemoveView interface est utilisée pour maintenir la liste d'affichage. CDocument est un ami de CView , ainsi nous pouvons définir le pointeur dos CView::m_pDocument.
CFrameWnd
CFrameWnd (également connu sous le nom d'une trame) joue le même rôle que dans MFC 1.0, mais maintenant la classe CFrameWnd est conçue pour être utilisé dans de nombreux cas sans dériver une nouvelle classe. Les classes dérivées de CMDIFrameWnd et CMDIChildWnd sont également améliorés pour plusieurs commandes standards sont déjà en place.
La classe CFrameWnd est responsable de la création de fenêtres dans la zone client de la trame. Il y a normalement une fenêtre principale de remplissage de la zone client de la trame.
Pour une fenêtre Frame MDI, la zone cliente est remplie avec le contrôle MDICLIENT, qui est à son tour la mère de toutes les fenêtres du frame enfant MDI. Pour une fenêtre Frame-SDI ou une fenêtre de frame enfant MDI, la zone cliente est généralement remplie avec un CView-fenêtre objet dérivé. Dans le cas de CSplitterWnd, la zone client de la vue est remplie avec l'objet de fenêtre CSplitterWnd et la classe CView-objets dérivés de fenêtre (une par volet de fractionnement) sont créés comme des fenêtres enfant de la CSplitterWnd.
&Notes techniques par le numéro |nbsp ; Notes techniques par catégorie