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 attributs de l'objet dialog, en général dans le gestionnaire de OnInitDialog ou le constructeur de dialogue. Juste avant que le dialogue ne s'affiche, le mécanisme DDX de l'infrastructure transfère les valeurs des attributs aux contrôles dans la boîte de dialogue, où elles apparaissent lorsque la boîte de dialogue s'affiche en réponse à DoModal ou à Create. L'implémentation par défaut de OnInitDialog dans CDialog appelle la méthode 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 dans les attributs lorsque l'utilisateur clique sur le bouton OK (ou lorsque vous appelez la méthode UpdateData avec l'argument TRUE). Le mécanisme de validation des données de dialogue valide tous les éléments de données pour lesquels vous avez spécifié les règles de validation.

L'illustration suivante montre l'échange de données de dialogue.

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

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

UpdateData fonctionne dans les deux sens, comme spécifié par le paramètre BOOL passé à celui-ci. Pour effectuer l'échange, UpdateData génère un objet CDataExchange et appelle la méthode DoDataExchange de la substitution de votre classe de dialogue CDialog. DoDataExchange accepte un argument du 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) remplace DoDataExchange, vous spécifiez un appel à une fonction DDX par membre de données (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 de DDX_ et DDV_ sont une table de données. Les fonctions d'exemple de DDX et DDV sont affichées pour un contrôle case et un contrôle de zone d'édition, respectivement.

Si l'utilisateur annule une boîte de dialogue modale, la méthode OnCancel ferme 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 du dialogue.

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