TN025: Dokument-, Ansichts- und Frame Creation

Diese Applikationsschrift beschreibt die Erstellung und Besitz Fragen für WinApps, DocTemplates, Dokumente, Bilder und Ansichten. Die meisten dieser Informationen und andere interessante Einrichtung und Eigentumsfragen, finden Sie im Visual C++ Programmer's Guide.

WinApp

Es ist ein CWinApp -Objekt im system.

Es ist statisch erstellt und initialisiert, indem im Rahmen der internen Implementierung von WinMain. Sie müssen von CWinApp etwas Sinnvolles tun abgeleitet werden (Ausnahme: Erweiterungs-DLLs müssen eine CWinApp -Instanz nicht — Initialisierung erfolgt stattdessen in DllMain ).

Ein CWinApp -Objekt besitzt eine Liste der Dokumentvorlagen (ein CPtrList). Es ist mindestens eine Dokumentvorlage pro Anwendung. DocTemplates sind in der Regel aus der Ressourcendatei (d. h., ein String-Array) in CWinApp:: InitInstance geladen.

pTemplate = neue CDocTemplate (IDR_MYDOCUMENT,...);
AddDocTemplate(pTemplate)

Ein CWinApp -Objekt besitzt alle Frame-Fenster in der Anwendung. Das Hauptrahmenfenster für die Anwendung sollte in CWinApp::m_pMainWndgespeichert werden; in der Regel legen Sie M_pMainWnd in der InitInstance -Implementierung, wenn Sie nicht der Anwendungs-Assistent für Sie erledigen lassen. Für einfache Dokumentschnittstelle (SDI) ist dies ein CFrameWnd , das als das Hauptanwendungsfenster Rahmen sowie die einzige Dokumentrahmenfenster dient. Für mehrfache Dokumentschnittstelle (MDI) ist dies ein MDI-Frame (Klasse CMDIFrameWnd) dient als das Hauptanwendungsfenster Frame angezeigt, die alle untergeordneten CFrameWnds enthält. Jede untergeordnete Fenster ist Klasse CMDIChildWnd (von CFrameWndabgeleiteten) und dient als einer der potenziell vielen Dokumentrahmenfenster.

DocTemplates

Die CDocTemplate ist der Schöpfer und Manager von Dokumenten. Es besitzt die Dokumente, die es erstellt. Wenn Ihre Anwendung den unten beschriebenen Ressourcen-Ansatz verwendet, müssen es nicht CDocTemplate abgeleitet.

Für eine SDI-Anwendung verfolgt der Klasse CSingleDocTemplate ein Dokument öffnen. Für eine MDI-Anwendung hält die CMultiDocTemplate -Klasse eine Liste (ein CPtrList) aller aktuell geöffneten Dokumente aus dieser Vorlage erstellt. CDocTemplate::AddDocument und CDocTemplate::RemoveDocument bieten die virtuellen Member Funktionen zum Hinzufügen oder entfernen ein Dokument aus der Vorlage. CDocTemplate ist ein Freund von CDocument , so dass wir können den geschützten CDocument::m_pDocTemplate zurück Zeiger zurück auf die Doc-Vorlage hinzu, die das Dokument erstellt.

CWinApp behandelt die OnFileOpen -Standardimplementierung, die wiederum alle Doc Vorlagen abgefragt werden. Die Implementierung umfasst bereits geöffneten Dokumente suchen und entscheiden, welches format öffnen Sie neue Dokumente in.

CDocTemplate verwaltet die Benutzeroberfläche Bindung für Dokumente und Bilder.

CDocTemplate hält die Anzahl der unbenannten Dokumente.

CDocument

Ein CDocument ist im Besitz einer CDocTemplate.

Dokumente haben eine Liste der aktuell geöffneten Ansichten (von CViewabgeleitet), die das Dokument (ein CPtrList) anzeigen.

Dokumente erstellen/zerstören nicht die Ansichten, aber sie sind miteinander verbunden, nachdem sie erstellt wurden. Wenn ein Dokument geschlossen ist (d. h. durch Datei/schließen), alle angeschlossene Ansichten geschlossen werden. Wenn die letzte Ansicht auf ein Dokument geschlossen wird (das heißt, Fenster/Close) wird das Dokument geschlossen werden.

Die CDocument::AddView, RemoveView Schnittstelle wird verwendet, um die Ansichtsliste pflegen. CDocument ist ein Freund von CView , damit wir die CView::m_pDocument Rückwärtszeiger festlegen können.

CFrameWnd

Ein CFrameWnd (auch bekannt als ein Frame) spielt die gleiche Rolle wie in MFC 1.0, aber jetzt soll die CFrameWnd -Klasse in vielen Fällen ohne Ableiten einer neuen Klasse verwendet werden. Die abgeleiteten Klassen CMDIFrameWnd und CMDIChildWnd sind ebenfalls verbessert, so dass viele Standardbefehle bereits implementiert sind.

Die CFrameWnd ist verantwortlich für die Erstellung von Windows im Client-Bereich des Rahmens. Normalerweise gibt es ein Hauptfenster Clientbereich des Rahmens ausfüllen.

Für ein MDI-Rahmenfenster wird der Clientbereich mit dem MDICLIENT-Steuerelement gefüllt ist wiederum das übergeordnete Element des alle untergeordneten MDI-Rahmenfenster. Für ein SDI-Rahmenfenster oder einem untergeordneten MDI-Rahmenfenster, Client-Bereich ist in der Regel voller ein CView-Fensterobjekt abgeleitet. Im Falle von CSplitterWnd, der Clientbereich der Ansicht ist voller CSplitterWnd Window-Objekts und der CView-abgeleitete Window-Objekte (eine pro geteilten Bereich) werden als untergeordnete Fenster die CSplitterWnd erstellt.

Technische Hinweise von &Nummer |nbsp; Technische Hinweise nach Kategorie

Index