Partager via


Échange de données de boîtes de dialogue

Si vous utilisez le mécanisme DDX, vous définissez les valeurs initiales des variables membres de l'objet dialog, généralement dans votre gestionnaire d' OnInitDialog ou le constructeur de dialogue.Juste avant que la boîte de dialogue s'affiche, le mécanisme de DDX de l'infrastructure transfère les valeurs des variables membres aux contrôles dans la boîte de dialogue, dans laquelle ils apparaissent lorsque la boîte de dialogue lui-même apparaît en réponse à DoModal ou à Créer.L'implémentation par défaut d' OnInitDialog dans CDialog appelle la fonction membre d' UpdateData de la classe CWnd pour initialiser les contrôles de la boîte de dialogue.

Le même mécanisme transfère des valeurs de contrôles aux variables membres lorsque l'utilisateur clique sur le bouton OK (ou lorsque vous appelez la fonction membre d' UpdateData avec l'argument TRUE).Le mécanisme de validation des données de dialogue valide tous les éléments de données que vous avez spécifié des règles de validation.

l'illustration suivante montre l'échange de données de boîtes de dialogue.

Échange de données de boîte de dialogue

Échange de données de boîtes de dialogue

UpdateData fonctionne dans les deux sens, comme spécifié par le paramètre de BOOL passé.Pour effectuer l'échange, UpdateData installe un objet d' CDataExchange et appelez la substitution de votre classe de dialogue de la fonction membre d' DoDataExchange des CDialog.DoDataExchange prend un argument de type CDataExchange.L'objet d' CDataExchange passé à UpdateData représente le contexte de l'échange, la définition de telles informations comme la direction de l'échange.

Lorsque vous (ou un Assistant Code) substitue DoDataExchange, vous spécifiez un appel à une fonction DDX par donnée membre (contrôle).Chaque fonction DDX sait échanger des données dans les deux directions en fonction de le contexte fourni par l'argument d' CDataExchange passé à votre DoDataExchange par UpdateData.

MFC fournit de nombreuses fonctions DDX pour différents genres d'échange.L'exemple suivant illustre une substitution d' DoDataExchange dans laquelle deux fonctions DDX et une fonction de 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 d' DDX_ et d' DDV_ sont une configuration de données.L'exemple les mécanismes DDX et les fonctions de DDV indiquées sont pour un contrôle de case à cocher et un contrôle de zone d'édition, respectivement.

Si l'utilisateur annule une boîte de dialogue modale, la fonction membre d' OnCancel termine la boîte de dialogue et DoModal retourne la valeur IDCANCEL.Dans ce cas, aucune donnée n'est échangées entre la boîte de dialogue et l'objet dialog.

Voir aussi

Concepts

Échange de données de boîtes de dialogue et validation

Cycle de vie d'une boîte de dialogue

Validation des données de dialogue