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 Create
angezeigt 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.
Dialogdatenaustausch
UpdateData
funktioniert 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 CDialog
Dialogklasse 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