Scambio di dati della finestra di dialogo
Se si utilizza il meccanismo DDX, impostare i valori iniziali delle variabili membro dell'oggetto della finestra di dialogo, in genere nel gestore di OnInitDialog o nel costruttore della finestra di dialogo.Immediatamente prima della finestra di dialogo, il meccanismo di DDX del framework trasferisce i valori delle variabili membro ai controlli nella finestra di dialogo, in cui vengono visualizzati quando la finestra di dialogo stessa viene visualizzato in risposta a DoModal o a Create.L'implementazione predefinita di OnInitDialog in CDialog chiama la funzione membro di UpdateData di classe CWnd per inizializzare i controlli nella finestra di dialogo.
Lo stesso meccanismo trasferisce i valori dei controlli alle variabili membro quando l'utente fa clic sul pulsante OK o ogni volta che chiama la funzione membro di UpdateData con l'argomento TRUE).Il meccanismo di convalida dei dati della finestra di dialogo convalida tutti gli elementi di dati per il quale è stato specificato le regole di convalida.
Nella figura seguente viene illustrato lo scambio di dati della finestra di dialogo.
Dialog Data Exchange (DDX)
Funzionamento diUpdateData in entrambe le direzioni, come specificato dal parametro di BOOL sono stati superati.Per eseguire lo scambio, UpdateData installa un oggetto di CDataExchange e chiama l'override della classe della finestra di dialogo della funzione membro di DoDataExchange di entity_CODECDialog.DoDataExchange accetta un argomento di tipo CDataExchange.L'oggetto di CDataExchange passato a UpdateData rappresenta il contesto dello scambio, definendo informazioni quali la direzione dello scambio.
Quando si (o una creazione guidata codice) esegue l'override di DoDataExchange, si specifica una chiamata a una funzione DDX per membro dati (il controllo).Ogni funzione DDX conosce come per scambiare dati in entrambe le direzioni in base al contesto fornito dall'argomento di CDataExchange passato al DoDataExchange da UpdateData.
MFC offre numerose funzioni DDX per i diversi tipi di scambio.Nell'esempio seguente viene illustrato un override di DoDataExchange in cui due funzioni DDX e una funzione di DDV vengono chiamate:
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);
}
Le linee di DDV_ e di DDX_ sono un mapping di dati.L'esempio DDX e le funzioni di DDV vengono visualizzate per un controllo casella di controllo e un controllo casella di modifica, rispettivamente.
Se l'utente annulla una finestra di dialogo modale, la funzione membro di OnCancel termina la finestra di dialogo e DoModal restituisce il valore IDCANCEL.In tal caso, non vengono scambiato tra la finestra di dialogo e l'oggetto della finestra di dialogo.
Vedere anche
Concetti
Scambio di dati e convalida della finestra di dialogo