Delen via


Dialoog Gegevensuitwisseling

Als u het DDX-mechanisme gebruikt, stelt u de initiële waarden van de lidvariabelen van het dialoogvensterobject in, meestal in uw OnInitDialog handler of de dialoogvensterconstructor. Direct voordat het dialoogvenster wordt weergegeven, draagt het DDX-mechanisme van het framework de waarden van de lidvariabelen over aan de besturingselementen in het dialoogvenster, waar ze worden weergegeven wanneer het dialoogvenster zelf wordt weergegeven als reactie op DoModal of Create. De standaard implementatie van OnInitDialog in CDialog roept de UpdateData lidfunctie van klasse CWnd aan om de besturingselementen in het dialoogvenster te initialiseren.

Hetzelfde mechanisme draagt waarden van de besturingselementen over naar de lidvariabelen wanneer de gebruiker op de knop OK klikt (of wanneer u de UpdateData lidfunctie aanroept met het argument TRUE). Het validatiemechanisme voor dialoogvenstergegevens valideert alle gegevensitems waarvoor u validatieregels hebt opgegeven.

In de volgende afbeelding ziet u de uitwisseling van dialoogvenstergegevens.

Diagram van gegevensmodel en gegevensuitwisseling op het scherm.
Dialoog Gegevensuitwisseling

UpdateData werkt in beide richtingen, zoals opgegeven door de BOOL-parameter die eraan is doorgegeven. Om de uitwisseling uit te voeren, stelt u met UpdateData een CDataExchange-object in en roept u de overschrijving van de CDialog-lidfunctie van uw dialoogvensterklasse in DoDataExchange aan. DoDataExchange gebruikt een argument van het type CDataExchange. Het CDataExchange object dat wordt doorgegeven aan UpdateData heeft betrekking op de context van de uitwisseling, die informatie definieert zoals de richting van de uitwisseling.

Wanneer u of een Code-wizard DoDataExchange overschrijft, specificeert u een aanroep naar één DDX-functie per gegevenslid (besturingselement). Elke DDX-functie weet hoe gegevens in beide richtingen kunnen worden uitgewisseld op basis van de context die via het CDataExchange-argument aan uw DoDataExchange door UpdateData is verstrekt.

MFC biedt veel DDX-functies voor verschillende soorten uitwisseling. In het volgende voorbeeld ziet u een DoDataExchange overschrijving waarin twee DDX-functies en één DDV-functie aangeroepen worden.

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);
}

De DDX_ en DDV_ lijnen zijn een gegevenskaart. De weergegeven voorbeeld-DDX- en DDV-functies zijn respectievelijk voor een selectievakje en een invoervak.

Als de gebruiker een modaal dialoogvenster annuleert, beëindigt de OnCancel lidfunctie het dialoogvenster en DoModal retourneert de waarde IDCANCEL. In dat geval worden er geen gegevens uitgewisseld tussen het dialoogvenster en het dialoogvensterobject.

Zie ook

Dialoogvenster Gegevensuitwisseling en validatie
Werken met dialoogvensters in MFC
Dialoogvenster Gegevensvalidatie