Implementieren einer Ordneransicht
Windows Shell stellt eine Standardimplementierung der Ordneransicht bereit, umgangssprachlich als DefView bezeichnet, sodass Sie einen Großteil der Arbeit bei der Implementierung Ihrer eigenen Namespaceerweiterung vermeiden können. Da einige Ansichtsfeatures nicht über benutzerdefinierte Ansichten erreicht werden können, wird häufig empfohlen, anstelle einer benutzerdefinierten Ansicht das Standardobjekt der Systemordneransicht zu verwenden. Weitere Informationen finden Sie unter SHCreateShellFolderView. Im weiteren Verlauf dieses Themas wird die Implementierung einer benutzerdefinierten Ordneransicht erläutert, die neuere Ansichtsfeatures nicht unterstützen kann.
Im Gegensatz zur Strukturansicht verwaltet Windows Explorer den Inhalt einer Ordneransicht nicht. Stattdessen hostet das Ordneransichtsfenster ein untergeordnetes Fenster, das vom Ordnerobjekt bereitgestellt wird. Das Ordnerobjekt ist für die Erstellung eines Ordneransichtsobjekts verantwortlich, um den Inhalt des Ordners im untergeordneten Fenster anzuzeigen.
Der Schlüssel zum Implementieren eines Ordneransichtsobjekts ist die IShellView-Schnittstelle . Diese Schnittstelle wird von Windows Explorer verwendet, um mit dem Ordneransichtsobjekt zu kommunizieren. Vor dem Anzeigen einer Ordneransicht ruft Windows Explorer die IShellFolder::CreateViewObject-Methode des Ordnerobjekts auf, wobei riid auf IID_IShellView festgelegt ist. Erstellen Sie ein Ordneransichtsobjekt, und geben Sie dessen IShellView-Schnittstelle zurück. Das Ordneransichtsobjekt muss dann ein untergeordnetes Fenster des Ordneransichtsfensters erstellen und das untergeordnete Fenster verwenden, um Informationen zum Inhalt des Ordners anzuzeigen.
Neben der Steuerung der Anzeige von Daten können Erweiterungen auch eine Reihe von Features von Windows Explorer anpassen. Für instance kann eine Erweiterung der Symbolleiste oder Menüleiste Elemente hinzufügen oder Informationen auf der status leiste anzeigen.
- Das Ordneransichtsobjekt
- Initialisieren des Folder View-Objekts
- Anzeigen der Ordneransicht
- Implementieren von IShellView
- Verwenden von IShellBrowser für die Kommunikation mit Windows Explorer
Das Ordneransichtsobjekt
Ein Ordneransichtsobjekt ist ein COM-Objekt (Component Object Model), das eine IShellView-Schnittstelle verfügbar macht. Dieses Objekt ist für Folgendes zuständig:
- Erstellen sie ein untergeordnetes Fenster des Ordneransichtsfensters, und verwenden Sie es, um den Inhalt des Ordners anzuzeigen.
- Behandeln der Kommunikation mit Windows Explorer.
- Hinzufügen von ordnerspezifischen Befehlen zur Windows-Explorer Menüleiste und Symbolleiste und Behandeln dieser Befehle, wenn sie ausgewählt sind.
- Verwalten von Benutzerinteraktionen mit dem Ordneransichtsfenster, z. B. Anzeigen von Kontextmenüs oder Behandeln von Drag-and-Drop-Vorgängen.
In diesem Dokument werden die ersten drei Themen erläutert. Da die Benutzerinteraktion mit der Ordneransicht innerhalb Ihres untergeordneten Fensters erfolgt, ist Ihr Ordneransichtsobjekt für die Verarbeitung wie für jedes andere Fenster verantwortlich.
Windows Explorer fordert ein Ordneransichtsobjekt an, indem IShellFolder::CreateViewObject ihres Ordnerobjekts aufgerufen wird, wobei riid auf IID_IShellView festgelegt ist. Das Verfahren zum Erstellen einer Ordneransicht lautet:
- Das Ordnerobjekt erstellt eine neue instance des Ordneransichtsobjekts und gibt einen Zeiger auf die IShellView-Schnittstelle zurück.
- Windows Explorer initialisiert das Ordneransichtsobjekt durch Aufrufen der IShellView::CreateViewWindow-Methode. Erstellen Sie ein untergeordnetes Fenster des Ordneransichtsfensters, und geben Sie das Handle an Windows Explorer zurück.
- Das Ordneransichtsobjekt verwendet die Windows Explorer IShellBrowser-Schnittstelle, um die Windows Explorer Symbolleiste, die Menüleiste und die status leiste anzupassen.
- Das Ordneransichtsobjekt zeigt den Inhalt des Ordners im untergeordneten Fenster an.
- Das Ordneransichtsobjekt verarbeitet die Benutzerinteraktion mit der Ordneransicht und allen ordnerspezifischen Symbolleisten- oder Menüleistenelementen.
Initialisieren des Folder View-Objekts
Windows Explorer initialisiert das Ordneransichtsobjekt durch Aufrufen der IShellView::CreateViewWindow-Methode. Die Parameter der Methode stellen dem Ordneransichtsobjekt die Informationen bereit, die zum Erstellen des untergeordneten Fensters benötigt werden, das zum Anzeigen des Ordnerinhalts verwendet wird:
- Ein Zeiger auf die IShellView-Schnittstelle des vorherigen Ordneransichtsobjekts. Dieser Parameter kann auf NULL festgelegt werden.
- Eine FOLDERSETTINGS-Struktur , die die Einstellungen der vorherigen Ordneransicht enthält.
- Ein Zeiger auf die Windows Explorer IShellBrowser-Schnittstelle.
- Eine RECT-Struktur mit den Dimensionen des Ordneransichtsfensters.
Die IShellView::CreateViewWindow-Methode wird aufgerufen, bevor das vorherige Ordneransichtsobjekt zerstört wird. Mit dem IShellView-Schnittstellenzeiger können Sie also mit dem vorherigen Ordneransichtsobjekt kommunizieren. Diese Schnittstelle ist in erster Linie nützlich, wenn der vorherige Ordner zu Ihrer Erweiterung gehört und das gleiche Anzeigeschema verwendet hat. Wenn dies der Grund ist, können Sie mit dem vorherigen Ordneransichtsobjekt kommunizieren, z. B. zum Austauschen privater Einstellungen.
Eine einfache Möglichkeit, zu bestimmen, ob der IShellView-Zeiger zu Ihrer Erweiterung gehört, besteht darin, dass alle Ihre Ordneransichtsobjekte eine private Schnittstelle verfügbar machen. Rufen Sie IShellView::QueryInterface auf, um die private Schnittstelle anzufordern, und untersuchen Sie den Rückgabewert, um zu ermitteln, ob das Ordneransichtsobjekt eines von Ihnen ist. Anschließend können Sie eine private Methode auf dieser Schnittstelle verwenden, um Informationen auszutauschen.
Die FOLDERSETTINGS-Struktur enthält die Anzeigeeinstellungen der vorherigen Ordneransicht. Die primäre Einstellung ist der Anzeigemodus: großes Symbol, kleines Symbol, Liste oder Details. Es gibt auch ein Flag, das die Einstellungen einer Vielzahl von Anzeigeoptionen enthält, z. B. ob die Ansicht links ausgerichtet sein soll. Ihre Ordneranzeige sollte diesen Einstellungen soweit wie möglich folgen, um Benutzern eine konsistente Benutzeroberfläche zu bieten, wenn sie von einem Ordner zu einem anderen wechseln. Sie sollten diese Struktur speichern und aktualisieren, wenn sich die Einstellungen ändern. Windows Explorer ruft IShellView::GetCurrentInfo auf, um den neuesten Wert dieser Struktur zu erhalten, bevor die nächste Ordneransicht geöffnet wird.
Die IShellBrowser-Schnittstelle wird von Windows Explorer verfügbar gemacht. Diese Schnittstelle ist ein Begleiter zu IShellView und ermöglicht es einem Ordneransichtsobjekt, mit Windows Explorer zu kommunizieren. Es gibt keine andere Möglichkeit, diesen Schnittstellenzeiger abzurufen, sodass das Ordneransichtsobjekt ihn zur späteren Verwendung speichern sollte. Insbesondere müssen Sie IShellBrowser::GetWindow aufrufen, um das Ansichtsfenster des übergeordneten Ordners abzurufen, das Sie zum Erstellen Ihres untergeordneten Fensters verwenden. Beachten Sie, dass die IShellBrowser::GetWindow-Methode nicht in der IShellBrowser-Dokumentation enthalten ist, da sie von IOleWindow geerbt wird. Denken Sie nach dem Speichern des Schnittstellenzeigers daran, IShellBrowser::AddRef aufzurufen, um die Verweisanzahl der Schnittstelle zu erhöhen. Wenn Sie die Schnittstelle nicht mehr benötigen, rufen Sie IShellBrowser::Release auf.
So erstellen Sie ihr untergeordnetes Fenster:
- Untersuchen Sie die FOLDERSETTINGS- und RECT-Strukturen .
- Rufen Sie bei Bedarf private Einstellungen aus dem vorherigen Ordneransichtsobjekt ab.
- Rufen Sie IShellBrowser::GetWindow auf, um das Ansichtsfenster des übergeordneten Ordners abzurufen.
- Erstellen Sie ein untergeordnetes Element des Ordneransichtsfensters, das Sie im vorherigen Schritt abgerufen haben, und geben Sie es an Windows Explorer zurück.
Anzeigen der Ordneransicht
Nachdem Sie das untergeordnete Fenster erstellt und an Windows Explorer zurückgegeben haben, können Sie den Inhalt des Ordners anzeigen. In der Regel zeigen Erweiterungen ihre Informationen an, indem das untergeordnete Fenster entweder ein Listenansicht-Steuerelement oder ein WebBrowser-Steuerelement hosten soll. Mit dem Listenansichtssteuerelement können Sie die klassische Ansicht von Windows Explorer replizieren. Mit dem WebBrowser-Steuerelement können Sie ein Dynamisches HTML-Dokument (DHTML) verwenden, um Ihre Informationen anzuzeigen, ähnlich wie in der Windows Explorer Webansicht. Weitere Informationen finden Sie in der Dokumentation dieser Steuerelemente.
Das Ordneransichtsfenster ist immer vorhanden, auch wenn es keinen Fokus hat. Sie sollten daher drei Zustände für Ihr Kinderfenster beibehalten:
- Aktiviert mit Fokus. Die Ordneransicht wurde erstellt und hat den Fokus. Legen Sie die Menüleisten- oder Symbolleistenelemente fest, die für einen fokussierten Zustand geeignet sind.
- Ohne Fokus aktiviert. Die Ordneransicht wurde erstellt und ist aktiv, hat aber keinen Fokus. Legen Sie die Menüleisten- oder Symbolleistenelemente fest, die für einen nicht fokussierten Zustand geeignet sind. Lassen Sie alle Elemente aus, die für die Auswahl von Elementen in der Ordneransicht gelten.
- Deaktiviert. Die Ordneransicht wird gerade zerstört. Entfernen Sie alle ordnerspezifischen Menüelemente.
Windows Explorer benachrichtigt Das Ordneransichtsobjekt, wenn sich der Fensterzustand ändert, indem IShellView::UIActivate aufgerufen wird. Das Ordneransichtsobjekt wiederum sollte Windows Explorer benachrichtigen, wenn ein Benutzer das Ordneransichtsfenster durch Aufrufen von IShellBrowser::OnViewWindowActive aktiviert. Weitere Informationen zu dieser Schnittstelle finden Sie unter Verwenden von IShellBrowser für die Kommunikation mit Windows Explorer.
Während die Ordneransicht aktiv ist, müssen Sie alle Windows-Nachrichten verarbeiten, z. B. WM_SIZE, die zu Ihrem untergeordneten Fenster gehören. Ihre Fensterprozedur empfängt auch WM_COMMAND Meldungen für alle Elemente, die Sie der Menüleiste oder Symbolleiste von Windows Explorer hinzugefügt haben.
Nach dem Erstellen der Ordneransicht ruft Windows Explorer die IShellView-Schnittstelle des Ordneransichtsobjekts auf, um eine Vielzahl von Informationen zu übergeben. Das Objekt muss seine Anzeige entsprechend ändern. Wenn die Ordneransicht zerstört wird, benachrichtigt Windows Explorer das Ordneransichtsobjekt durch Aufrufen der IShellView::D estroyViewWindow-Methode.
Implementieren von IShellView
Nachdem das Ordnerobjekt erstellt wurde, ruft Windows Explorer verschiedene IShellView-Methoden auf, um Informationen anzufordern oder das Objekt über eine Änderung des Zustands von Windows Explorer zu benachrichtigen. In diesem Abschnitt wird beschrieben, wie Sie diese IShellView-Methoden implementieren. Die restlichen Methoden werden für speziellere Zwecke verwendet, z. B. das Dialogfeld Datei öffnen allgemein. Weitere Informationen finden Sie in der IShellView-Dokumentation .
AddPropertySheetPages
Wenn ein Benutzer im Menü Windows Explorer Toolsordneroptionen auswählt, wird ein Eigenschaftenblatt angezeigt, das es dem Benutzer ermöglicht, die Ordneroptionen zu ändern. Windows Explorer ruft die IShellView::AddPropertySheetPages-Methode Ihres Ordneransichtsobjekts auf, damit Sie diesem Eigenschaftenblatt eine Seite hinzufügen können.
Windows Explorer übergibt einen Zeiger auf eine AddPropSheetPageProc-Rückruffunktion im lpfn-Parameter von IShellView::AddPropertySheetPages. Rufen Sie CreatePropertySheetPage auf, um die Seite zu erstellen, und rufen Sie dann AddPropSheetPageProc auf, um sie dem Eigenschaftenblatt hinzuzufügen. Weitere Informationen zum Umgang mit Eigenschaftenblättern finden Sie unter Eigenschaftenblätter.
GetCurrentInfo
Wenn der Benutzer von einem Ordner zu einem anderen wechselt, versucht Windows Explorer, eine ähnliche Ordneransicht beizubehalten. Wenn für instance in der vorherigen Ordneransicht große Symbole angezeigt wurden, sollte die nächste ebenfalls angezeigt werden. Wenn Windows Explorer IShellView::CreateViewWindow aufruft, um Ihr Ordneransichtsobjekt zu initialisieren, empfängt die -Methode eine FOLDERSETTINGS-Struktur. Diese Struktur enthält Informationen, mit denen Sie ihre Ordneransicht konsistent mit der vorherigen Ordneransicht anzeigen können.
Um sicherzustellen, dass die nächste Ansicht mit der aktuellen Ansicht konsistent ist, speichern Sie die FOLDERSETTINGS-Struktur . Wenn sich die Ansicht ändert, aktualisieren Sie für instance von großen zu kleinen Symbolen die Struktur entsprechend. Vor dem Wechseln der Ansichten ruft Windows Explorer IShellView::GetCurrentInfo auf, um die aktuellen FOLDERSETTINGS-Werte anzufordern, sie an das nächste Ordneransichtsobjekt zu übergeben.
Aktualisieren
Der Benutzer kann sicherstellen, dass die Ordneransicht den aktuellen Status des Ordners widerspiegelt, indem er im Menü Ansicht auf Aktualisieren klicken oder die F5-Taste drückt. Wenn der Benutzer dies tut, ruft Windows Explorer die IShellView::Refresh-Methode auf. Das Ordneransichtsobjekt sollte die Anzeige der Ordneransicht sofort aktualisieren.
Saveviewstate
Windows Explorer ruft die IShellView::SaveViewState-Methode auf, um das Ordneransichtsobjekt zum Speichern des Ansichtszustands aufzufordern. Sie können den Zustand dann wiederherstellen, wenn der Ordner das nächste Mal angezeigt wird. Die bevorzugte Möglichkeit zum Speichern eines Ansichtszustands besteht darin, die IShellBrowser::GetViewStateStream-Methode aufzurufen. Diese Methode gibt eine IStream-Schnittstelle zurück, die ihr Ordneransichtsobjekt zum Speichern des Zustands verwenden kann. Wenn Sie eine andere Ordneransicht erstellen, können Sie dieselbe IShellBrowser::GetViewStateStream-Methode aufrufen, um einen IStream-Zeiger abzurufen, mit dem Sie die einstellungen lesen können, die in vorherigen Ordneransichten gespeichert wurden.
TranslateAcelerator
Wenn der Benutzer eine Tastenkombination drückt, übergibt Windows Explorer die Nachricht an das Ordneransichtsobjekt, indem IShellView::TranslateAccelerator aufgerufen wird. Geben Sie S_FALSE zurück, damit Windows die Nachricht Explorer verarbeiten. Wenn das Ordneransichtsobjekt die Nachricht verarbeitet hat, geben Sie S_OK zurück.
Wenn das Ordneransichtsfenster den Fokus hat, ruft Windows Explorer IShellView::TranslateAccelerator auf, bevor die Nachricht verarbeitet wird. Da die meisten Nachrichten in der Regel Windows Explorer Menüleisten- oder Symbolleistenbefehlen zugeordnet sind, sollte Ihr Ordneransichtsobjekt normalerweise S_FALSE zurückgeben. Windows Explorer kann die Nachricht dann normal verarbeiten. Geben Sie S_OK nur zurück, wenn die Nachricht ordnerspezifisch ist und Windows Explorer keine weitere Verarbeitung durchführen soll. Wenn die Ordneransicht keinen Fokus hat, verarbeitet Windows Explorer die Nachricht zuerst. IShellBrowser::TranslateAcceleratorSB wird nur aufgerufen, wenn die Nachricht nicht verarbeitet wird.
Verwenden von IShellBrowser für die Kommunikation mit Windows Explorer
Die IShellBrowser-Schnittstelle wird vom Ordneransichtsobjekt für die Kommunikation mit Windows Explorer für eine Vielzahl von Zwecken verwendet, z. B.:
- Ändern der Windows-Explorer-Menüleiste
- Ändern der Windows-Explorer-Symbolleiste
- Ändern der Windows-Explorer-Statusleiste
- Speichern von ansichtsspezifischen Informationen
Ändern der Windows-Explorer-Menüleiste
Die Windows Explorer Menüleiste ermöglicht es dem Benutzer, eine Vielzahl von Befehlen zu starten. Standardmäßig unterstützt die Menüleiste nur Befehle, die für Windows-Explorer spezifisch sind. Die zugehörigen WM_COMMAND Nachrichten werden von Windows Explorer verarbeitet und nicht an Das Ordneransichtsobjekt übergeben. Sie können die Menüleiste jedoch ändern, um ein oder mehrere ordnerspezifische Menüelemente in IShellBrowser einzuschließen. Windows Explorer übergibt die zugeordneten WM_COMMAND Meldungen dieser Elemente zur Verarbeitung an die Fensterprozedur Ihres Ordnerobjekts. Sie können auch alle Standardbefehle entfernen oder deaktivieren, die nicht für Ihre Anwendung gelten.
Ordneransichtsobjekte ändern in der Regel die Menüleiste, bevor die Ordneransicht zuerst angezeigt wird. Sie müssen die Menüleiste in ihren ursprünglichen Zustand zurücksetzen, wenn die Ordneransicht zerstört wird. Möglicherweise müssen Sie auch die Menüleiste jedes Mal ändern, wenn ihre Ordneransicht den Fokus gewinnt oder verliert.
Da Windows Explorer IShellView::UIActivate jedes Mal aufruft, wenn sich der Zustand des Ordneransichtsfensters ändert, ist die Menüleistenänderung normalerweise in der Implementierung dieser Methode enthalten. Das grundlegende Verfahren zum Ändern der Windows-Explorer-Menüleiste lautet:
- Rufen Sie CreateMenu auf, um ein Menühandle zu erstellen.
- Übergeben Sie dieses Menühandle an Windows Explorer, indem Sie IShellBrowser::InsertMenusSB aufrufen. Windows Explorer füllt die Menüinformationen aus.
- Ändern Sie das Menü nach Bedarf.
- Rufen Sie IShellBrowser::SetMenuSB auf, damit Windows Explorer die geänderte Menüleiste anzeigen.
Windows Explorer verfügt über sechs Popupmenüs in der Menüleiste. Wie bei allen OLE-Containern ist das Windows-Explorer-Menü in sechs Gruppen unterteilt: Datei, Bearbeiten, Container, Objekt, Fenster und Hilfe. In der folgenden Tabelle sind die Windows-Explorer Popupmenüs und die zugehörige Gruppe zusammen mit den Menü-IDs aufgeführt.
Popupmenü | id | Group |
---|---|---|
Datei | FCIDM_MENU_FILE | Datei |
Bearbeiten | FCIDM_MENU_EDIT | Datei |
Sicht | FCIDM_MENU_VIEW | Container |
Favoriten | FCIDM_MENU_FAVORITES | Container |
Tools | FCIDM_MENU_TOOLS | Container |
Hilfe | FCIDM_MENU_HELP | Fenster |
Wenn Sie das Menühandle an Windows Explorer übergeben, indem Sie IShellBrowser::InsertMenusSB aufrufen, müssen Sie auch einen Zeiger auf eine OLEMENUGROUPWIDTHS-Struktur übergeben, deren Member mit null initialisiert wurden.
Wenn IShellBrowser::InsertMenusSB zurückgibt, hat Windows Explorer seine Menüelemente hinzugefügt. Sie können dann das zurückgegebene Menühandle mit Standardmäßigen Windows-Menüfunktionen wie InsertMenuItem für Folgendes verwenden:
- Fügen Sie den Windows-Explorer Popupmenüs Elemente hinzu.
- Ändern oder Löschen vorhandener Elemente in den Windows-Explorer Popupmenüs.
- Fügen Sie neue Popupmenüs hinzu.
Verwenden Sie die in der Tabelle aufgeführten IDs, um die verschiedenen Windows-Explorer Popupmenüs zu identifizieren.
Hinweis
Um Konflikte mit Windows Explorer Befehls-IDs zu vermeiden, müssen die IDs aller hinzugefügten Menüelemente zwischen FCIDM_SHVIEWFIRST und FCIDM_SHVIEWLAST liegen. Diese beiden Werte werden in Shlobj.h definiert.
Wenn Sie das Menü geändert haben, rufen Sie IShellBrowser::SetMenuSB auf, damit Windows die neue Menüleiste anzeigen Explorer.
Nachdem die Ordneransicht anfänglich angezeigt wurde, ruft Windows Explorer IShellView::UIActivate jedes Mal auf, wenn die Ordneransicht den Fokus gewinnt oder verliert. Wenn Sie Über Menüelemente verfügen, die für den Zustand der Ordneransicht empfindlich sind, sollten Sie das Menü jedes Mal entsprechend ändern, wenn sich der Zustand ändert. Für instance verfügen Sie möglicherweise über ein Menüelement, das auf ein Element in der Ordneransicht wirkt, das vom Benutzer ausgewählt wurde. Sie sollten dieses Menüelement deaktivieren oder entfernen, wenn die Ordneransicht den Fokus verliert.
Wenn Windows Explorer IShellView::UIActivate aufruft, um anzugeben, dass die Ordneransicht deaktiviert wird, stellen Sie die Menüleiste in ihren ursprünglichen Zustand zurück, indem Sie IShellBrowser::RemoveMenusSB aufrufen.
Ändern der Windows Explorer Symbolleiste
Zusätzlich zum Ändern der Windows-Explorer-Menüleiste können Sie der Symbolleiste auch Schaltflächen hinzufügen. Wie bei der Menüleiste ist die Symbolleistenänderung normalerweise Teil der IShellView::UIActivate-Implementierung . Das Verfahren zum Hinzufügen von Schaltflächen zur Windows Explorer Symbolleiste ist:
- Fügen Sie der Bildliste der Symbolleiste die Bitmap der Schaltfläche hinzu.
- Definieren Sie die Textzeichenfolge der Schaltfläche.
- Fügen Sie die Schaltfläche zur Symbolleiste hinzu.
Um der Bildliste einer Symbolleiste eine Bitmap hinzuzufügen, senden Sie der Symbolleiste eine TB_ADDBITMAP Nachricht, indem Sie IShellBrowser::SendControlMsg aufrufen. Um das Symbolleistensteuerelement anzugeben, legen Sie den ID-Parameter der Methode auf FCW_TOOLBAR fest. Legen Sie wParam auf die Anzahl der Schaltflächenbilder in der Bitmap und lParam auf die Adresse einer TBADDBITMAP-Struktur fest. Der Bildindex wird im pret-Parameter zurückgegeben.
Es gibt zwei Möglichkeiten, eine Zeichenfolge für die Schaltfläche zu definieren:
- Weisen Sie die Zeichenfolge dem iString-Member der TBBUTTON-Struktur der Schaltfläche zu.
- Rufen Sie IShellBrowser::SendControlMsg auf, um dem Symbolleistensteuerelement eine TB_ADDSTRING Nachricht zu senden. Der wParam-Parameter sollte auf null und der lParam-Parameter auf die Zeichenfolge festgelegt werden. Der Zeichenfolgenindex wird im pret-Parameter zurückgegeben.
Um die Schaltfläche zur Symbolleiste hinzuzufügen, füllen Sie eine TBBUTTON-Struktur aus, und übergeben Sie sie an IShellBrowser::SetToolbarItems. Wie im Menü muss Ihre Befehls-ID zwischen FCIDM_SHVIEWFIRST und FCIDM_SHVIEWLAST liegen. Die Symbolleiste fügt die Schaltfläche dann rechts neben den vorhandenen Schaltflächen an.
Für instance fügt das folgende Codefragment der Symbolleiste von Windows Explorer eine Standardschaltfläche mit der Befehls-ID IDB_MYBUTTON hinzu.
TBADDBITMAP tbadbm;
int iButtonIndex;
TBBUTTON tbb;
tbadbm.hInst = g_hInstance; // The module's instance handle
tbadbm.nID = IDB_BUTTONIMAGE; // The bitmap's resource ID
psb->SendControlMsg(FCW_TOOLBAR, TB_ADDBITMAP, 1,
reinterpret_cast<LPARAM>(&tbadbm), &iButtonIndex);
psb->SendControlMsg(FCW_TOOLBAR, TB_ADDSTRING, NULL,
reinterpret_cast<LPARAM>(szLabel), &iStringIndex);
ZeroMemory(&tbb, sizeof(TBBUTTON));
tbb.iBitmap = iButtonIndex;
tbb.iCommand = IDB_MYBUTTON;
tbb.iString = iStringIndex;
tbb.fsState = TBSTATE_ENABLED;
tbb.fsStyle = TBSTYLE_BUTTON;
psb->SetToolbarItems(&tbb, 1, FCT_MERGE);
Weitere Informationen zum Umgang mit Symbolleistensteuerelementen finden Sie unter Symbolleistensteuerelemente.
Ändern der Windows-Explorer-Statusleiste
Sie können die Windows-Explorer status leiste verwenden, um eine Vielzahl nützlicher Informationen anzuzeigen. Es gibt zwei Möglichkeiten, die status leiste zu verwenden:
- Verwenden Sie IShellBrowser::SetStatusTextSB, um eine Textzeichenfolge auf der status leiste anzuzeigen.
- Senden Sie Nachrichten mit IShellBrowser::SendControlMsg direkt an das status-Balkensteuerelement.
Die erste Methode ist einfach, aber für viele Zwecke ausreichend. Um mehr Flexibilität zu erzielen, können Sie Nachrichten direkt an das steuerelement status leiste senden, indem Sie IShellBrowser::SendControlMsg aufrufen, wobei der id-Parameter auf FCW_STATUS festgelegt ist. Weitere Informationen zu status Balkensteuerelementen finden Sie unter Statusleisten.
Speichern von ansichtsspezifischen Informationen
Wenn eine Ansicht zerstört wird, ist es häufig nützlich, Informationen wie den Zustand oder die Einstellungen der Ansicht zu speichern. Windows Explorer fordert Sie zu dieser Aufgabe auf, indem Sie IShellView::SaveViewState aufrufen. Die bevorzugte Möglichkeit zum Speichern ansichtsspezifischer Informationen besteht darin , IShellBrowser::GetViewStateStream aufzurufen. Mit dieser Methode erhalten Sie eine IStream-Schnittstelle , die Sie zum Speichern der Informationen verwenden können. Sie können jedes geeignete Datenformat verwenden.