Dialogdatenaustausch

Wenn Sie den DDX-Mechanismus verwenden, legen Sie die Anfangswerte der Membervariablen des Dialogfeldobjekts fest, in der Regel im Handler oder im OnInitDialog Dialogkonstruktor. Unmittelbar vor der Anzeige des Dialogfelds überträgt der DDX-Mechanismus des Frameworks die Werte der Membervariablen an die Steuerelemente im Dialogfeld, wo sie angezeigt werden, wenn das Dialogfeld selbst als Reaktion auf DoModal oder Createangezeigt wird. Die Standardimplementierung der OnInitDialog Klasse CDialog ruft die UpdateData Memberfunktion der Klasse CWnd auf, um die Steuerelemente im Dialogfeld zu initialisieren.

Derselbe Mechanismus überträgt Werte von den Steuerelementen an die Membervariablen, wenn der Benutzer auf die Schaltfläche "OK" klickt (oder wenn Sie die UpdateData Memberfunktion mit dem Argument TRUE aufrufen). Der Überprüfungsmechanismus für Dialogdaten überprüft alle Datenelemente, für die Sie Gültigkeitsprüfungsregeln angegeben haben.

Die folgende Abbildung zeigt den Austausch von Dialogdaten.

Diagram of data model and on screen dialog box data exchange.
Dialogdatenaustausch

UpdateDatafunktioniert in beide Richtungen, wie vom BOOL-Parameter angegeben, der an ihn übergeben wird. Um den Austausch durchzuführen, UpdateData richtet ein CDataExchange Objekt ein und ruft die Außerkraftsetzung der Memberfunktion DoDataExchange der CDialogDialogklasse auf. DoDataExchange verwendet ein Argument vom Typ CDataExchange. Das CDataExchange an den Austausch übergebene UpdateData Objekt stellt den Kontext des Austauschs dar, wobei z. B. Informationen wie die Richtung des Austauschs definiert werden.

Wenn Sie (oder ein Code-Assistent) außer Kraft setzen DoDataExchange, geben Sie einen Aufruf einer DDX-Funktion pro Datenmemm (Steuerelement) an. Jede DDX-Funktion weiß, wie Daten in beide Richtungen ausgetauscht werden, basierend auf dem Kontext, der CDataExchange vom Argument an Sie DoDataExchange UpdateDataübergeben wird.

MFC bietet viele DDX-Funktionen für verschiedene Arten von Austausch. Das folgende Beispiel zeigt eine DoDataExchange Außerkraftsetzung, in der zwei DDX-Funktionen und eine DDV-Funktion aufgerufen werden:

void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
   CDialog::DoDataExchange(pDX);
   DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVal);
   DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName);
   DDV_MaxChars(pDX, m_strName, 20);
}

Die Linien und DDV_ Die DDX_ Linien sind eine Datenzuordnung. Die dargestellten DDX- und DDV-Beispielfunktionen sind für ein Kontrollkästchen-Steuerelement bzw. ein Bearbeitungsfeld-Steuerelement vorgesehen.

Wenn der Benutzer ein modales Dialogfeld abbricht, beendet die OnCancel Memberfunktion das Dialogfeld und DoModal gibt den Wert IDCANCEL zurück. In diesem Fall werden keine Daten zwischen dem Dialogfeld und dem Dialogobjekt ausgetauscht.

Siehe auch

Dialogdatenaustausch und -validierung
Arbeiten mit Dialogfeldern in MFC
Validieren von Dialogfelddaten