MFC - Boîtes de dialogue

Dans ce chapitre, nous couvrirons les boîtes de dialogue. Les applications pour Windows communiquent fréquemment avec l'utilisateur via des boîtes de dialogue.CDialog classfournit une interface de gestion des boîtes de dialogue. L'éditeur de boîte de dialogue Visual C ++ facilite la conception de boîtes de dialogue et la création de leurs ressources de modèle de boîte de dialogue.

  • La création d'un objet de dialogue est une opération en deux phases -

    • Construisez l'objet de dialogue.

    • Créez la fenêtre de dialogue.

Examinons un exemple simple en créant un nouveau projet Win32.

Step 1 - Ouvrez le studio visuel et cliquez sur l'option de menu Fichier → Nouveau → Projet.

Step 2 - Vous pouvez maintenant voir la boîte de dialogue Nouveau projet.

Step 3 - Dans le volet gauche, sélectionnez Modèles → Visual C ++ → Win32.

Step 4 - Dans le volet central, sélectionnez Projet Win32.

Step 5- Entrez le nom du projet «MFCDialogDemo» dans le champ Nom et cliquez sur OK pour continuer. Vous verrez la boîte de dialogue suivante.

Step 6 - Cliquez sur Suivant.

Step 7 - Sélectionnez les options affichées dans la boîte de dialogue ci-dessus et cliquez sur Terminer.

Step 8 - Un projet vide est créé.

Step 9 - Pour en faire un projet MFC, cliquez avec le bouton droit sur le projet et sélectionnez Propriétés.

Step 10 - Dans la section de gauche, cliquez sur Propriétés de configuration → Général.

Step 11 - Sélectionnez l'option Utiliser MFC dans la DLL partagée dans la section Paramètres par défaut du projet et cliquez sur OK.

Step 12 - Ajoutez un nouveau fichier source.

Step 13 - Cliquez avec le bouton droit sur votre projet et sélectionnez Ajouter → Nouvel élément.

Step 14 - Dans la section Modèles, cliquez sur Fichier C ++ (.cpp)

Step 15 - Définissez le nom comme exemple et cliquez sur Ajouter.

Step 16 - Pour créer une application, nous devons ajouter une classe et la dériver de CWinApp du MFC.

#include <afxwin.h>

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};

Création de boîte de dialogue

Step 1 - Pour créer une boîte de dialogue, cliquez avec le bouton droit sur le dossier Fichiers de ressources dans l'explorateur de solutions et sélectionnez Ajouter → Ressource.

Step 2 - Dans la boîte de dialogue Ajouter une ressource, sélectionnez Dialogue et cliquez sur Nouveau.

Step 3 - Une boîte de dialogue nécessite une certaine préparation avant de la créer par programme.

Step 4 - Une boîte de dialogue peut d'abord être créée manuellement sous forme de fichier texte (dans un fichier de ressources).

Step 5 - Vous pouvez maintenant voir le fichier MFCDialogDemo.rc créé sous Fichiers de ressources.

Step 6- Le fichier de ressources est ouvert dans le concepteur. Le même peut être ouvert sous forme de fichier texte. Cliquez avec le bouton droit sur le fichier de ressources et sélectionnez Ouvrir avec.

Step 7 - Sélectionnez l'éditeur de code source (texte) et cliquez sur le bouton Ajouter.

Step 8 - Revenez au concepteur et cliquez avec le bouton droit sur la boîte de dialogue et sélectionnez Propriétés.

Step 9 - Vous devez choisir parmi les nombreuses options.

Step 10- Comme la plupart des autres contrôles, une boîte de dialogue doit être identifiée. L'identifiant (ID) d'une boîte de dialogue commence généralement par IDD_, Changeons l'ID en IDD_EXAMPLE_DLG.

Emplacement de la boîte de dialogue

Une boîte de dialogue doit être «physiquement» située sur une application. Étant donné qu'une boîte de dialogue est généralement créée en tant que parent d'autres contrôles, son emplacement dépend de sa relation avec sa fenêtre parente ou avec le bureau.

Si vous regardez et la fenêtre Propriétés, vous voyez deux champs, X Pos et Y Pos.

  • X est la distance entre le bord gauche du moniteur et le bord gauche de la boîte de dialogue.

  • Y est la distance entre la bordure supérieure du moniteur et la bordure supérieure de la boîte de dialogue.

Par défaut, ces champs sont définis sur zéro. Vous pouvez également changer comme indiqué ci-dessus.

Si vous spécifiez ces deux dimensions sur 0, les bordures gauche et supérieure de la boîte de dialogue seraient définies de sorte que l'objet apparaisse au centre-milieu de l'écran.

Dimensions de la boîte de dialogue

Les dimensions d'une boîte de dialogue font référence à sa largeur et à sa hauteur. Vous pouvez redimensionner la largeur et la hauteur à l'aide de la souris dans la fenêtre du concepteur.

Vous pouvez voir les changements de largeur et de hauteur dans la barre d'état.

Méthodes de boîte de dialogue

La classe de base utilisée pour afficher les boîtes de dialogue à l'écran est la classe CDialog. Pour créer une boîte de dialogue, nous devons dériver une classe de CDialog. La classe CDialog elle-même fournit trois constructeurs qui sont les suivants -

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

Créons une autre classe CExampleDlg et dérivons-la de CDialog. Nous allons implémenter son destructeur de constructeur par défaut comme indiqué dans le code suivant.

class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
      ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

Nous devons instancier cette boîte de dialogue sur la méthode CExample :: InitInstance () comme indiqué dans le code suivant.

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   
   return TRUE;
}

Boîtes de dialogue modales

Il existe deux types de boîtes de dialogue - modeless et modal. Les boîtes de dialogue modales et non modales diffèrent par le processus utilisé pour les créer et les afficher.

Boîte de dialogue sans mode

  • Pour une boîte de dialogue non modale, vous devez fournir votre propre constructeur public dans votre classe de dialogue.

  • Pour créer une boîte de dialogue non modale, appelez votre constructeur public, puis appelez la fonction membre Créer de l'objet de dialogue pour charger la ressource de dialogue.

  • Vous pouvez appeler Create pendant ou après l'appel du constructeur. Si la ressource de dialogue a la propriété WS_VISIBLE, la boîte de dialogue apparaît immédiatement.

  • Sinon, vous devez appeler sa fonction membre ShowWindow.

Boîte de dialogue modale

  • Pour créer une boîte de dialogue modale, appelez l'un des deux constructeurs publics déclarés dans CDialog.

  • Ensuite, appelez l'objet de dialogue DoModal fonction membre pour afficher la boîte de dialogue et gérer l'interaction avec elle jusqu'à ce que l'utilisateur choisisse OK ou Annuler.

  • Cette gestion par DoModal est ce qui rend la boîte de dialogue modale. Pour les boîtes de dialogue modales, DoModal charge la ressource de dialogue.

Step 1 - Pour afficher la boîte de dialogue comme modale, dans l'événement CExample :: InitInstance () appelez la méthode DoModal () en utilisant votre variable de dialogue -

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}

Step 2 - Voici l'implémentation complète du fichier Example.cpp.

#include <afxwin.h>
#include "resource.h"

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};
   
class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
     ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}
CExample MyApp;

Step 3 - Lorsque le code ci-dessus est compilé et exécuté, vous verrez la boîte de dialogue suivante.

Applications basées sur des dialogues

Microsoft Visual Studio offre un moyen plus simple de créer une application principalement basée sur une boîte de dialogue. Voici les étapes pour créer un projet de base de dialogue à l'aide des modèles de projet disponibles dans Visual Studio -

Step 1- Ouvrez le studio visuel et cliquez sur l'option de menu Fichier → Nouveau → Projet. Vous pouvez voir la boîte de dialogue Nouveau projet.

Step 2 - Dans le volet gauche, sélectionnez Modèles → Visual C ++ → MFC.

Step 3 - Dans le volet central, sélectionnez Application MFC.

Step 4- Entrez le nom du projet «MFCModalDemo» dans le champ Nom et cliquez sur OK pour continuer. Vous verrez la boîte de dialogue suivante.

Step 5 - Cliquez sur Suivant.

Step 6 - Sélectionnez les options affichées dans la boîte de dialogue ci-dessus et cliquez sur Suivant.

Step 7 - Cochez toutes les options que vous choisissez d'avoir sur votre boîte de dialogue comme Maximiser et Réduire les boîtes et cliquez sur Suivant.

Step 8 - Cliquez sur Suivant.

Step 9- Il générera ces deux classes. Vous pouvez modifier le nom des classes et cliquer sur Terminer.

Step 10 - Vous pouvez maintenant voir que l'assistant MFC crée cette boîte de dialogue et les fichiers de projet par défaut.

Step 11 - Lorsque vous exécutez cette application, vous verrez la sortie suivante.