CDialog

Die CDialog -Klasse ist die Basisklasse zum Anzeigen von Dialogfeldern auf dem Bildschirm. Dialogfelder sind von zwei Arten: modale und nicht modale. Ein modales Dialogfeld muss durch den Benutzer geschlossen werden, bevor die Anwendung fortgesetzt wird. Ein nicht modales Dialogfeld ermöglicht dem Benutzer das Dialogfeld anzuzeigen und zu einem anderen Vorgang ohne abbrechen oder entfernen das Dialogfeld zurückgegeben.

Ein CDialog -Objekt ist eine Kombination aus einer Dialogfeldvorlage und ein CDialog-Klasse abgeleitet. Verwenden Sie den Dialog-Editor, um das Dialogfeldvorlage erstellen und speichern es in einer Ressource, dann Klassen-Assistenten verwenden, um eine von CDialog abgeleitete Klasse erstellen.

Ein Dialogfeld, wie jedes andere Fenster empfängt Nachrichten von Windows. In einem Dialogfeld sind Sie besonders interessiert, Benachrichtigungen von Steuerelementen des Dialogfelds behandeln, denn das ist, wie der Benutzer interagiert mit das Dialogfeld. Klassen-Assistent durch die potenziellen durch jedes Steuerelement im Dialogfeld generierten Nachrichten durchsucht, und Sie können auswählen, welche Nachrichten Sie behandeln möchten. ClassWizard fügt dann die entsprechenden Meldungszuordnungseinträge und Message Handler-Memberfunktionen in die neue Klasse für Sie. Sie müssen nur einer anwendungsspezifischen Code schreiben, in der Handler-Memberfunktionen.

Wenn Sie es vorziehen, können Sie immer Meldungszuordnungseinträge und Memberfunktionen selbst schreiben anstelle von Klassen-Assistent.

In alle, aber die meisten trivial Dialogfeld fügen Sie Membervariablen zu Ihrer abgeleiteten Dialogfeldklasse in das Dialogfeld Steuerelemente vom Benutzer eingegebene Daten zu speichern oder Daten für den Benutzer anzuzeigen. ClassWizard durchsucht diese Steuerelemente in das Dialogfeld, das die Daten zugeordnet werden können und fordert Sie auf, erstellen Sie eine Membervariable für jedes Steuerelement. Zur gleichen Zeit wählen Sie einen Variablentyp und den zulässigen Wertebereich für jede Variable. ClassWizard fügt die Membervariablen zu Ihrer abgeleiteten Dialogfeldklasse.

Klassen-Assistent schreibt dann eine Daten-Karte automatisch den Austausch von Daten zwischen den Membervariablen und Steuerelemente des Dialogfelds zu behandeln. Die Daten-Karte bietet Funktionen, die die Steuerelemente im Dialogfeld mit den richtigen Werten zu initialisieren, die Daten abzurufen und die Daten überprüfen.

Um ein modales Dialogfeld zu erstellen, erstellen Sie ein Objekt auf dem Stapel mit den Konstruktor für den abgeleiteten Dialogfeldklasse und dann rufen Sie DoModal auf das Dialog-Fenster und die zugehörigen Steuerelemente erstellen. Wenn Sie ein nicht-modales Dialogfeld erstellen möchten, rufen Sie Erstellen im Konstruktor Ihrer Klasse Dialogfeld.

Sie können auch eine Vorlage im Speicher erstellen, mithilfe einer DLGTEMPLATE Datenstruktur wie in der Win32 SDK-Dokumentation beschrieben. Nachdem Sie ein CDialog -Objekt zu erstellen, rufen Sie CreateIndirect auf ein nicht modales Dialogfeld zu erstellen, oder rufen Sie InitModalIndirect und DoModal um ein modales Dialogfeld zu erstellen.

Klassen-Assistent schreibt die Exchange und Validierung Daten-Karte in einer Überschreibung der CWnd:: DoDataExchange , das Ihre neue Dialogfeldklasse ClassWizard hinzufügt. Finden Sie die Memberfunktion DoDataExchange in CWnd mehr über die Funktionen von Exchange und Validierung.

Der Programmierer und Rahmen nennen DoDataExchange indirekt durch einen Aufruf von CWnd::UpdateData.

Das Framework ruft UpdateData klickt der Benutzer auf die Schaltfläche OK, um ein modales Dialogfeld zu schließen. (Die Daten werden nicht abgerufen, wenn die Schaltfläche Abbrechen geklickt wird.) Die Standardimplementierung von OnInitDialog ruft auch UpdateData auf die ursprünglichen Werte der Steuerelemente festlegen. In der Regel überschreiben Sie OnInitDialog weitere Steuerelemente initialisiert werden. OnInitDialog aufgerufen, nachdem alle die Dialogfeldsteuerelemente erstellt werden und kurz vor dem Dialogfeld wird angezeigt.

CWnd::UpdateData können Sie jederzeit während der Ausführung ein modales oder nicht modales Dialogfeld aufrufen.

Wenn Sie ein Dialogfeld mit der hand entwickeln, Sie die erforderlichen Member-Variablen der abgeleiteten Dialogfeld Klasse hinzufügen selbst, und Sie fügen Sie Memberfunktionen zum Festlegen oder Abrufen dieser Werte.

Weitere Informationen über Klassen-Assistenten finden Sie unter Mithilfe von Klassen-Assistent in Visual C++ Programmer's Guide.

Rufen Sie CWinApp::SetDialogBkColor auf die Hintergrundfarbe für Dialogfelder in der Anwendung festlegen.

Ein modales Dialogfeld wird automatisch geschlossen, wenn der Benutzer die OK oder Abbrechen Schaltflächen drückt oder wenn Ihr Code die EndDialog -Memberfunktion aufruft.

Wenn Sie ein nicht modales Dialogfeld implementieren, immer überschreiben Sie die Memberfunktion OnCancel und rufen Sie DestroyWindow aus darin. Rufen Sie nicht die Basisklasse CDialog::OnCancel, weil es EndDialog, aufruft, wird das Dialogfeld unsichtbar machen, aber nicht zu zerstören, es. Sie sollten auch überschreiben PostNcDestroy für nicht modale Dialogfelder, um dieses, löschen, da in der Regel nicht modale Dialogfelder mit neuenzugeordnet werden. Modale Dialogfelder sind in der Regel auf dem Rahmen aufgebaut und müssen nicht PostNcDestroy Bereinigung.

Weitere Informationen auf CDialog, finden Sie im Artikel Dialogfeldthemen im Visual C++ Programmer's Guide.

# include lt;afxwin.h>

Klasse&nmember |nbsp; Basisklasse | Hierarchiediagramm

Samples    MFC Sample DBFETCH MFC Sample DLGCBR32 MFC Sample DLGTEMPL MFC Sample EXTBIND MFC Sample FTPTREE MFC Sample HELLO MFC Sample MDIBIND MFC Sample VCTERM

Index