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
Klicken Sie im Hauptmenü auf Datei>Neu>Projekt, um das Dialogfeld Neues Projekt erstellen zu öffnen.
Geben Sie im Suchfeld oben MFC ein, und wählen Sie dann in der Ergebnisliste die MFC-App aus.
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.
Klicken Sie auf die Schaltfläche Erstellen, um das Projekt zu erstellen.
Verwenden Sie nach der Anzeige des MFC-Anwendungs-Assistenten die folgenden Optionen:
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.
Wählen Sie im Bereich "Verbunddokumentunterstützung" "Keine" aus.
Nehmen Sie keine Änderungen am Bereich "Dokumentvorlageneigenschaften " vor.
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.
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.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
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.
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:
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.
Wählen Sie im Bereich "Verbunddokumentunterstützung" "Keine" aus.
Nehmen Sie keine Änderungen am Bereich 'Dokumentvorlagenzeichenfolgen ' vor.
Wählen Sie im Bereich "Datenbankunterstützung" (Visual Studio 2015 und älter) "Keine" aus, da die Anwendung keine Datenbank verwendet.
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.
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.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
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ürCMFCShellListCtrl
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;
Der MFC-Anwendungs-Assistent hat bereits ein
CMFCShellTreeCtrl
Objekt in derCMainFrame
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; }
Jetzt aktualisieren wir die
CMFCShellControlsView
-Klasse, um dieWM_CREATE
-Fenstermeldung zu bearbeiten. Öffnen Sie das Fenster "Kursansicht" , und wählen Sie dieCMFCShellControlsView
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 nebenWM_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 unserCMFCShellListCtrl
Objekt. Suchen Sie dieOnCreate
-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; }
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 dieOnSize
-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); }
Der letzte Schritt besteht darin, die
CMFCShellTreeCtrl
Und-ObjekteCMFCShellListCtrl
mithilfe der CMFCShellTreeCtrl::SetRelatedList-Methode zu verbinden. Nachdem Sie aufgerufen habenCMFCShellTreeCtrl::SetRelatedList
, wird derCMFCShellListCtrl
Inhalt des elements, das in derCMFCShellTreeCtrl
Datei ausgewählt ist, automatisch angezeigt. Wir verbinden die Objekte in derOnActivateView
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"
Ü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 inCMFCShellTreeCtrl
klicken, wirdCMFCShellListCtrl
automatisch aktualisiert. Wenn Sie auf einen Ordner inCMFCShellListCtrl
doppelklicken, sollteCMFCShellTreeCtrl
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.