Échange de données de boîtes de dialogue
Si vous utilisez le mécanisme DDX, définissez les valeurs initiales des variables membres de l'objet de boîte de dialogue, en général dans votre gestionnaire OnInitDialog
ou le constructeur de boîte de dialogue. Juste avant l’affichage de la boîte de dialogue, le mécanisme DDX de l’infrastructure transfère les valeurs des variables membres aux contrôles de la boîte de dialogue, où elles apparaissent lorsque la boîte de dialogue elle-même apparaît en réponse ou DoModal
Create
. L'implémentation par défaut de OnInitDialog
dans CDialog
appelle la fonction membre UpdateData
de la classe CWnd
pour initialiser les contrôles dans la boîte de dialogue.
Le même mécanisme transfère les valeurs des contrôles aux variables membres lorsque l’utilisateur clique sur le bouton OK (ou chaque fois que vous appelez la UpdateData
fonction membre avec l’argument TRUE). Le mécanisme de validation des données de boîte de dialogue valide tous les éléments de données pour lesquels vous avez spécifiés les règles de validation.
L'illustration suivante montre l'échange de données de boîte de dialogue.
Échange de données de boîtes de dialogue
UpdateData
fonctionne dans les deux directions, comme spécifié par le paramètre BOOL transmis à celui-ci. Pour effectuer l'échange, UpdateData
génère un objet CDataExchange
et appelle la fonction membre CDialog
de la substitution de votre classe de boîte de dialogue DoDataExchange
. DoDataExchange
accepte un argument de type CDataExchange
. L'objet CDataExchange
passé à UpdateData
représente le contexte de l'échange, et définit des informations telles que la direction de l'échange.
Lorsque vous (ou un Assistant Code) remplacez DoDataExchange
, vous spécifiez un appel à une fonction DDX par données membres (contrôle). Chaque fonction DDX sait échanger des données dans les deux directions selon le contexte fourni par l’argument CDataExchange
passé à votre DoDataExchange
par UpdateData
.
MFC fournit de nombreuses fonctions DDX pour différents types d'échange. L'exemple suivant illustre la substitution de DoDataExchange
dans laquelle deux fonctions DDX et une fonction DDV sont appelées :
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);
}
Les lignes DDX_
et DDV_
sont une table de données. Les exemples de fonctions DDX et DDV affichés concernent respectivement un contrôle de case à cocher et un contrôle de zone d'édition.
Si l’utilisateur annule une boîte de dialogue modale, la OnCancel
fonction membre met fin à la boîte de dialogue et DoModal
retourne la valeur IDCANCEL. Dans ce cas, aucune donnée n'est échangée entre la boîte de dialogue et l'objet dialogue.
Voir aussi
Échange et validation de données de boîtes de dialogue
Utilisation des boîtes de dialogue dans MFC
Validation de données de boîtes de dialogue