Exemplarische Vorgehensweise: Verwenden der neuen MFC-Shell-Steuerelemente

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

Vorbereitungsmaßnahmen

In dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass Sie Visual Studio installiert haben, um Allgemeine Entwicklungseinstellungen zu verwenden.Wenn Sie eine andere Entwicklungseinstellung verwenden, werden einige Visual Studio Fenster, die Sie in dieser exemplarischen Vorgehensweise verwenden, standardmäßig nicht angezeigt werden.

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

  1. Verwenden Sie MFC-Anwendungs-Assistent, um eine neue MFC-Anwendung zu erstellen.Um den Assistenten, vom Menü Datei ausgewähltes Neu ausführen, und Projekt auswählen.Das Dialogfeld wird angezeigt. Neues Projekt

  2. Im Dialogfeld Neues Projekt erweitern Sie den Knoten im Bereich Visual C++Projekttypen und wählen Sie MFC aus.Das im Bereich Vorlagen, wählen Sie MFC-Anwendung.Geben Sie einen Namen für das Projekt, z MFCShellControls und auf OK ein.MFC-Anwendungs-Assistent wird angezeigt.

  3. MFC-Anwendungs-Assistent im Dialogfeld auf Weiter.Der Bereich Anwendungstyp wird angezeigt.

  4. Klicken Sie im Bereich unter AnwendungstypAnwendungstyp, deaktivieren Sie die Option Dokumente im Registerkartenformat.Als Nächstes ausgewähltes Einfaches Dokument und ausgewähltes Unterstützung für die Dokument-/Ansichtarchitektur.Die Projektstil, Auswahl- Visual Studio und aus der Dropdownliste Visueller Stil und Farben ausgewähltes Office 2007 (Blaues Design).Lassen Sie alle anderen Optionen, wie sie sind.Weiter auf, um das Bereichs Verbunddokumente anzuzeigen.

  5. Klicken Sie im Bereich Verbunddokumente ausgewähltes Kein.Weiter auf, um das Bereichs Dokumentvorlagenzeichenfolgen anzuzeigen.

  6. Nehmen Sie keine Änderungen am Bereich Dokumentvorlagenzeichenfolgen vor.Weiter auf, um das Bereichs Datenbankunterstützung anzuzeigen.

  7. Klicken Sie im Bereich Datenbankunterstützung ausgewähltes Kein, da diese Anwendung keine Datenbank verwendet.Weiter auf, um das Bereichs Benutzeroberflächenfeatures anzuzeigen.

  8. Klicken Sie im Bereich Benutzeroberflächenfeatures überprüfen Sie, ob die Option Menü- und Symbolleiste verwenden.Lassen Sie alle anderen Optionen, wie sie sind.Weiter auf, um das Bereichs Erweiterte Features anzuzeigen.

  9. Klicken Sie im Bereich unter Erweiterte FeaturesErweiterte Features, wählen Sie nur ActiveX-Steuerelemente und Allgemeines Steuerelementmanifest aus.Die Erweiterte Framebereiche wählen Sie nur die Option Navigationsbereich.Dies bewirkt, dass der Assistent den Bereich auf der linken Seite des Fensters mit bereits eingebetteten CMFCShellTreeCtrl zu erstellen.Weiter auf, um das Bereichs Generierte Klassen anzuzeigen.

  10. Es werden keine Änderungen am Bereich Generierte Klassen vornehmen.Daher auf Fertig stellen, das neue MFC-Projekts zu erstellen.

  11. Überprüfen Sie, ob die Anwendung erfolgreich erstellt wurde, indem Sie sie erstellen und ausführen.Um die Anwendung, im Menü Build ausgewähltes Projektmappe erstellen erstellen.Wenn die Anwendung erfolgreich erstellt wird, die Anwendung aus, indem Sie Debuggen starten vom Menü Debuggen auswählen.

    Der erstellt automatisch eine Anwendung, die eine Standardmenüleiste, eine Standardsymbolleiste, eine Standardstatusleiste und eine Outlook-Leiste auf der linken Seite des Fensters mit einer Ansicht Ordner und einer Ansicht Kalender enthält.

Um das Shelllistensteuerelement der Dokumentenansicht hinzufügen

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

    Suchen Sie die #pragma once-Direktive oben der Headerdatei.Klicken Sie direkt unter sie fügen Sie diesen Code hinzu, um die Headerdatei für CMFCShellListCtrl einzuschließen:

    #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 über diesem Kommentar fügen Sie diesen Code hinzu:

    private:
        CMFCShellListCtrl m_wndList;
    
  2. MFC-Anwendungs-Assistent erstellte bereits ein CMFCShellTreeCtrl-Objekt in der CMainFrame-Klasse, aber es ist geschützter Member.Es greifen auf dieses Objekt später zu.Daher stellen Sie einen Accessor für sie jetzt erstellt.Öffnen Sie die MainFrm.h-Headerdatei, indem Sie in Projektmappen-Explorer doppelklicken.Suchen Sie den folgenden Kommentar:

    // Attributes
    

    Klicken Sie direkt unter dem, die folgende Methodendeklaration hinzu:

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    Als Nächstes öffnen Sie die MainFrm.cpp-Quelldatei, indem Sie in Projektmappen-Explorer doppelklicken.Am unteren Rand diese Datei fügen Sie die Definition der folgenden Methode hinzu:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
        return m_wndTree;
    }
    
  3. Jetzt aktualisieren wir die CMFCShellControlsView-Klasse, um die WM_CREATE Fenstermeldung zu bearbeiten.Öffnen Sie die MFCShellControlsView.h-Headerdatei und klicken Sie in dieser Codezeile:

    class CMFCShellControlsView : public CView
    

    Als Nächstes Eigenschaften im Fenster, klicken Sie auf das Symbol Meldungen.Führen Sie einen Bildlauf nach unten Sie die WM_CREATE Meldung suchen.Ziehen Sie aus der Dropdownliste neben WM_CREATE, wählen Sie <Add> OnCreate.Dies stellt einen Meldungshandler für uns erstellt und aktualisiert automatisch die MFC-Meldungszuordnung.

    In der OnCreate-Methode erstellen Sie jetzt das CMFCShellListCtrl-Objekt.Suchen Sie die OnCreate-Methodendefinition in der MFCShellControlsView.cpp-Quelldatei, und ersetzen Sie seine 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 jedoch für die WM_SIZE Meldung.Dadurch wird die Anwendungsansicht neu gezeichnet werden, wenn ein Benutzer die Größe des Anwendungsfensters ändert.Ersetzen Sie die Definition für die OnSize-Methode durch 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 CMFCShellListCtrl-Objekte herzustellen, indem Sie die CMFCShellTreeCtrl::SetRelatedList-Methode erstellt wird.Nachdem Sie diese Methode aufrufen, wird CMFCShellListCtrl automatisch den Inhalt des Elements an, das in CMFCShellTreeCtrl ausgewählt ist.Dazu OnActivateView in der Methode, die von CView::OnActivateView überschrieben wird.

    In der MFCShellControlsView.h-Headerdatei innerhalb der CMFCShellControlsView-Klassendeklaration, die folgende Methodendeklaration hinzu:

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

    Als Nächstes fügen Sie die Definition für diese Methode der MFCShellControlsView.cpp-Quelldatei 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 sind, Klasse Aufrufe von Methoden zum CMainFrame, müssen wir #include-Direktive am Anfang der MFCShellControlsView.cpp-Quelldatei 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, im Menü Build ausgewähltes Projektmappe erstellen erstellen.Wenn die Anwendung erfolgreich erstellt wird, führen Sie es durch Auswählen von Debuggen starten vom Menü Debuggen.

    Sie sollten die Details zum Element feststellen, das in CMFCShellTreeCtrl im Ansichtsbereich ausgewählt ist.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 auf ein beliebiges Element in der Strukturansicht oder im Listensteuerelement mit der rechten Maustaste.Beachten Sie, dass Sie das gleiche Kontextmenü abrufen, als ob Sie den tatsächlichen Datei-Explorer haben.

Nächste Schritte

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

  • CMFCShellListCtrl unterstützt Betrachtungsdateien in verschiedenen Modi, z Große Symbole, Kleine Symbole, Liste und Details.Aktualisieren Sie die Anwendung, diese Funktionalität zu implementieren.Hinweis: finden Sie unter Visual C++-Beispiele.

Siehe auch

Weitere Ressourcen

Exemplarische Vorgehensweisen (MFC)