Freigeben über


Dialogdatenaustausch

Beim Ausführen des DDX-Mechanismus verwenden, legen Sie die Anfangswerte der Membervariablen des Dialogfeldobjekts, i. d. R. im OnInitDialog-Handler oder im Dialogfeld Konstruktor.Fügen Sie unmittelbar bevor das Dialogfeld angezeigt wird, überträgt der das DDX-Mechanismus des Frameworks die Werte der Membervariablen Steuerelementen im Dialogfeld, in dem sie auftreten, wenn das Dialogfeld selbst als Reaktion auf DoModal oder Create angezeigt wird.Die Standardimplementierung von OnInitDialog in CDialog ruft die UpdateData-Memberfunktion der Klasse CWnd auf, um die Steuerelemente im Dialogfeld zu initialisieren.

Der gleiche Weise überträgt Werte von 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 Mechanismus für datenvalidierungs Dialogfeld überprüft alle Datenelemente, für die Sie Validierungsregeln angegeben haben.

Die folgende Abbildung veranschaulicht Dialogdatenaustausch.

Datenaustausch (Dialogfeld)

Dialogdatenaustausch

UpdateData funktioniert in beide Richtungen, wie durch den Parameter angegeben BOOL übergebenen.So UpdateData, die den Austausch ein Setupe CDataExchange-Objekt und ruft die Überschreibung ausführen der Dialogfeldklasse von DoDataExchange-Memberfunktion von CDialog.DoDataExchange übernimmt ein Argument des Typs CDataExchange.Das CDataExchange-Objekt, das in UpdateData übergeben wird, stellt den Kontext dar und definiert Austausches solche Informationen wie die Richtung des Austausches.

Wenn Sie (oder ein Assistent Code) DoDataExchange überschreiben, geben Sie einen Aufruf einer DDX-Funktion pro Datenmember (Steuerelement).Jede DDX-Funktion kann, um Daten in beide Richtungen basierend auf dem Kontext, der vom CDataExchange-Argument angegeben wird, die zum DoDataExchange von UpdateData übergeben wird.

MFC bietet zahlreiche DDX-Funktionen für verschiedene Arten von Austausches 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 Kontrollkästchen-Steuerelement und ein Eingabefeld die Steuerung.

Wenn der Benutzer ein modales Dialogfeld abgebrochen hat, beendet die OnCancel-Memberfunktion das Dialogfeld DoModal und gibt den Wert IDCANCEL zurück.In diesem Fall wird keine Daten zwischen dem Dialogfeld und im Dialogfeldobjekt ausgetauscht.

Siehe auch

Konzepte

Dialogdatenaustausch und Validierung

Lebenszyklus eines Dialogfelds

Dialogfeld-Datenvalidierung