Freigeben über


Gewusst wie: Implementieren Sie zum Rückgängigmachen Verwaltung

Die primäre Schnittstelle verwendet wird, die für die Verwaltung IOleUndoManagerrückgängig gemacht wird, die von der Umgebung implementiert wird. Um zu unterstützen, separate Rückgängigeinheiten Rückgängigmachen Verwaltung zu implementieren (d. h. IOleUndoUnit, die mehrere einzelne Testschritte enthalten kann.

Wie Sie implementieren, Rückgängig Verwaltung variiert abhängig davon, ob der Editor mehrere Ansichten oder nicht unterstützt. Die Prozeduren für jede Implementierung werden in den folgenden Abschnitten einzeln aufgelistet.

Fällen, wo ein Editor eine einzelne Ansicht unterstützt

In diesem Szenario unterstützt der Editor nicht mehrere Ansichten. Es gibt nur einen Editor und ein Dokument, und die Option Rückgängig unterstützen. Führen Sie die folgenden Schritte aus, um die Verwaltung rückgängig zu implementieren.

Zur Verwaltung Rückgängig zur Unterstützung für einen bestimmten Ansicht Editor

  1. Rufen Sie QueryInterface auf der IServiceProvider-Schnittstelle für den Fensterrahmen für IOleUndoManagerdie Dokumente vom Objekt auf, um den Manager Rückgängig (IID_IOLEUndoManager) zuzugreifen.

  2. Wenn eine Ansicht in einen Fensterrahmen positioniert ist, ruft sie einen Zeiger ab, den diese Website verwenden kann, um QueryInterface für IServiceProvideraufzurufen.

Fällen, wo ein Editor unterstützt mehrere Ansichten

Wenn Sie Dokument und trennung haben, gibt es normalerweise zum Rückgängigmachen von den Manager, der dem Dokument selbst zugeordnet ist. Alle Rückgängigeinheiten sind auf eine rückgängig machen den Manager platziert, der dem Dokumente an das angegebene Channeldatenobjekt zugeordnet ist.

Statt der Ansicht, die für den Manager Rückgängig, von dem es sich um eine für jede Sicht abgefragt wird, ruft das Dokument an das angegebene Channeldatenobjekt CreateInstance Rückgängig, um den Manager zu instanziieren und gibt die Klassen-ID von CLSID_OLEUndoManager an. Der Klassenbezeichner werden in der OCUNDOID.h-Datei definiert.

Wenn sie CreateInstance verwenden, um zu erstellen, rückgängig Auch Managerinstanz, verwenden das folgende Verfahren zum Rückgängig der Hook Manager in der Umgebung.

Wenn der Hook Manager Rückgängig in der Umgebung

  1. Rufen Sie QueryInterface für das Objekt auf, das von ILocalRegistry2 für IID_IOleUndoManagerzurückgegeben wurde. Speichern Sie den Zeiger auf IOleUndoManager.

  2. Aufruf QueryInterface auf IOleUndoManager für IID_IOleCommandTarget. Speichern Sie den Zeiger auf IOleCommandTarget.

  3. Relay das QueryStatus aufruft und die Exec die gespeicherte IOleCommandTarget-Schnittstelle für die folgenden Befehle: StandardCommandSet97

    • cmdidUndo

    • cmdidMultiLevelUndo

    • cmdidRedo

    • cmdidMultiLevelRedo

    • cmdidMultiLevelUndoList

    • cmdidMultiLevelRedoList

  4. Rufen Sie QueryInterface auf IOleUndoManager für IID_IVsChangeTrackingUndoManageran. Speichern Sie den Zeiger auf IVsChangeTrackingUndoManager.

    Verwenden Sie den Zeiger auf IVsChangeTrackingUndoManager , um MarkCleanState, das AdviseTrackingClientund die UnadviseTrackingClient-Methode aufzurufen.

  5. Aufruf QueryInterface auf IOleUndoManager für IID_IVsLinkCapableUndoManager.

  6. Rufen Sie AdviseLinkedUndoClient dem Dokument an, das die IVsLinkedUndoClient auch Schnittstelle implementieren soll. Wenn das Dokument geschlossen wird, rufen Sie IVsLinkCapableUndoManager::UnadviseLinkedUndoClientan.

  7. Wenn das Dokument geschlossen wird, rufen Sie QueryInterface im Manager für IID_IVsLifetimeControlledObjectauf Rückgängig.

  8. Rufen Sie SeverReferencesToOwner auf.

  9. Wenn Änderungen am Dokument vorgenommen wurden, rufen Sie Add im Manager mit einer OleUndoUnit-Klasse. Die Add-Methode enthält einen Verweis auf das Objekt, sodass es im Allgemeinen Version Addnach rechts.

Die OleUndoManager-Klasse stellt eine einzelne Rückgängig-Stapel Objektinstanz dar. Deshalb gibt es zum Rückgängigmachen von den Manager Datenentität, die pro Objekt für verfolgt wird, rückgängig machen oder wiederholen.

Hinweis

Während das Objekt im Text-Editor Manager Rückgängig umfassend verwendet wird, handelt es sich um eine gemeinsame Komponente, die keine bestimmte Unterstützung für den Text-Editor verfügt.Wenn Sie auf mehreren Ebenen unterstützen möchten, wiederholen Sie den Befehl Rückgängig aus, oder Sie können dieses Objekt verwenden.

Siehe auch

Aufgaben

Gewusst wie: Löschen Sie den Rückgängigstapel.

Referenz

IVsChangeTrackingUndoManager

IVsLifetimeControlledObject