Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung |
Beachte, welche Teile z.B. der Message Maps automatisch verwaltet werden (AFX-Kommentare) und welche man per Hand ändern kann bzw. muss. Beispiel: ID_FILE_OPEN für automatisch erzeugtes Applikations-Objekt.
Eigene Icons für Anwendung und Dateien malen.
CDocument hat Speicher-Funktionalität eingebaut; man muss nur Serialisierung schreiben. An Dokument können Views angehängt werden. CView hat auch Druck-Funktionalität. Wichtige, aber nicht einzige Spezialisierung: CScrollView kann automatisch scrollen
Klassen-Assistent aufrufen: Bietet an, neue Klasse für Dialog zu erstellen. Ja! Gehe im Klassen-Assistent auf Karteikarte mit Member-Variablen. Zwischen denen und den Steuerelementen tauscht die Klasse nun automatisch die Werte aus ("DDX" = Dialog Data Exchange). Stelle Variable für Texteingabefeld auf Zahlentyp; dann automatisch überprüfte Grenzen angebbar ("DDV" = Dialog Data Validation).
Für komplexere Dialoge wichtig, bei denen mehrere Knöpfe per eigener Message Map des Dialogfelds interagieren: Die CDialog-Methode UpdateData(TRUE) holt Daten aus den grafischen Steuerelementen in die Member-Variablen, UpdateData(FALSE) passt umgekehrt die Darstellung an die Werte der Member-Variablen an und prüft vorher die Grenzen.
Rufe Dialog modal per Menü-Kommando aus per Assistent erzeugtem Programm auf (Klassen-Assistent!):
#include "MeinDialog.h"
void CTestView::OnZeigeDialog()
{
MeinDialog d;
d.m_... = ...; // interne Variablen setzen
d.DoModal();
... = d.m_...; // interne Variablen auslesen
}
Dialog nichtmodal aufrufen:
dialog = new MeinDialog;
dialog->Create(IDD_DIALOG1, this);
dialog->ShowWindow(SW_RESTORE);
Dann muss OnOK des Dialogs geändert werden. Vor allem wird "OK" zu "Anwenden" o.ä.:
void MeinDialog::OnOK()
{
// Tu was.
// Aufruf der Mutterklasse auskommentieren, sonst
nach OK geschlossen:
// CDialog::OnOK();
}