Exemplarische Vorgehensweise: Verwenden der neuen MFC-Shell-Steuerelemente

In dieser exemplarischen Vorgehensweise erstellen Sie eine Anwendung, die 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. Um sie zu installieren, öffnen Sie die Visual Studio-Installer aus dem Windows Menü . 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 von allgemeinem Entwicklungs-Einstellungen 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 MFC-Anwendung mit dem 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. Klicken Sie 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 Projektformat Visual 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. Lassen Sie alle anderen Optionen unverändert.

    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 Projektformat Visual 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. Lassen Sie alle anderen Optionen unverändert.

    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 das Shell-Listensteuerelement der Dokumentenansicht hin

  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-Anweisung am oberen Rand der Headerdatei. Fügen Sie direkt darunter den folgenden Code hinzu, mit dem die Headerdatei für CMFCShellListCtrl eingeschlossen wird:

    #include <afxShellListCtrl.h>
    

    Fügen Sie nun eine Membervariable des Typs CMFCShellListCtrl hinzu. Suchen Sie zunächst 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 direkt darunter die folgende Methodendeklaration hinzu:

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

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

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. Jetzt aktualisieren wir die CMFCShellControlsView-Klasse, um die WM_CREATE-Fenstermeldung zu bearbeiten. Ö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 Quelldatei MFCShellControlsView.cpp, und ersetzen Sie die entsprechende Implementierung durch 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 nun für die WM_SIZE-Meldung. 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 Quelldatei "MFCShellControlsView.cpp" 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 Quelldatei "MFCShellControlsView.cpp" 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.

    Sie sollten nun die Details zum Element sehen, die im Ansichtsbereich CMFCShellTreeCtrl ausgewählt sind. Wenn Sie auf einen Knoten in CMFCShellTreeCtrl klicken, wird CMFCShellListCtrl automatisch aktualisiert. Wenn Sie auf einen Ordner in CMFCShellListCtrl doppelklicken, sollte 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 Explorer.

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 die Anwendung, um diese Funktionalität zu implementieren. Hinweis: Siehe Visual C++-Beispiele.

Siehe auch

Exemplarische Vorgehensweisen