Übersicht MFC
Beginnen wir den Einstieg in die MFC -Programmierung zunächst mit einer (sehr) kurzen
Übersicht über die MFC. Das nachfolgende Diagramm zeigt Ihnen nur einen Ausschnitt aus
der Klassenhierarchie. Eine vollständige Übersicht finden Sie in der Online-Hilfe.

Die Basisklasse für die meisten MFC-Klassen ist die Klasse CObject. Sie verleiht den von ihr abgeleiteten Klassen die
Möglichkeit, ihre Daten in Dateien abzulegen (auch Serialisierung genannt) und fügt den
Klassen Laufzeit-Informationen hinzu.
Von CObject abgeleitet ist die Klasse CCmdTarget.
Sie verleiht den von ihr abgeleiteten Klassen die Eigenschaft Nachrichten
verarbeiten zu können.
Wenn Sie sich das Diagramm oben einmal ansehen werden Sie feststellen, dass unter der MFC
nicht nur Fenster (repräsentiert durch die Klasse CWnd) Nachrichten verarbeiten
können, sondern auch Threads (hier gleich Tasks) und Dokumente. Mehr dazu aber im
weiteren Verlauf des Kurses.
An nächster Stelle in der Hierarchie folgt die Klasse CWinThread
und die davon abgeleitete CWinApp. Diese Klassen
stellen den Rahmen für MFC-Anwendungen zur Verfügung.
Ebenso ist die Klasse CDocument eine Ableitung
von CCmdTarget. In den von CDocument abgeleiteten Klassen speichert eine
Doc/View basierende MFC-Anwendung in der Regel ihre Daten. Die Klasse CDocument
besitzt z.B. die Eigenschaft, Dateien zu öffnen und Daten abzuspeichern und auch wieder
einzulesen.
Eine weitere sehr wichtige Klasse ist die Klasse CWnd.
Diese Klasse enthält die Grundeigenschaften aller Fenster. Von CWnd ist unter
anderem die Klasse CFrameWnd abgeleitet. CFrameWnd
erweitert CWnd um Eigenschaften wie z.B. die Menüleiste. Ebenfalls eine Ableitung
von CWnd ist die Klasse CControlBar.
Diese Klasse enthält so nützliche Elemente wie Toolbars oder auch die Statuszeile. Für
die Darstellung von Dialogen dient die Klasse CDialog.
CView-Klassen werden im Zusammenhang mit CDocument-Klassen
eingesetzt und dienen zur Visualisierung der Daten aus einem CDocument-Objekt.
Die letzte, und auch größte Gruppe von Klassen, ist die Klasse der Controls.
Zu ihr gehören Elemente wie Comboboxen, Buttons aber
auch kompliziertere Elemente wie Treeviews.
Am unteren Rand im obigen Bild sind einige der von CObject aber nicht vom CCmdTarget
abgeleiteten Klassen aufgeführt. Die von CObject abgeleitete Klasse CException ist Basisklasse für weitere Klassen zur Handhabung
von Ausnahmezuständen (Exceptions).
Für die Handhabung von Dateizugriffen (bei Anwendungen ohne Doc/View Modell) werden
Objekte der Klasse CFile oder einer davon
abgeleiteten Klassen eingesetzt.
Eine weitere von CObject abgeleitete Klasse ist die Klasse CDC. Diese Klasse kontrolliert alle Zeichenoperationen und
enthält u.a. den im vorherigen Kapitel kurz erwähnten Device Context.
Zum Zeichnen selbst werden Objekte von der Klasse CGdiObject
abgeleiteten Klassen eingesetzt. Dazu gehören z.B. Klassen wie CBitmap zur
Darstellung von Bitmaps aber auch einfache Klassen wie CPen um einen Zeichenstift
zu erstellen.
Außer diesen von CObject abgeleiteten Klassen enthält die MFC noch eine
ganze Reihe weiterer Klassen deren Aufzählung aber den Rahmen hier sprengen würde.
Sehen Sie dazu in der Online-Hilfe unter dem Stichwort MFC Hierarchie nach. Wenn
im Verlaufe des Kurses neue Klassen eingeführt werden, so werden deren wichtigste
Elemente natürlich beschrieben.
Beenden wir hier die Klassenübersicht und wenden uns der Frage zu: woraus besteht nun ein minimales MFC-Programm letztendlich? Nun, jedes WINDOWS
Programm benötigt zunächst ein Rahmenprogramm, so wie Sie es im letzten Kapitel
kennen gelernt haben. Dieses Rahmenprogramm führt die Initialisierung der Anwendung durch,
registriert die verwendete WINDOWS Fensterklasse und enthält die Nachrichtenschleife.
Diese Funktionalität ist laut obiger Aufstellung in der Klasse CWinApp
enthalten. Ferner besitzt fast jedes WINDOWS Programm ein Fenster. Fenster werden in der
MFC durch die Klasse CWnd repräsentiert. Da CWnd aber nur die
Grundfunktionen für Fenster enthält wird in der Regel für das Hauptfenster der
Anwendung ein Objekt einer von der Klasse CWndFrame abgeleiteten Klasse
eingesetzt.
Sehen wir uns nun in der nächsten Lektion einmal die Anwendungsklasse CWinApp
an.
|