
La classe CDialog est la classe de base utilisée pour l'affichage des boîtes de dialogue à l'écran. Boîtes de dialogue sont de deux types : modales et non modales. Une boîte de dialogue modale doit être fermée par l'utilisateur avant que l'application continue. Une boîte de dialogue non modale permet à l'utilisateur afficher la boîte de dialogue et revenir à une autre tâche sans annulation ou de la suppression de la boîte de dialogue.
Un objet CDialog est une combinaison d'un modèle de boîte de dialogue et d'une CDialog-classe dérivée. Utilisez l'éditeur de boîte de dialogue pour créer le modèle de la boîte de dialogue Enregistrer dans une ressource, puis utilisez ClassWizard pour créer une classe dérivée de CDialog.
Une boîte de dialogue, comme toutes les autres fenêtres, reçoit des messages de Windows. Dans une boîte de dialogue, vous êtes particulièrement intéressés dans le traitement des messages de notification des contrôles de la boîte de dialogue puisque c'est la façon dont l'utilisateur interagit avec votre boîte de dialogue. ClassWizard navigue à travers les messages éventuels générés par chaque contrôle dans votre boîte de dialogue, et vous pouvez sélectionner les messages que vous souhaitez gérer. ClassWizard puis ajoute les entrées de la carte-message approprié et les fonctions de membre gestionnaire de messages à la nouvelle classe pour vous. Il vous suffit d'écrire du code spécifique à l'application dans les fonctions de membre du gestionnaire.
Si vous préférez, vous pouvez toujours écrire des entrées de message-carte et fonctions membres vous-même au lieu d'à l'aide de ClassWizard.
Dans l'ensemble mais la boîte de dialogue plus triviale, vous ajoutez les variables de membre à votre classe de boîte de dialogue dérivée de stocker les données saisies dans les contrôles de la boîte de dialogue par l'utilisateur ou pour afficher les données de l'utilisateur. ClassWizard navigue à travers les contrôles dans votre boîte de dialogue qui peut être mappé aux données et vous invite à créer une variable membre pour chaque contrôle. Dans le même temps, vous choisissez un type de variable et de la plage admissible de valeurs pour chaque variable. ClassWizard ajoute les variables de membre à votre classe dérivée de dialogue.
ClassWizard écrit ensuite une carte de données pour gérer automatiquement l'échange de données entre les variables de membre et les contrôles de la boîte de dialogue. La carte de données fournit des fonctions qui initialisent les contrôles dans la boîte de dialogue avec les valeurs correctes, de récupérer les données et de valider les données.
Pour créer une boîte de dialogue modale, construire un objet sur la pile à l'aide du constructeur pour votre classe dérivée de dialogue et puis appelez DoModal pour créer la fenêtre de dialogue et ses contrôles. Si vous souhaitez créer une boîte de dialogue non modale, appelez Create dans le constructeur de votre classe de boîte de dialogue.
Vous pouvez également créer un modèle de mémoire en utilisant un la structure DLGTEMPLATE données comme décrit dans la documentation du SDK Win32. Après que vous construisez un objet CDialog , appelez CreateIndirect pour créer une boîte de dialogue non modale, ou InitModalIndirect et DoModal pour créer une boîte de dialogue modale.
ClassWizard écrit l'échange et la validation de la carte de données dans une substitution de CWnd::DoDataExchange que ClassWizard ajoute à votre classe de boîte de dialogue Nouveau. Consultez la fonction membre DoDataExchange dans CWnd pour plus d'informations sur la fonctionnalité de l'échange et la validation.
Le programmeur et framework appellent DoDataExchange indirectement via un appel à CWnd::UpdateData.
L'infrastructure appelle UpdateData lorsque l'utilisateur clique sur le bouton OK pour fermer une boîte de dialogue modale. (Les données ne sont pas récupérées si l'utilisateur clique sur le bouton Annuler.) L'implémentation par défaut de OnInitDialog appelle également UpdateData pour définir les valeurs initiales des contrôles. Vous substituez généralement OnInitDialog encore initialiser des contrôles. OnInitDialog est appelée après que tous les contrôles de la boîte de dialogue sont créés et juste avant de la boîte de dialogue Affichage de la boîte.
Vous pouvez appeler CWnd::UpdateData à tout moment pendant l'exécution d'une boîte de dialogue modale ou non modale.
Si vous développez une boîte de dialogue à la main, vous ajoutez les variables de membre nécessaire à la classe dérivée de boîte de dialogue vous-même, et vous ajoutez des fonctions membres pour définir ou obtenir ces valeurs.
Pour plus d'informations sur ClassWizard, voir à l'aide de ClassWizard dans le Guide du programmeur Visual C++.
Appelez CWinApp::SetDialogBkColor pour définir la couleur d'arrière-plan pour les boîtes de dialogue dans votre application.
Une boîte de dialogue modale ferme automatiquement lorsque l'utilisateur appuie sur les boutons OK ou annuler, ou lorsque votre code appelle la fonction membre EndDialog.
Lorsque vous implémentez une boîte de dialogue non modale, toujours substituer la fonction membre OnCancel et appelez DestroyWindow d'elle. N'appelez pas la classe de base CDialog::OnCancel, parce qu'il appelle EndDialog, qui fera la boîte de dialogue invisible mais il détruira pas. Vous devez également substituer PostNcDestroy pour les boîtes de dialogue non modale afin de supprimer ce, étant donné que les boîtes de dialogue non modale sont habituellement alloués de nouveau. Boîtes de dialogue modales sont habituellement construits sur le châssis et n'ont pas besoin de nettoyage PostNcDestroy.
Pour plus d'informations sur CDialog, consultez l'article Sujets de la boîte de dialogue dans le Guide du programmeur Visual C++.
# include lt;afxwin.h>
Membres de la classe |  ; Classe de base | Graphique de la hiérarchie
Samples MFC Sample DBFETCH | MFC Sample DLGCBR32 | MFC Sample DLGTEMPL | MFC Sample EXTBIND | MFC Sample FTPTREE | MFC Sample HELLO | MFC Sample MDIBIND | MFC Sample VCTERM