Procédure pas - à - pas : À l'aide de les nouveaux contrôles de shell MFC
Dans cette procédure pas - à - pas, vous allez créer une application similaire à l'Explorateur de fichiers.Vous créerez une fenêtre composée de deux volets.Le volet gauche contiendra un objet de CMFCShellTreeCtrl qui affiche le Bureau dans une vue hiérarchique.Le volet droit contiendra CMFCShellListCtrl qui affiche les fichiers du dossier sélectionné dans le volet gauche.
Composants requis
Cette procédure pas - à - pas suppose que vous avez installé Visual Studio pour utiliser Paramètres de développement généraux.Si vous utilisez une configuration différente de développement, certaines fenêtres d' Visual Studio que nous utilisons dans cette procédure pas - à - pas ne peuvent pas être affichées par défaut.
Pour créer une application MFC à l'aide de l'Assistant Application MFC
Utilisez Assistant Application MFC pour créer une application MFC.Pour exécuter l'assistant, dans le menu Nouveauchoisi de Fichier , puis sélectionnez Projet.La boîte de dialogue de Nouveau projet s'affiche.
Dans la boîte de dialogue de Nouveau projet , développez le nœud de *** Visual C++ *** dans le volet de Types de projets et sélectionnez *** MFC ***.Puis, dans le volet de Modèles , Application MFCsélectionnez.Tapez un nom pour le projet, tel que MFCShellControls et cliquez sur OK.Assistant Application MFC S'affiche.
Dans la boîte de dialogue de Assistant Application MFC , cliquez sur Suivant.Le volet de Type d'application s'affiche.
Dans le volet de Type d'application , sous Type d'application, désactivez l'option de Documents avec onglet .Ensuite, *** document unique *** sélectionnez et ***** Prise en charge de l'architecture Document/Vue *****sélectionnez.Sous Style du projet, Visual Studiosélectionnez, puis de *** style visuel et couleurs *** supprimez le bas de la liste **Office 2007 (Thème blue)**sélectionnez.Laissez toutes les autres options comme elles sont.Cliquez sur Suivant pour afficher le volet de Prise en charge doc. composés .
Dans le volet de Prise en charge doc. composés , ***** aucun *****sélectionnez.Cliquez sur Suivant pour afficher le volet de *** chaînes de modèle de document *** .
N'effectuez aucune modification au volet de *** chaînes de modèle de document *** .Cliquez sur Suivant pour afficher le volet de Prise en charge des bases de données .
Dans le volet de Prise en charge des bases de données , *** aucun *** choisi parce que cette application n'utilise pas de base de données.Cliquez sur Suivant pour afficher le volet de Fonctionnalités interface util.
Dans le volet de Fonctionnalités interface util. , assurez -vous que l'option de *** utilisez une barre de menus et une barre d'outils *** est sélectionnée.Laissez toutes les autres options comme elles sont.Cliquez sur Suivant pour afficher le volet de Fonctionnalités avancées .
Dans le volet de Fonctionnalités avancées , sous Fonctionnalités avancées, sélectionnez uniquement Contrôles ActiveX et *** manifeste de contrôle commun ***.Sous Fenêtres frames avancées, sélectionnez uniquement l'option de Volet de navigation .Cela entraîne créer l'assistant le volet gauche de la fenêtre avec CMFCShellTreeCtrl déjà incorporé.Cliquez sur Suivant pour afficher le volet de Classes générées .
Nous allons ne pas apporter de modifications au volet de Classes générées .Par conséquent, cliquez sur Terminer pour créer votre projet MFC.
Vérifiez que l'application a été créée avec succès en la générant et en l'exécutant.Pour générer l'application, dans le menu Générer la solutionchoisi de Générer .Si l'application est générée avec succès, exécutez -la en sélectionnant Démarrer le débogage le menu de Déboguer .
L'assistant crée automatiquement une application qui a une barre de menus standard, une barre d'outils standard, une barre d'état standard, et une barre Outlook à gauche de la fenêtre d'une vue de Dossiers et une vue de Calendrier .
Pour ajouter le contrôle de liste de shell à la vue du document
Dans cette section, vous ajouterez une instance d' CMFCShellListCtrl à la vue que l'assistant a créé.Ouvrez le fichier d'en-tête de vue en double-cliquant sur MFCShellControlsView.h dans Explorateur de solutions.
Recherchez la directive d' #pragma once vers le haut du fichier d'en-tête.Immédiatement au-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.d'abord, localisez le commentaire suivant dans le fichier d'en-tête :
// Generated message map functions
Juste au-dessus de ce commentaire ajoutez le code suivant :
private: CMFCShellListCtrl m_wndList;
Assistant Application MFC A déjà créé un objet d' CMFCShellTreeCtrl dans la classe d' CMainFrame , mais il s'agit d'un membre protégé.Nous accéderons à cet objet ultérieurement.Par conséquent, créez un utilisateur pour lui maintenant.Ouvrez le fichier d'en-tête de MainFrm.h en double-cliquant dessus dans Explorateur de solutions.localisez le commentaire suivant :
// Attributes
immédiatement sous lui, ajoutez la déclaration de méthode suivante :
public: CMFCShellTreeCtrl& GetShellTreeCtrl();
Ensuite, ouvrez le fichier source de MainFrm.cpp en double-cliquant dessus dans Explorateur de solutions.en bas de ce fichier, ajoutez la définition de méthode suivante :
CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl() { return m_wndTree; }
Maintenant que nous mettons à jour la classe d' CMFCShellControlsView pour gérer le message windows pour WM_CREATE .Ouvrez le fichier d'en-tête de MFCShellControlsView.h et cliquez sur cette ligne de code :
class CMFCShellControlsView : public CView
ensuite, dans la fenêtre de Propriétés , cliquez sur l'icône de Messages .Faites défiler jusqu'à ce que vous trouviez le message d' WM_CREATE .Pour supprimer de la liste vers le bas en regard de WM_CREATE, **<Add> *** OnCreate *****sélectionnez.Cela crée un gestionnaire de messages pour nous et met automatiquement à jour la table des messages MFC.
dans la méthode d' OnCreate nous créerons maintenant notre objet d' CMFCShellListCtrl .Recherchez la définition de méthode d' OnCreate dans le fichier source de MFCShellControlsView.cpp, puis 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; }
Répétez l'étape précédente mais du message d' WM_SIZE .Cela entraîne l'affichage d'applications d'être redessinée chaque fois qu'un utilisateur modifie la taille de la fenêtre d'application.Remplacez la définition de la méthode d' OnSize 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); }
La dernière étape consiste à connecter les objets d' CMFCShellTreeCtrl et d' CMFCShellListCtrl à l'aide de la méthode de CMFCShellTreeCtrl::SetRelatedList .Une fois que vous appelez cette méthode, CMFCShellListCtrl affiche automatiquement le contenu de l'élément sélectionné dans CMFCShellTreeCtrl.Nous ferons cela dans la méthode d' OnActivateView , qui est substituée de CView::OnActivateView.
dans le fichier d'en-tête de MFCShellControlsView.h, à l'intérieur de la déclaration de classe d' CMFCShellControlsView , ajoutez la déclaration de méthode suivante :
protected: virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);
Ensuite, ajoutez la définition de cette méthode au fichier source de 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 avons les méthodes d'appel d' CMainFrame classe, vous devez ajouter une directive d' #include en haut du fichier source de MFCShellControlsView.cpp :
#include "MainFrm.h"
Vérifiez que l'application a été créée avec succès en la générant et en l'exécutant.Pour générer l'application, dans le menu Générer la solutionchoisi de Générer .Si l'application est générée avec succès, exécutez -la en sélectionnant Démarrer le débogage le menu de Déboguer .
Vous devez maintenant voir les détails de l'élément sélectionné dans CMFCShellTreeCtrl dans le volet d'affichage.Lorsque vous cliquez sur un nœud dans CMFCShellTreeCtrl, CMFCShellListCtrl est automatiquement mis à jour.De même, si vous double-cliquez sur un dossier dans CMFCShellListCtrl, CMFCShellTreeCtrl doit être mis à jour automatiquement.
Cliquez avec le bouton droit sur un élément dans le contrôle d'arborescence ou dans le contrôle de liste.Notez que vous obtenez le même menu contextuel comme si vous utilisez le vrai Explorateur de fichiers.
Étapes suivantes
L'assistant a créé une barre Outlook et un volet de Dossiers et un volet de Calendrier .Il n'est probablement pas raisonnable d'avoir un volet de Calendrier dans une fenêtre d'explorateur.Par conséquent, supprimez ce volet maintenant.
CMFCShellListCtrl prend en charge des fichiers d'affichage dans différents modes, tels que Grandes icônes, Petites icônes, Liste, et Détails.Mettez à jour votre application d'implémenter ces fonctionnalités.indicateur : consultez l' Exemples Visual C++.