Share via


Procédure pas à pas : utilisation des nouveaux contrôles d'environnement MFC

Dans cette procédure pas à pas, vous allez créer une application semblable à Explorateur de fichiers. Vous allez créer une fenêtre qui comporte deux volets. Le volet gauche contiendra un objet CMFCShellTreeCtrl qui affiche votre Bureau dans une vue hiérarchique. Le volet droit contiendra une cmFCShellListCtrl qui affiche les fichiers du dossier sélectionné dans le volet gauche.

Prérequis

  • Dans Visual Studio 2017 et versions ultérieures, la prise en charge de MFC est un composant facultatif. Pour l’installer, ouvrez Visual Studio Installer à partir de Windows menu Démarrer. Recherchez la version de Visual Studio que vous utilisez et choisissez le bouton Modifier . Vérifiez que la vignette Desktop Development avec C++ est case activée ed. Sous Composants facultatifs, case activée le bouton Prise en charge de MFC.

  • Cette procédure pas à pas suppose que vous avez configuré Visual Studio pour utiliser le Paramètres de développement général. Si vous utilisez un paramètre de développement différent, certaines fenêtres Visual Studio que nous utilisons dans cette procédure pas à pas peuvent ne pas être affichées par défaut.

Pour créer une application MFC à l’aide de l’Assistant Application MFC

Ces étapes varient selon la version de Visual Studio que vous utilisez. Pour consulter la documentation sur votre version préférée de Visual Studio, utilisez le contrôle de sélection de Version . Il se trouve en haut de la table des matières de cette page.

Pour créer un projet MFC dans Visual Studio

  1. Dans le menu principal, choisissez Fichier>Nouveau>Projet pour ouvrir la boîte de dialogue Créer un projet.

  2. Dans la zone de recherche située en haut, tapez MFC , puis choisissez Application MFC dans la liste des résultats.

  3. Sélectionnez Suivant. Dans la page suivante, entrez un nom pour le projet et spécifiez l’emplacement du projet si vous le souhaitez.

  4. Choisissez le bouton Créer pour créer le projet.

    Une fois que l’Assistant Application MFC s’affiche, utilisez les options suivantes :

    1. Choisissez Type d’application sur la gauche. Sélectionnez Ensuite un document unique et sélectionnez Prise en charge de l’architecture document/affichage. Sous Style de projet, sélectionnez Visual Studio, puis, dans la liste déroulante Style visuel et couleurs, sélectionnez Bureau 2007 (thème bleu).

    2. Dans le volet Prise en charge des documents composés, sélectionnez Aucun.

    3. N’apportez aucune modification au volet Propriétés du modèle de document.

    4. Dans le volet Fonctionnalités de l’interface utilisateur, vérifiez que l’option Utiliser une barre de menus et une barre d’outils est sélectionnée. Laissez toutes les autres options telles qu’elles le sont.

    5. Dans le volet Fonctionnalités avancées, sélectionnez les contrôles ActiveX, le manifeste de contrôle commun et l’option volet de navigation. Laissez le reste en l’état. L’option Volet de navigation entraîne la création du volet à gauche de la fenêtre avec un CMFCShellTreeCtrl volet déjà incorporé.

    6. Nous n’allons apporter aucune modification au volet Classes générées. Cliquez donc sur Terminer pour créer votre projet MFC.

Pour créer un projet MFC dans Visual Studio 2017 ou version antérieure

  1. Utilisez l’Assistant Application MFC pour créer une application MFC. Pour exécuter l’Assistant, dans le menu Fichier, sélectionnez Nouveau, puis Projet. La boîte de dialogue Nouveau projet s’affiche.

  2. Dans la boîte de dialogue Nouveau projet , développez le nœud Visual C++ dans le volet Types de projets et sélectionnez MFC. Ensuite, dans le volet Modèles , sélectionnez Application MFC. Tapez un nom pour le projet, par MFCShellControls exemple, puis cliquez sur OK.

    Une fois que l’Assistant Application MFC s’affiche, utilisez les options suivantes :

    1. Dans le volet Type d’application, sous Type d’application, désactivez l’option de documents tabulation. Ensuite, sélectionnez Document unique et sélectionnez Prise en charge de l’architecture Document/View. Sous Style de projet, sélectionnez Visual Studio, puis, dans la liste déroulante Style visuel et couleurs, sélectionnez Bureau 2007 (thème bleu).

    2. Dans le volet Prise en charge des documents composés, sélectionnez Aucun.

    3. N’apportez aucune modification au volet Chaînes de modèle de document.

    4. Dans le volet Prise en charge de la base de données (Visual Studio 2015 et versions antérieures), sélectionnez Aucun, car l’application n’utilise pas de base de données.

    5. Dans le volet Fonctionnalités de l’interface utilisateur, vérifiez que l’option Utiliser une barre de menus et une barre d’outils est sélectionnée. Laissez toutes les autres options telles qu’elles le sont.

    6. Dans le volet Fonctionnalités avancées, sous Fonctionnalités avancées, sélectionnez uniquement les contrôles ActiveX et le manifeste de contrôle commun. Sous Volets d’images avancés, sélectionnez uniquement l’option volet de navigation. L’Assistant crée le volet à gauche de la fenêtre avec un CMFCShellTreeCtrl élément déjà incorporé.

    7. Nous n’allons apporter aucune modification au volet Classes générées. Cliquez donc sur Terminer pour créer votre projet MFC.

Vérifiez que l’application a été créée correctement en le créant et en l’exécutant. Pour générer l’application, dans le menu Générer , sélectionnez Build Solution. Si l’application est générée avec succès, exécutez l’application en sélectionnant Démarrer le débogage dans le menu Débogage .

L’Assistant crée automatiquement une application disposant d’une barre de menus standard, d’une barre d’outils standard, d’une barre d’état standard et d’une barre Outlook à gauche de la fenêtre avec un affichage Dossiers et un affichage Calendrier .

Pour ajouter le contrôle de liste d’interpréteurs de commandes à l’affichage de document

  1. Dans cette section, vous allez ajouter une instance de CMFCShellListCtrl la vue créée par l’Assistant. Ouvrez le fichier d’en-tête d’affichage en double-cliquant sur MFCShellControlsView.h dans le Explorateur de solutions.

    Recherchez la #pragma once directive en haut du fichier d’en-tête. Immédiatement en dessous, ajoutez ce code pour inclure le fichier d’en-tête pour CMFCShellListCtrl:

    #include <afxShellListCtrl.h>
    

    Ajoutez maintenant une variable membre de type CMFCShellListCtrl. Tout d’abord, recherchez le commentaire suivant dans le fichier d’en-tête :

    // Generated message map functions
    

    Immédiatement au-dessus de ce commentaire, ajoutez ce code :

    private:
    CMFCShellListCtrl m_wndList;
    
  2. L’Assistant Application MFC a déjà créé un CMFCShellTreeCtrl objet dans la CMainFrame classe, mais il s’agit d’un membre protégé. Nous allons accéder à l’objet ultérieurement, donc créer un accesseur pour celui-ci maintenant. Ouvrez le fichier d’en-tête MainFrm.h en double-cliquant dessus dans le Explorateur de solutions. Recherchez le commentaire suivant :

    // Attributes
    

    Immédiatement sous celui-ci, ajoutez la déclaration de méthode suivante :

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    Ensuite, ouvrez le fichier source MainFrm.cpp en double-cliquant dessus dans le Explorateur de solutions. En bas de ce fichier, ajoutez la définition de méthode suivante :

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. À présent, nous mettons à jour la CMFCShellControlsView classe pour gérer le WM_CREATE message Windows. Ouvrez la fenêtre Affichage de classes et sélectionnez la CMFCShellControlsView classe. Effectuez un clic droit et sélectionnez Propriétés.

    Ensuite, dans l’Assistant Classe, cliquez sur l’onglet Messages . Faites défiler jusqu’à ce que vous trouviez le WM_CREATE message. Dans la liste déroulante en regard de WM_CREATE, sélectionnez <Ajouter> OnCreate. La commande crée un gestionnaire de messages pour nous et met automatiquement à jour la carte des messages MFC.

    Dans la OnCreate méthode, nous allons maintenant créer notre CMFCShellListCtrl objet. Recherchez la définition de méthode OnCreate dans le fichier source MFCShellControlsView.cpp et remplacez son implémentation par le code suivant :

    int CMFCShellControlsView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if (CView::OnCreate(lpCreateStruct) == -1)
            return -1;
    
        CRect rectDummy (0, 0, 0, 0);
    
        m_wndList.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT,
            rectDummy, this, 1);
    
        return 0;
    }
    
  4. Répétez l’étape précédente, mais pour le WM_SIZE message. La vue de vos applications sera redessinée chaque fois qu’un utilisateur modifie la taille de la fenêtre d’application. Remplacez la définition de la OnSize méthode par le code suivant :

    void CMFCShellControlsView::OnSize(UINT nType, int cx, int cy)
    {
        CView::OnSize(nType, cx, cy);
    
        m_wndList.SetWindowPos(NULL, -1, -1, cx, cy,
            SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
    }
    
  5. La dernière étape consiste à connecter les CMFCShellTreeCtrl objets à CMFCShellListCtrl l’aide de la méthode CMFCShellTreeCtrl ::SetRelatedList . Une fois que vous avez appelé CMFCShellTreeCtrl::SetRelatedList, le CMFCShellListCtrl contenu de l’élément sélectionné est automatiquement affiché dans le CMFCShellTreeCtrl. Nous connectons les objets de la OnActivateView méthode, qui sont substitués à partir de CView ::OnActivateView.

    Dans le fichier d’en-tête MFCShellControlsView.h, à l’intérieur de la CMFCShellControlsView déclaration de classe, ajoutez la déclaration de méthode suivante :

    protected:
    virtual void OnActivateView(BOOL bActivate,
        CView* pActivateView,
        CView* pDeactiveView);
    

    Ensuite, ajoutez la définition de la méthode au fichier source MFCShellControlsView.cpp :

    void CMFCShellControlsView::OnActivateView(BOOL bActivate,
        CView* pActivateView,
        CView* pDeactiveView)
    {
        if (bActivate&& AfxGetMainWnd() != NULL)
        {
            ((CMainFrame*)AfxGetMainWnd())->GetShellTreeCtrl().SetRelatedList(&m_wndList);
        }
    
        CView::OnActivateView(bActivate,
            pActivateView,
            pDeactiveView);
    }
    

    Étant donné que nous appelons des méthodes à partir de la CMainFrame classe, nous devons ajouter une #include directive en haut du fichier source MFCShellControlsView.cpp :

    #include "MainFrm.h"
    
  6. Vérifiez que l’application a été créée correctement en le créant et en l’exécutant. Pour générer l’application, dans le menu Générer , sélectionnez Build Solution. Si l’application est générée avec succès, exécutez-la en sélectionnant Démarrer le débogage dans le menu Débogage .

    Vous devez maintenant voir les détails de l’élément sélectionné dans le CMFCShellTreeCtrl volet d’affichage. Lorsque vous cliquez sur un nœud dans le CMFCShellTreeCtrl, le CMFCShellListCtrl sera automatiquement mis à jour. De même, si vous double-cliquez sur un dossier dans le CMFCShellListCtrl, il CMFCShellTreeCtrl doit être automatiquement mis à jour.

    Cliquez avec le bouton droit sur n’importe quel élément dans le contrôle d’arborescence ou dans le contrôle de liste. Vous obtenez le même menu contextuel que si vous utilisiez le Explorateur de fichiers réel.

Étapes suivantes

  • L’Assistant a créé une barre Outlook avec un volet Dossiers et un volet Calendrier . Il n’est probablement pas judicieux d’avoir un volet Calendrier dans une fenêtre Explorateur , donc supprimez-le maintenant.

  • Il CMFCShellListCtrl prend en charge l’affichage de fichiers dans différents modes, tels que les grandes icônes, les petites icônes, la liste et les détails. Mettez à jour votre application pour implémenter cette fonctionnalité. Conseil : consultez les exemples Visual C++.

Voir aussi

Procédures pas à pas