Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 OnInitDialog gestionnaire ou le constructeur 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 à DoModal ou à Create. L'implémentation par défaut de OnInitDialog dans CDialog fait appel à 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é des règles de validation.
La figure suivante illustre l’échange de données de boîte de dialogue.
Échange de données de boîte 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 prend un argument de type CDataExchange. L'objet CDataExchange passé à UpdateData représente le contexte de l'échange, définissant des informations telles que la direction de l’échange.
Lorsque vous (ou un assistant de codage) remplacez DoDataExchange, vous spécifiez un appel à une fonction DDX par membre de données (contrôle). Chaque fonction DDX sait comment échanger des données dans les deux directions en fonction du 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 carte de données. Les exemples de fonctions DDX et DDV affichées 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 de dialogue.
Voir aussi
Échange de données de boîte de dialogue et validation
Utilisation des boîtes de dialogue dans MFC
Validation des données de boîte de dialogue