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 CDialog
classe 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::OnCancel
de 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
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 CFileDialog
la 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 méthode et appeler DestroyWindow à l’intérieurOnOK
. 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 CFileDialog
la 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