Freigeben über


Exemplarische Vorgehensweise: Verwenden der neuen MFC-Shellsteuerelemente

In dieser exemplarischen Vorgehensweise erstellen Sie eine Anwendung, die dem Datei-Explorer ähnelt. Sie erstellen ein Fenster mit zwei Bereichen. Der linke Bereich enthält ein CMFCShellTreeCtrl -Objekt, das Ihren Desktop in einer hierarchischen Ansicht anzeigt. Der rechte Bereich enthält eine CMFCShellListCtrl , die die Dateien im Ordner anzeigt, der im linken Bereich ausgewählt ist.

Voraussetzungen

  • In Visual Studio 2017 und höher ist die MFC-Unterstützung eine optionale Komponente. Öffnen Sie zum Installieren das Visual Studio Installer über das Windows-Startmenü. Suchen Sie die Version von Visual Studio, die Sie verwenden, und wählen Sie die Schaltfläche "Ändern " aus. Stellen Sie sicher, dass die Desktopentwicklung mit C++ -Kachel aktiviert ist. Aktivieren Sie unter "Optionale Komponenten" die Schaltfläche "MFC-Unterstützung ".

  • In dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass Sie Visual Studio für die Verwendung allgemeiner Entwicklungseinstellungen eingerichtet haben. Wenn Sie eine andere Entwicklungseinstellung verwenden, werden einige Visual Studio-Fenster, die in dieser exemplarischen Vorgehensweise verwendet werden, möglicherweise nicht standardmäßig angezeigt.

So erstellen Sie eine neue MFC-Anwendung mithilfe des MFC-Anwendungs-Assistenten

Diese Schritte variieren je nachdem, welche Version von Visual Studio Sie verwenden. Um die Dokumentation für Ihre bevorzugte Version von Visual Studio anzuzeigen, verwenden Sie das Auswahlsteuerelement Version. Es befindet sich am Anfang des Inhaltsverzeichnisses auf dieser Seite.

So erstellen Sie ein MFC-Projekt in Visual Studio

  1. Klicken Sie im Hauptmenü auf Datei>Neu>Projekt, um das Dialogfeld Neues Projekt erstellen zu öffnen.

  2. Geben Sie im Suchfeld oben MFC ein, und wählen Sie dann in der Ergebnisliste die MFC-App aus.

  3. Klicke auf Weiter. Geben Sie auf der nächsten Seite einen Namen für das Projekt ein, und geben Sie bei Bedarf den Projektspeicherort an.

  4. Klicken Sie auf die Schaltfläche Erstellen, um das Projekt zu erstellen.

    Verwenden Sie nach der Anzeige des MFC-Anwendungs-Assistenten die folgenden Optionen:

    1. Wählen Sie auf der linken Seite den Anwendungstyp aus. Wählen Sie dann single document and select Document/View architecture support. Wählen Sie unter ProjektformatVisual Studio aus, und wählen Sie in der Dropdownliste "Visuelle Formatvorlage und Farben" Office 2007 (Blau) aus.

    2. Wählen Sie im Bereich "Verbunddokumentunterstützung" "Keine" aus.

    3. Nehmen Sie keine Änderungen am Bereich " Dokumentvorlageneigenschaften " vor.

    4. Stellen Sie im Bereich "Benutzeroberflächenfeatures " sicher, dass die Option " Menüleiste und Symbolleiste verwenden " ausgewählt ist. Behalten Sie alle anderen Optionen bei.

    5. Wählen Sie im Bereich "Erweiterte Features " die Option "ActiveX", " Allgemeines Steuerelementmanifest" und " Navigationsbereich" aus . Lassen Sie alles andere so wie es ist. Die Option "Navigationsbereich " bewirkt, dass der Assistent den Bereich links neben dem Fenster mit einem CMFCShellTreeCtrl bereits eingebetteten Fenster erstellt.

    6. Wir werden keine Änderungen am Bereich "Generierte Klassen " vornehmen. Klicken Sie daher auf "Fertig stellen ", um Ihr neues MFC-Projekt zu erstellen.

So erstellen Sie ein MFC-Projekt in Visual Studio 2017 oder einer früheren Version

  1. Verwenden Sie den MFC-Anwendungs-Assistenten , um eine neue MFC-Anwendung zu erstellen. Um den Assistenten auszuführen, wählen Sie im Menü "Datei" "Neu" und dann "Projekt" aus. Das Dialogfeld "Neues Projekt " wird angezeigt.

  2. Erweitern Sie im Dialogfeld "Neues Projekt " den Visual C++ -Knoten im Bereich "Projekttypen ", und wählen Sie "MFC" aus. Wählen Sie dann im Bereich "Vorlagen " die Option "MFC-Anwendung" aus. Geben Sie einen Namen für das Projekt ein, z MFCShellControls . B. und klicken Sie auf "OK".

    Verwenden Sie nach der Anzeige des MFC-Anwendungs-Assistenten die folgenden Optionen:

    1. Deaktivieren Sie im Bereich "Anwendungstyp " unter "Anwendungstyp" die Option " Dokumente im Registerkartenformat ". Wählen Sie als Nächstes "Einzelnes Dokument " aus, und wählen Sie "Dokument/Ansichtsarchitektur".Next, select Single document and select Document/View architecture support. Wählen Sie unter ProjektformatVisual Studio aus, und wählen Sie in der Dropdownliste "Visuelle Formatvorlage und Farben" Office 2007 (Blau) aus.

    2. Wählen Sie im Bereich "Verbunddokumentunterstützung" "Keine" aus.

    3. Nehmen Sie keine Änderungen am Bereich ' Dokumentvorlagenzeichenfolgen ' vor.

    4. Wählen Sie im Bereich "Datenbankunterstützung " (Visual Studio 2015 und älter) "Keine" aus, da die Anwendung keine Datenbank verwendet.

    5. Stellen Sie im Bereich "Benutzeroberflächenfeatures " sicher, dass die Option " Menüleiste und Symbolleiste verwenden " ausgewählt ist. Behalten Sie alle anderen Optionen bei.

    6. Wählen Sie im Bereich "Erweiterte Features" unter "Erweiterte Features" nur ActiveX-Steuerelemente und das allgemeine Steuerelementmanifest aus. Wählen Sie unter erweiterten Framebereichen nur die Option "Navigationsbereich" aus . Er bewirkt, dass der Assistent den Bereich links neben dem Fenster mit einem CMFCShellTreeCtrl bereits eingebetteten Fenster erstellt.

    7. Wir werden keine Änderungen am Bereich "Generierte Klassen " vornehmen. Klicken Sie daher auf "Fertig stellen ", um Ihr neues MFC-Projekt zu erstellen.

Überprüfen Sie, ob die Anwendung erfolgreich erstellt wurde, indem Sie sie erstellen und ausführen. Um die Anwendung zu erstellen, wählen Sie im Menü " Erstellen " die Option "Projektmappe erstellen" aus. Wenn die Anwendung erfolgreich erstellt wird, führen Sie die Anwendung aus, indem Sie im Menü "Debuggen" die Option "Debuggen starten" auswählen.

Der Assistent erstellt automatisch eine Anwendung mit einer Standardmenüleiste, einer Standardsymbolleiste, einer Standardstatusleiste und einer Outlook-Leiste links neben dem Fenster mit einer Ordneransicht und einer Kalenderansicht .

So fügen Sie der Dokumentansicht das Shelllistensteuerelement hinzu

  1. In diesem Abschnitt fügen Sie eine Instanz der CMFCShellListCtrl Ansicht hinzu, die der Assistent erstellt hat. Öffnen Sie die Ansichtsheaderdatei, indem Sie im Projektmappen-Explorer auf MFCShellControlsView.h doppelklicken.

    Suchen Sie die #pragma once Direktive am oberen Rand der Headerdatei. Fügen Sie direkt darunter diesen Code hinzu, um die Headerdatei für CMFCShellListCtrlFolgendes einzuschließen:

    #include <afxShellListCtrl.h>
    

    Fügen Sie nun eine Membervariable vom Typ CMFCShellListCtrlhinzu. Suchen Sie zuerst den folgenden Kommentar in der Headerdatei:

    // Generated message map functions
    

    Fügen Sie direkt oberhalb dieses Kommentars diesen Code hinzu:

    private:
    CMFCShellListCtrl m_wndList;
    
  2. Der MFC-Anwendungs-Assistent hat bereits ein CMFCShellTreeCtrl Objekt in der CMainFrame Klasse erstellt, aber es ist ein geschütztes Element. Wir greifen später auf das Objekt zu, erstellen Sie also jetzt einen Accessor dafür. Öffnen Sie die MainFrm.h-Headerdatei, indem Sie im Projektmappen-Explorer darauf doppelklicken. Suchen Sie den folgenden Kommentar:

    // Attributes
    

    Fügen Sie unmittelbar danach die folgende Methodendeklaration hinzu:

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    Öffnen Sie als Nächstes die MainFrm.cpp Quelldatei, indem Sie im Projektmappen-Explorer darauf doppelklicken. Fügen Sie unten in dieser Datei die folgende Methodendefinition hinzu:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. Jetzt aktualisieren wir die CMFCShellControlsView Klasse, um die WM_CREATE Windows-Nachricht zu behandeln. Öffnen Sie das Fenster "Kursansicht" , und wählen Sie die CMFCShellControlsView Klasse aus. Klicken Sie mit der rechten Maustaste, und wählen Sie Eigenschaften aus.

    Klicken Sie als Nächstes im Kurs-Assistenten auf die Registerkarte "Nachrichten ". Scrollen Sie nach unten, bis Sie die WM_CREATE Nachricht gefunden haben. Wählen Sie in der Dropdownliste neben WM_CREATE"OnCreate hinzufügen>"< aus. Der Befehl erstellt einen Nachrichtenhandler für uns und aktualisiert automatisch die MFC-Nachrichtenzuordnung.

    In der OnCreate Methode erstellen wir nun unser CMFCShellListCtrl Objekt. Suchen Sie die OnCreate Methodendefinition in der MFCShellControlsView.cpp Quelldatei, und ersetzen Sie die Implementierung durch den folgenden Code:

    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. Wiederholen Sie den vorherigen Schritt, aber für die WM_SIZE Nachricht. Die Anwendungsansicht wird dadurch neu gezeichnet, wenn ein Benutzer die Größe des Anwendungsfensters ändert. Ersetzen Sie die Definition für die OnSize Methode durch den folgenden Code:

    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. Der letzte Schritt besteht darin, die CMFCShellTreeCtrl Und-Objekte CMFCShellListCtrl mithilfe der CMFCShellTreeCtrl::SetRelatedList-Methode zu verbinden. Nachdem Sie aufgerufen haben CMFCShellTreeCtrl::SetRelatedList, wird der CMFCShellListCtrl Inhalt des elements, das in der CMFCShellTreeCtrlDatei ausgewählt ist, automatisch angezeigt. Wir verbinden die Objekte in der OnActivateView Methode, die von CView::OnActivateView überschrieben werden.

    Fügen Sie in der Headerdatei "MFCShellControlsView.h" innerhalb der CMFCShellControlsView Klassendeklaration die folgende Methodendeklaration hinzu:

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

    Fügen Sie als Nächstes der MFCShellControlsView.cpp Quelldatei die Definition für die Methode hinzu:

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

    Da wir Methoden aus der CMainFrame Klasse aufrufen, müssen wir oben in der MFCShellControlsView.cpp Quelldatei eine #include Direktive hinzufügen:

    #include "MainFrm.h"
    
  6. Überprüfen Sie, ob die Anwendung erfolgreich erstellt wurde, indem Sie sie erstellen und ausführen. Um die Anwendung zu erstellen, wählen Sie im Menü " Erstellen " die Option "Projektmappe erstellen" aus. Wenn die Anwendung erfolgreich erstellt wird, führen Sie sie aus, indem Sie im Menü "Debuggen" die Option "Debuggen starten" auswählen.

    Nun sollten die Details für das im CMFCShellTreeCtrl Ansichtsbereich ausgewählte Element angezeigt werden. Wenn Sie auf einen Knoten im CMFCShellTreeCtrlKnoten klicken, wird dies CMFCShellListCtrl automatisch aktualisiert. Ebenso, wenn Sie auf einen Ordner im CMFCShellListCtrlOrdner doppelklicken, sollte dies CMFCShellTreeCtrl automatisch aktualisiert werden.

    Klicken Sie mit der rechten Maustaste auf ein beliebiges Element im Struktursteuerelement oder im Listensteuerelement. Sie erhalten dasselbe Kontextmenü wie bei Verwendung des echten Datei-Explorers.

Nächste Schritte

  • Der Assistent hat eine Outlook-Leiste mit einem Ordnerbereich und einem Kalenderbereich erstellt. Es ist wahrscheinlich nicht sinnvoll, einen Kalenderbereich in einem Explorer-Fenster zu haben, also entfernen Sie diesen Bereich jetzt.

  • Dies CMFCShellListCtrl unterstützt das Anzeigen von Dateien in verschiedenen Modi, z. B. große Symbole, kleine Symbole, Liste und Details. Aktualisieren Sie Ihre Anwendung, um diese Funktionalität zu implementieren. Hinweis: Siehe Visual C++-Beispiele.

Siehe auch

Exemplarische Vorgehensweisen