Partager via


CDialog, classe

Classe de base utilisée pour afficher les boîtes de dialogue à l’écran.

Syntaxe

class CDialog : public CWnd

Membres

Constructeurs publics

Nom Description
CDialog ::CDialog Construit un objet CDialog.

Méthodes publiques

Nom Description
CDialog ::Create Initialise l'objet CDialog. Crée une boîte de dialogue sans mode et l’attache à l’objet CDialog .
CDialog ::CreateIndirect Crée une boîte de dialogue sans mode à partir d’un modèle de boîte de dialogue en mémoire (et non basé sur des ressources).
CDialog ::D oModal Appelle une boîte de dialogue modale et retourne une fois terminé.
CDialog ::EndDialog Ferme une boîte de dialogue modale.
CDialog ::GetDefID Obtient l’ID du contrôle pushbutton par défaut d’une boîte de dialogue.
CDialog ::GotoDlgCtrl Déplace le focus vers un contrôle de boîte de dialogue spécifié dans la boîte de dialogue.
CDialog ::InitModalIndirect Crée une boîte de dialogue modale à partir d’un modèle de boîte de dialogue en mémoire (et non basé sur des ressources). Les paramètres sont stockés jusqu’à ce que la fonction DoModal soit appelée.
CDialog ::MapDialogRect Convertit les unités de boîte de dialogue d’un rectangle en unités d’écran.
CDialog ::NextDlgCtrl Déplace le focus sur le contrôle de boîte de dialogue suivant dans la boîte de dialogue.
CDialog ::OnInitDialog Remplacer pour augmenter l’initialisation de la boîte de dialogue.
CDialog ::OnSetFont Remplacez la police à utiliser pour spécifier la police qu’un contrôle de boîte de dialogue doit utiliser lorsqu’il dessine du texte.
CDialog ::P revDlgCtrl Déplace le focus sur le contrôle de boîte de dialogue précédent dans la boîte de dialogue.
CDialog ::SetDefID Remplace le contrôle pushbutton par défaut d’une boîte de dialogue par un bouton push spécifié.
CDialog ::SetHelpID Définit un ID d’aide sensible au contexte pour la boîte de dialogue.

Méthodes protégées

Nom Description
CDialog ::OnCancel Remplacez l’action Annuler le bouton Annuler ou la touche ÉCHAP. La valeur par défaut ferme la boîte de dialogue et DoModal retourne IDCANCEL.
CDialog ::OnOK Remplacez l’action du bouton OK dans une boîte de dialogue modale. La valeur par défaut ferme la boîte de dialogue et DoModal retourne IDOK.

Notes

Les boîtes de dialogue sont de deux types : modal et sans mode. Une boîte de dialogue modale doit être fermée par l’utilisateur avant la poursuite de l’application. Une boîte de dialogue sans mode permet à l’utilisateur d’afficher la boîte de dialogue et de revenir à une autre tâche sans annuler ou supprimer la boîte de dialogue.

Un CDialog objet est une combinaison d’un modèle de dialogue et d’une CDialogclasse dérivée. Utilisez l’éditeur de boîte de dialogue pour créer le modèle de dialogue et le stocker dans une ressource, puis utilisez l’Assistant Ajouter une classe pour créer une classe dérivée de CDialog.

Une boîte de dialogue, comme n’importe quelle autre fenêtre, reçoit des messages de Windows. Dans une boîte de dialogue, vous êtes particulièrement intéressé par la gestion des messages de notification à partir des contrôles de la boîte de dialogue, car c’est ainsi que l’utilisateur interagit avec votre boîte de dialogue. Utilisez l’Assistant Classe pour sélectionner les messages que vous souhaitez gérer et ajouter les entrées de mappage de messages appropriées et les fonctions membres du gestionnaire de messages à la classe pour vous. Vous devez uniquement écrire du code spécifique à l’application dans les fonctions membres du gestionnaire.

Si vous préférez, vous pouvez toujours écrire manuellement des entrées de mappage de messages et des fonctions membres.

Dans toutes les boîtes de dialogue les plus triviales, vous ajoutez des variables membres à votre classe de dialogue dérivée pour stocker les données entrées dans les contrôles de la boîte de dialogue par l’utilisateur ou pour afficher les données de l’utilisateur. Vous pouvez utiliser l’Assistant Ajouter une variable pour créer des variables membres et les associer à des contrôles. En même temps, vous choisissez un type de variable et une plage de valeurs autorisée pour chaque variable. L’Assistant Code ajoute les variables membres à votre classe de boîte de dialogue dérivée.

Une carte de données est générée pour gérer automatiquement l’échange de données entre les variables membres et les contrôles de la boîte de dialogue. Le mappage de données fournit des fonctions qui initialisent les contrôles dans la boîte de dialogue avec les valeurs appropriées, récupèrent les données et valident les données.

Pour créer une boîte de dialogue modale, construisez un objet sur la pile à l’aide du constructeur de votre classe de dialogue dérivée, puis appelez DoModal pour créer la fenêtre de dialogue et ses contrôles. Si vous souhaitez créer un dialogue sans mode, appelez Create le constructeur de votre classe de dialogue.

Vous pouvez également créer un modèle en mémoire à l’aide d’une structure de données DLGTEMPLATE , comme décrit dans le Kit de développement logiciel (SDK) Windows. Après avoir construit un CDialog objet, appelez CreateIndirect pour créer une boîte de dialogue sans mode, ou appelez InitModalIndirect et DoModal pour créer une boîte de dialogue modale.

Le mappage de données d’échange et de validation est écrit dans un remplacement de celui-ci ajouté à votre nouvelle classe de boîte de CWnd::DoDataExchange dialogue. Pour plus d’informations sur la fonctionnalité d’échange et de validation, consultez la fonction CWnd membre DoDataExchange.

Le programmeur et l’infrastructure appellent DoDataExchange indirectement par le biais d’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 le bouton Annuler est cliqué.) L’implémentation par défaut d’OnInitDialog appelle UpdateData également pour définir les valeurs initiales des contrôles. En règle générale, vous remplacez OnInitDialog pour initialiser davantage les contrôles. OnInitDialog est appelé une fois que tous les contrôles de boîte de dialogue sont créés et juste avant l’affichage de la boîte de dialogue.

Vous pouvez appeler CWnd::UpdateData à tout moment pendant l’exécution d’une boîte de dialogue modale ou sans mode.

Si vous développez une boîte de dialogue manuellement, vous ajoutez les variables membres nécessaires à la classe de boîte de dialogue dérivée vous-même, et vous ajoutez des fonctions membres pour définir ou obtenir ces valeurs.

Une boîte de dialogue modale se ferme automatiquement lorsque l’utilisateur appuie sur les boutons OK ou Annuler ou lorsque votre code appelle la EndDialog fonction membre.

Lorsque vous implémentez une boîte de dialogue sans mode, remplacez toujours la OnCancel fonction membre et appelez-la DestroyWindow . N’appelez pas la classe CDialog::OnCancelde base, car elle appelle EndDialog, ce qui rend la boîte de dialogue invisible, mais ne la détruit pas. Vous devez également remplacer PostNcDestroy les boîtes de dialogue sans mode pour supprimer this, car les boîtes de dialogue sans mode sont généralement allouées avec new. Les boîtes de dialogue modales sont généralement construites sur le cadre et n’ont pas besoin de PostNcDestroy nettoyage.

Pour plus d’informations sur CDialog, consultez boîtes de dialogue.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CDialog

Spécifications

En-tête : afxwin.h

CDialog ::CDialog

Pour construire une boîte de dialogue modale basée sur des ressources, appelez une forme publique du constructeur.

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

Paramètres

lpszTemplateName
Contient une chaîne terminée par null qui est le nom d’une ressource de modèle de boîte de dialogue.

nIDTemplate
Contient le numéro d’ID d’une ressource de modèle de boîte de dialogue.

pParentWnd
Pointe vers l’objet de fenêtre parent ou propriétaire (de type CWnd) auquel appartient l’objet de boîte de dialogue. S’il s’agit de NULL, la fenêtre parente de l’objet de boîte de dialogue est définie sur la fenêtre principale de l’application.

Notes

Un formulaire du constructeur permet d’accéder à la ressource de boîte de dialogue par nom de modèle. L’autre constructeur fournit l’accès par numéro d’ID de modèle, généralement avec un préfixe IDD_ (par exemple, IDD_DIALOG1).

Pour construire une boîte de dialogue modale à partir d’un modèle en mémoire, appelez d’abord le constructeur sans paramètre, protégé, puis appelez InitModalIndirect.

Après avoir construit une boîte de dialogue modale avec l’une des méthodes ci-dessus, appelez DoModal.

Pour construire une boîte de dialogue sans mode, utilisez la forme protégée du CDialog constructeur. Le constructeur est protégé, car vous devez dériver votre propre classe de boîte de dialogue pour implémenter une boîte de dialogue sans mode. La construction d’une boîte de dialogue sans mode est un processus en deux étapes. Appelez d’abord le constructeur ; appelez ensuite la Create fonction membre pour créer une boîte de dialogue basée sur des ressources ou appelez-la CreateIndirect pour créer la boîte de dialogue à partir d’un modèle en mémoire.

CDialog ::Create

Appelez Create pour créer une boîte de dialogue sans mode à l’aide d’un modèle de boîte de dialogue à partir d’une ressource.

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

Paramètres

lpszTemplateName
Contient une chaîne terminée par null qui est le nom d’une ressource de modèle de boîte de dialogue.

pParentWnd
Pointe vers l’objet de fenêtre parent (de type CWnd) auquel appartient l’objet de boîte de dialogue. S’il s’agit de NULL, la fenêtre parente de l’objet de boîte de dialogue est définie sur la fenêtre principale de l’application.

nIDTemplate
Contient le numéro d’ID d’une ressource de modèle de boîte de dialogue.

Valeur de retour

Les deux formulaires retournent un résultat différent de zéro si la création de boîte de dialogue et l’initialisation ont réussi ; sinon 0.

Notes

Vous pouvez placer l’appel à Create l’intérieur du constructeur ou l’appeler après l’appel du constructeur.

Deux formes de la Create fonction membre sont fournies pour accéder à la ressource de modèle de boîte de dialogue par nom de modèle ou numéro d’ID de modèle (par exemple, IDD_DIALOG1).

Pour l’un ou l’autre formulaire, transmettez un pointeur à l’objet de fenêtre parent. Si pParentWnd a la valeur NULL, la boîte de dialogue est créée avec sa fenêtre parente ou propriétaire définie sur la fenêtre principale de l’application.

La Create fonction membre retourne immédiatement après avoir créé la boîte de dialogue.

Utilisez le style WS_VISIBLE dans le modèle de boîte de dialogue si la boîte de dialogue doit apparaître lorsque la fenêtre parente est créée. Sinon, vous devez appeler ShowWindow. Pour plus d’informations sur les styles de boîte de dialogue et leur application, consultez la structure DLGTEMPLATE dans le Kit de développement logiciel (SDK) Windows et les styles de fenêtre dans la référence MFC.

Utilisez la CWnd::DestroyWindow fonction pour détruire une boîte de dialogue créée par la Create fonction.

Exemple

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog ::CreateIndirect

Appelez cette fonction membre pour créer une boîte de dialogue sans mode à partir d’un modèle de boîte de dialogue en mémoire.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Paramètres

lpDialogTemplate
Pointe vers la mémoire qui contient un modèle de boîte de dialogue utilisé pour créer la boîte de dialogue. Ce modèle se présente sous la forme d’une structure DLGTEMPLATE et d’informations de contrôle, comme décrit dans le Kit de développement logiciel (SDK) Windows.

pParentWnd
Pointe vers l’objet de fenêtre parent de l’objet dialog (de type CWnd). S’il s’agit de NULL, la fenêtre parente de l’objet de boîte de dialogue est définie sur la fenêtre principale de l’application.

lpDialogInit
Pointe vers une ressource DLGINIT.

hDialogTemplate
Contient un handle de mémoire globale contenant un modèle de boîte de dialogue. Ce modèle se présente sous la forme d’une DLGTEMPLATE structure et de données pour chaque contrôle de la boîte de dialogue.

Valeur de retour

Différent de zéro si la boîte de dialogue a été créée et initialisée avec succès ; sinon 0.

Notes

La CreateIndirect fonction membre retourne immédiatement après avoir créé la boîte de dialogue.

Utilisez le style WS_VISIBLE dans le modèle de boîte de dialogue si la boîte de dialogue doit apparaître lorsque la fenêtre parente est créée. Sinon, vous devez appeler ShowWindow pour qu’elle apparaisse. Pour plus d’informations sur la façon dont vous pouvez spécifier d’autres styles de boîte de dialogue dans le modèle, consultez la structure DLGTEMPLATE dans le Kit de développement logiciel (SDK) Windows.

Utilisez la CWnd::DestroyWindow fonction pour détruire une boîte de dialogue créée par la CreateIndirect fonction.

Les boîtes de dialogue qui contiennent des contrôles ActiveX nécessitent des informations supplémentaires fournies dans une ressource DLGINIT.

CDialog ::D oModal

Appelez cette fonction membre pour appeler la boîte de dialogue modale et renvoyer le résultat de la boîte de dialogue lorsque vous avez terminé.

virtual INT_PTR DoModal();

Valeur de retour

Valeur int qui spécifie la valeur du paramètre nResult qui a été transmis à la fonction membre CDialog ::EndDialog , utilisée pour fermer la boîte de dialogue. La valeur de retour est -1 si la fonction n’a pas pu créer la boîte de dialogue, ou IDABORT si une autre erreur s’est produite, auquel cas la fenêtre de sortie contiendra des informations d’erreur de GetLastError.

Notes

Cette fonction membre gère toutes les interactions avec l’utilisateur pendant que la boîte de dialogue est active. C’est ce qui rend la boîte de dialogue modale ; autrement dit, l’utilisateur ne peut pas interagir avec d’autres fenêtres tant que la boîte de dialogue n’est pas fermée.

Si l’utilisateur clique sur l’un des boutons push dans la boîte de dialogue, comme OK ou Cancel, une fonction membre de gestionnaire de messages, telle qu’OnOK ou OnCancel, est appelée pour tenter de fermer la boîte de dialogue. La fonction membre par défaut OnOK valide et met à jour les données de boîte de dialogue et ferme la boîte de dialogue avec IDOK de résultat, et la fonction membre par défaut OnCancel ferme la boîte de dialogue avec le résultat IDCANCEL sans valider ni mettre à jour les données de la boîte de dialogue. Vous pouvez remplacer ces fonctions de gestionnaire de messages pour modifier leur comportement.

Remarque

PreTranslateMessage est maintenant appelé pour le traitement des messages de la boîte de dialogue modale.

Exemple

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog ::EndDialog

Appelez cette fonction membre pour arrêter une boîte de dialogue modale.

void EndDialog(int nResult);

Paramètres

nResult
Contient la valeur à renvoyer de la boîte de dialogue à l’appelant de DoModal.

Notes

Cette fonction membre retourne nResult comme valeur de retour de DoModal. Vous devez utiliser la fonction pour terminer le EndDialog traitement chaque fois qu’une boîte de dialogue modale est créée.

Vous pouvez appeler EndDialog à tout moment, même dans OnInitDialog, auquel cas vous devez fermer la boîte de dialogue avant qu’elle soit affichée ou avant que le focus d’entrée soit défini.

EndDialog ne ferme pas immédiatement la boîte de dialogue. Au lieu de cela, il définit un indicateur qui dirige la boîte de dialogue à fermer dès que le gestionnaire de messages actuel retourne.

Exemple

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog ::GetDefID

Appelez la GetDefID fonction membre pour obtenir l’ID du contrôle pushbutton par défaut pour une boîte de dialogue.

DWORD GetDefID() const;

Valeur de retour

Valeur 32 bits ( DWORD). Si le bouton pushbutton par défaut a une valeur d’ID, le mot de classement élevé contient DC_HASDEFID et le mot de bas ordre contient la valeur d’ID. Si le bouton push par défaut n’a pas de valeur d’ID, la valeur de retour est 0.

Notes

Il s’agit généralement d’un bouton OK.

CDialog ::GotoDlgCtrl

Déplace le focus sur le contrôle spécifié dans la boîte de dialogue.

void GotoDlgCtrl(CWnd* pWndCtrl);

Paramètres

pWndCtrl
Identifie la fenêtre (contrôle) qui doit recevoir le focus.

Notes

Pour obtenir un pointeur vers le contrôle (fenêtre enfant) à passer en tant que pWndCtrl, appelez la CWnd::GetDlgItem fonction membre, qui retourne un pointeur vers un objet CWnd .

Exemple

Consultez l’exemple de CWnd ::GetDlgItem.

CDialog ::InitModalIndirect

Appelez cette fonction membre pour initialiser un objet de boîte de dialogue modal à l’aide d’un modèle de boîte de dialogue que vous construisez en mémoire.

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Paramètres

lpDialogTemplate
Pointe vers la mémoire qui contient un modèle de boîte de dialogue utilisé pour créer la boîte de dialogue. Ce modèle se présente sous la forme d’une structure DLGTEMPLATE et d’informations de contrôle, comme décrit dans le Kit de développement logiciel (SDK) Windows.

hDialogTemplate
Contient un handle de mémoire globale contenant un modèle de boîte de dialogue. Ce modèle se présente sous la forme d’une DLGTEMPLATE structure et de données pour chaque contrôle de la boîte de dialogue.

pParentWnd
Pointe vers l’objet de fenêtre parent ou propriétaire (de type CWnd) auquel appartient l’objet de boîte de dialogue. S’il s’agit de NULL, la fenêtre parente de l’objet de boîte de dialogue est définie sur la fenêtre principale de l’application.

lpDialogInit
Pointe vers une ressource DLGINIT.

Valeur de retour

Différent de zéro si l’objet de boîte de dialogue a été créé et initialisé avec succès ; sinon 0.

Notes

Pour créer indirectement une boîte de dialogue modale, allouez d’abord un bloc global de mémoire et remplissez-le avec le modèle de boîte de dialogue. Appelez ensuite le constructeur vide CDialog pour construire l’objet de boîte de dialogue. Ensuite, appelez InitModalIndirect pour stocker votre handle vers le modèle de boîte de dialogue en mémoire. La boîte de dialogue Windows est créée et affichée ultérieurement, lorsque la fonction membre DoModal est appelée.

Les boîtes de dialogue qui contiennent des contrôles ActiveX nécessitent des informations supplémentaires fournies dans une ressource DLGINIT.

CDialog ::MapDialogRect

Appelez pour convertir les unités de boîte de dialogue d’un rectangle en unités d’écran.

void MapDialogRect(LPRECT lpRect) const;

Paramètres

lpRect
Pointe vers une structure RECT ou un objet CRect qui contient les coordonnées de boîte de dialogue à convertir.

Notes

Les unités de boîte de dialogue sont indiquées en termes d’unité de base de boîte de dialogue actuelle dérivée de la largeur moyenne et de la hauteur des caractères dans la police utilisée pour le texte de la boîte de dialogue. Une unité horizontale est une quatrième de l’unité de largeur de base de la boîte de dialogue, et une unité verticale est une huitième de l’unité de hauteur de base de boîte de dialogue.

La GetDialogBaseUnits fonction Windows retourne des informations de taille pour la police système, mais vous pouvez spécifier une police différente pour chaque boîte de dialogue si vous utilisez le style DS_SETFONT dans le fichier de définition de ressource. La MapDialogRect fonction Windows utilise la police appropriée pour cette boîte de dialogue.

La MapDialogRect fonction membre remplace les unités de boîte de dialogue dans lpRect par des unités d’écran (pixels) afin que le rectangle puisse être utilisé pour créer une boîte de dialogue ou positionner un contrôle dans une zone.

CDialog ::NextDlgCtrl

Déplace le focus sur le contrôle suivant dans la boîte de dialogue.

void NextDlgCtrl() const;

Notes

Si le focus se trouve au dernier contrôle de la boîte de dialogue, il passe au premier contrôle.

CDialog ::OnCancel

L’infrastructure appelle cette méthode lorsque l’utilisateur clique sur Annuler ou appuie sur la touche ÉCHAP dans une boîte de dialogue modale ou sans mode.

virtual void OnCancel();

Notes

Remplacez cette méthode pour effectuer des actions (telles que la restauration d’anciennes données) lorsqu’un utilisateur ferme la boîte de dialogue en cliquant sur Annuler ou en appuyant sur la touche ÉCHAP. La valeur par défaut ferme une boîte de dialogue modale en appelant EndDialog et en empêchant DoModal de retourner IDCANCEL.

Si vous implémentez le bouton Annuler dans une boîte de dialogue sans mode, vous devez remplacer la méthode et appeler DestroyWindow à l’intérieurOnCancel. N’appelez pas la méthode de classe de base, car elle appelle EndDialog, ce qui rend la boîte de dialogue invisible, mais ne la détruit pas.

Remarque

Vous ne pouvez pas remplacer cette méthode lorsque vous utilisez un CFileDialog objet dans un programme compilé sous Windows XP. Pour plus d’informations sur CFileDialogla classe CFileDialog.

Exemple

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog ::OnInitDialog

Cette méthode est appelée en réponse au WM_INITDIALOG message.

virtual BOOL OnInitDialog();

Valeur de retour

Spécifie si l’application a défini le focus d’entrée sur l’un des contrôles de la boîte de dialogue. Si OnInitDialog cette valeur est renvoyée différente de zéro, Windows définit le focus d’entrée sur l’emplacement par défaut, le premier contrôle de la boîte de dialogue. L’application peut retourner 0 uniquement si elle a explicitement défini le focus d’entrée sur l’un des contrôles de la boîte de dialogue.

Notes

Windows envoie le WM_INITDIALOG message à la boîte de dialogue pendant les appels Create, CreateIndirect ou DoModal , qui se produisent immédiatement avant l’affichage de la boîte de dialogue.

Remplacez cette méthode si vous souhaitez effectuer un traitement spécial lorsque la boîte de dialogue est initialisée. Dans la version substituée, appelez d’abord la classe OnInitDialog de base, mais ignorez sa valeur de retour. Vous retournerez généralement TRUE à partir de votre méthode substituée.

Windows appelle la OnInitDialog fonction à l’aide de la procédure de boîte de dialogue globale standard commune à toutes les boîtes de dialogue bibliothèque de classes Microsoft Foundation. Il n’appelle pas cette fonction par le biais de votre carte de messages et, par conséquent, vous n’avez pas besoin d’une entrée de mappage de messages pour cette méthode.

Remarque

Vous ne pouvez pas remplacer cette méthode lorsque vous utilisez un CFileDialog objet dans un programme compilé sous Windows Vista ou des systèmes d’exploitation ultérieurs. Pour plus d’informations sur les modifications apportées sous CFileDialog Windows Vista et versions ultérieures, consultez la classe CFileDialog.

Exemple

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog ::OnOK

Appelé lorsque l’utilisateur clique sur le bouton OK (le bouton avec un ID d’IDOK).

virtual void OnOK();

Notes

Remplacez cette méthode pour effectuer des actions lorsque le bouton OK est activé. Si la boîte de dialogue inclut la validation et l’échange automatiques de données, l’implémentation par défaut de cette méthode valide les données de la boîte de dialogue et met à jour les variables appropriées dans votre application.

Si vous implémentez le bouton OK dans une boîte de dialogue sans mode, vous devez remplacer la OnOK méthode et appeler DestroyWindow à l’intérieur. N’appelez pas la méthode de classe de base, car elle appelle EndDialog qui rend la boîte de dialogue invisible, mais ne la détruit pas.

Remarque

Vous ne pouvez pas remplacer cette méthode lorsque vous utilisez un CFileDialog objet dans un programme compilé sous Windows XP. Pour plus d’informations sur CFileDialogla classe CFileDialog.

Exemple

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog ::OnSetFont

Spécifie la police qu’un contrôle de boîte de dialogue utilisera lors du dessin de texte.

Virtual void OnSetFont(CFont* pFont);

Paramètres

pFont
[in] Spécifie un pointeur vers la police qui sera utilisée comme police par défaut pour tous les contrôles de cette boîte de dialogue.

Notes

La boîte de dialogue utilise la police spécifiée comme valeur par défaut pour tous ses contrôles.

L’éditeur de boîte de dialogue définit généralement la police de boîte de dialogue dans le cadre de la ressource de modèle de boîte de dialogue.

Remarque

Vous ne pouvez pas remplacer cette méthode lorsque vous utilisez un CFileDialog objet dans un programme compilé sous Windows Vista ou des systèmes d’exploitation ultérieurs. Pour plus d’informations sur les modifications apportées sous CFileDialog Windows Vista et versions ultérieures, consultez la classe CFileDialog.

CDialog ::P revDlgCtrl

Définit le focus sur le contrôle précédent dans la boîte de dialogue.

void PrevDlgCtrl() const;

Notes

Si le focus se trouve au premier contrôle de la boîte de dialogue, il passe au dernier contrôle de la zone.

CDialog ::SetDefID

Modifie le contrôle pushbutton par défaut d’une boîte de dialogue.

void SetDefID(UINT nID);

Paramètres

nID
Spécifie l’ID du contrôle pushbutton qui deviendra la valeur par défaut.

CDialog ::SetHelpID

Définit un ID d’aide sensible au contexte pour la boîte de dialogue.

void SetHelpID(UINT nIDR);

Paramètres

nIDR
Spécifie l’ID d’aide sensible au contexte.

Voir aussi

Exemple de DLGCBR32 MFC
Exemple DLGTEMPL MFC
CWnd, classe
Graphique hiérarchique