DDX (Dialog Data Exchange)
Se si usa il meccanismo DDX, si impostano i valori iniziali delle variabili membro dell'oggetto dialog, in genere nel OnInitDialog
gestore o nel costruttore del dialogo. Immediatamente prima della visualizzazione della finestra di dialogo, il meccanismo 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 visualizzata in risposta a DoModal
o Create
. L'implementazione predefinita di OnInitDialog
in chiama la UpdateData
funzione membro della classe CWnd
per inizializzare i controlli nella CDialog
finestra di dialogo.
Lo stesso meccanismo trasferisce i valori dai controlli alle variabili membro quando l'utente fa clic sul pulsante OK (o ogni volta che si chiama la UpdateData
funzione membro con l'argomento TRUE). Il meccanismo di convalida dei dati della finestra di dialogo convalida tutti gli elementi di dati per i quali sono state specificate regole di convalida.
Nella figura seguente viene illustrato lo scambio di dati dei dialoghi.
DDX (Dialog Data Exchange)
UpdateData
funziona in entrambe le direzioni, come specificato dal parametro BOOL passato. Per eseguire lo scambio, UpdateData
configura un CDataExchange
oggetto e chiama l'override della classe del dialogo della CDialog
funzione membro.DoDataExchange
DoDataExchange
accetta un argomento di tipo CDataExchange
. L'oggetto CDataExchange
passato a UpdateData
rappresenta il contesto dello scambio, definendo tali informazioni come la direzione dello scambio.
Quando si esegue l'override DoDataExchange
di (o una procedura guidata codice), si specifica una chiamata a una funzione DDX per ogni membro dati (controllo). Ogni funzione DDX sa come scambiare dati in entrambe le direzioni in base al contesto fornito dall'argomento passato all'oggetto CDataExchange
DoDataExchange
da UpdateData
.
MFC fornisce molte funzioni DDX per diversi tipi di scambio. L'esempio seguente mostra un DoDataExchange
override in cui vengono chiamate due funzioni DDX e una funzione DDV:
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 DDX_
linee e DDV_
sono una mappa dati. Le funzioni DDX e DDV di esempio visualizzate sono rispettivamente per un controllo casella di controllo e un controllo casella di modifica.
Se l'utente annulla una finestra di dialogo modale, la OnCancel
funzione membro termina la finestra di dialogo e DoModal
restituisce il valore IDCANCEL. In tal caso, nessun dato viene scambiato tra la finestra di dialogo e l'oggetto finestra di dialogo.
Vedi anche
Convalida e DDX (Dialog Data Exchange)
Utilizzo delle finestre di dialogo in MFC
Convalida dei dati delle finestre di dialogo