Gewusst wie: Bereitstellen von Kontext für Editoren bereit
Bei einem Editor ist der Kontext aktiviert, wenn der Editor den Fokus besitzt oder den Fokus hatte, unmittelbar bevor der Fokus auf ein Toolfenster verschoben wurde. Sie können einen Kontext für diese vom Editor folgendermaßen bereitstellen:
Erstellen Sie einen Kontext behälter.
Veröffentlichen Sie den Kontext behälter der Auswahl (Programmbezeichner) SEID Element.
Behalten Sie den Kontext im Behälter bei.
Diese Aufgaben werden durch die folgenden Prozeduren erläutert. Weitere Informationen über das Bereitstellen des Kontexts finden Sie unter Robuste Programmierung weiter unten in diesem Thema.
Um einen Kontext behälter für einen Editor oder Designer erstellen
Rufen Sie QueryService auf der IServiceProvider-Schnittstelle für den SVsMonitorUserContext Dienst an.
Ein Zeiger auf die IVsMonitorUserContext-Schnittstelle zurückgegeben.
Rufen Sie die CreateEmptyContext-Methode auf, um einen neuen Kontext oder einen Unterkontext behälter zu erstellen.
Ein Zeiger auf die IVsUserContext-Schnittstelle zurückgegeben.
Rufen Sie die AddAttribute-Methode auf, um Attribute unter dem Kontext F1-Schlüsselworte oder Schlüsselwörter oder dem Unterkontext behälter hinzuzufügen.
Wenn Sie einen Unterkontext behälter erstellen, rufen Sie die AddSubcontext-Methode auf, um den Unterkontext behälter zum übergeordneten Kontexts behälter zu verknüpfen.
Rufen Sie AdviseUpdate auf, um Benachrichtigungen zu empfangen, wenn das Dynamische Hilfe Fenster im Begriff ist zu aktualisieren.
Der Aufruf Dynamische Hilfe Fenster seien ihre, gibt der Editor, wenn er bereit ist, zu aktualisieren, die Ihnen die Gelegenheit zu ändern, Kontext zu verzögern, bis das Update auftritt. Auf diese Weise kann die Leistung verbessern, da Sie zeitaufwändige Algorithmen können die gewartet, bis System ausgeführt leerlaufzeit verfügbar ist.
Um den Kontext veröffentlichen SEID dem behälter
Aufruf QueryService auf dem SVsTrackSelectionEx Dienst, um einen Zeiger auf die IVsTrackSelectionEx-Schnittstelle zurückzugeben.
Rufen Sie das OnElementValueChangean und einen Wertelementid-Element des Bezeichners (Parameter) von SEID_UserContext angeben, um anzugeben, dass Kontext der globalen Ebene übergeben.
Wenn der Editor oder Designer aktiv ist, werden die Werte im IVsTrackSelectionEx-Objekt die globale Auswahl weitergegeben. Sie müssen diesen Vorgang nur einmal pro Sitzung abgeschlossen haben, und speichern dann den Mauszeiger auf den globalen Kontext erstellt haben, als Sie OnElementValueChangeaufgerufen haben.
Um den Kontext warten behälter
Implementieren Sie IVsUserContext , um sicherzustellen, dass das Dynamische Hilfe Fenster im Editor oder Designer aufruft, bevor sie aktualisiert.
Für jeden Kontext behälter, der AdviseUpdate aufgerufen hat, nachdem der Kontext behälter wird erstellt und verfügt IVsUserContextUpdateimplementiert, ruft die IDE UpdateUserContext an den Hersteller der Kontext zu benachrichtigen, dass der Kontext behälter aktualisiert wird. Sie können diesen Aufruf verwenden, um die Attribute und Schlüsselwörter im Kontext behälter zu ändern, und alle Unterkontext behältern, vor dem Aktualisieren Dynamische Hilfe Fensters auftritt.
Rufen Sie SetDirty im Kontext behälter an, um anzugeben, dass der Editor oder Designer neuen Kontext verfügt.
Wenn das Fenster Dynamische HilfeUpdateUserContext aufruft, um anzugeben, dass sie aktualisiert, kann der Editor oder Designer den Kontext des übergeordneten Kontexts behälter und alle Unterkontext zu diesem Zeitpunkt behälter entsprechend aktualisieren.
Hinweis
Das SetDirty-Flag festgelegt true wird automatisch an, sobald sich der Kontext aus dem Kontext behälter hinzugefügt oder entfernt wird.Das Dynamische Hilfe Fenster wird nur UpdateUserContext im Kontext behälter an, wenn das SetDirty-Flag auf truefestgelegt ist.Er wird auf false nach dem Update zurückgesetzt.
Rufen Sie AddAttribute an, um den Kontext der aktuellen Kontext RemoveAttribute oder - Auflistung hinzu, um den Kontext zu entfernen.
Robuste Programmierung
Wenn Sie das Schreiben verfügen. B. Editor, sind, müssen Sie alle drei Verfahren in diesem Thema ausgeführt haben, um Kontextinformationen für den Editor bereitzustellen. Weitere Informationen finden Sie unter Editor Design Decisions.
Hinweis
Um ein Editor- oder Designerfenster ordnungsgemäß zu aktivieren und sicherzustellen, dass Befehls routing ordnungsgemäß aktualisiert wird, müssen Sie Show für die Komponente aufrufen um das Fenster Fokus zu erstellen.
Das SEID ist eine Auflistung von Eigenschaften, die auf Grundlage der Auswahl ändern. SEID-Informationen werden durch die globale Auswahl verfügbar. Die globale Auswahl wird in die Ereignisse, die von der IVsTrackSelectionEx-Schnittstelle ausgelöst werden und eine Liste mit allen verfügt, das ausgewählt wird (aktueller Editor Fenster des aktuellen Tools, aktuelle Hierarchie usw.).
Für Editoren und Designern in dem Kontext ändern kann, sobald sich der Cursor innerhalb eines Worts bewegt wird, ist es ineffizient, den Kontext behälter ständig zu aktualisieren. Um die Aktualisierung bei jedem Ausführen effizienter Sie den Cursor Editor- Scrollen innerhalb des Fensters oder Designer können Sie erkennen, SetDirtyaufrufen. Auf diese Weise können Sie die Kontext angehalten, bis es geändert wurde und der Leerlaufzeit für Kontext der IDE Benachrichtigung für den Editor oder Designer sendet, den das Dynamische Hilfe Fenster aktualisiert. Dieser Ansatz ist in der „verwendet, um die Prozedur zu warten behälters Kontext des“ in diesem Thema.
Nach der Bereitstellung des Kontexts für Aktivitäten im Editor oder Designer, sollten Sie ein bestimmtes F1-Schlüsselwort bereitstellen, dass Benutzer die Hilfe für den Editor oder Designer selbst abzurufen.