Dialogdatenaustausch
Wenn Sie den DDX-Mechanismus verwenden, legen Sie die Anfangswerte der Membervariablen des Dialogfeldobjekts, in der Regel im OnInitDialog-Handler oder im Dialogfeldkonstruktor. Sofort bevor das Dialogfeld angezeigt wird, überträgt der das Framework des DDX-Mechanismus die Werte der Membervariablen an Steuerelemente im Dialogfeld, in dem sie angezeigt werden, wenn das Dialogfeld selbst in Reaktion auf DoModal oder Erstellen angezeigt. Die Standardimplementierung von OnInitDialog in CDialog ruft die UpdateData-Memberfunktion der Klasse CWnd auf, um die Steuerelemente im Dialogfeld zu initialisieren.
Derselbe Mechanismus überträgt Werte von Steuerelementen auf Membervariablen, wenn der Benutzer auf die Schaltfläche OK klickt (oder, wenn Sie die UpdateData mit dem Argument TRUE-Memberfunktion aufrufen). Der Dialogfelddatenvalidierungsmechanismus überprüft alle Datenelemente, für die Sie Validierungsregeln angegeben haben.
Die folgende Abbildung veranschaulicht den Dialogdatenaustausch.
Datenaustausch (Dialogfeld)
UpdateData funktioniert in beide Richtungen, wie durch den BOOL-Parameter angegeben, der an sie übergeben wird. So den Austausch, die UpdateData Setups ein CDataExchange-Objekt und die Aufrufe durchführen die Überschreibung der Dialogfeldklasse Memberfunktion von CDialogDoDataExchange. DoDataExchange akzeptiert ein Argument des Typs CDataExchange. Das CDataExchange-Objekt, das an UpdateData übergeben wird, wird der Kontext des Austausch dar und definiert solche Informationen wie die Richtung des Austausch.
Wenn Sie ein (oder Code-Assistent DoDataExchange) überschreiben, geben Sie einen Aufruf einer DDX-Funktion pro an Datenmember (Steuerelement). Jede DDX-Funktion kann für den Datenaustausch in beide Richtungen basierend auf dem Kontext, der vom CDataExchange-Argument angegeben wird, das dem DoDataExchange von UpdateData übergeben wird.
MFC stellt viele DDX-Funktionen für unterschiedliche Arten des Austausch bereit. Im folgenden Beispiel wird eine DoDataExchange - Überschreibung an, 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 DDX_ und DDV_ Zeilen sind eine Datenumsetzung. Das Beispiel DDX und angezeigte DDV-Funktionen sind für ein Checkbox-Steuerelement und ein Eingabefeldsteuerelement, bzw.
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 im Dialogfeldobjekt ausgetauscht.
Siehe auch
Konzepte
Dialogdatenaustausch und -validierung