Procedura: Gestione di annullamento di utilizzo
L'interfaccia primaria utilizzata per la gestione di annullamento è IOleUndoManager, che viene implementata dall'ambiente. Per supportare gestione di annullamento, di annullamento separate di utilizzo (ovvero IOleUndoUnit, che possono contenere singoli passaggi più.
Come implementare la gestione di annullamento varia a seconda che l'editor supporta più visualizzazioni o meno. Le procedure per ogni implementazione sono dettagliate nelle sezioni seguenti.
Casi in cui un editor supporta un singolo punto di vista
In questo scenario, l'editor non supporta più visualizzazioni. È presente un editor e un documento e supportano l'annullamento su. Utilizzare la procedura riportata di seguito per implementare la gestione di annullamento.
Per supportare gestione di annullamento per un editor di singolo-visualizzazione
Chiamata QueryInterface sull'interfaccia di IServiceProvider sulla struttura della finestra per IOleUndoManager, dall'oggetto del documento per accedere a gestione di annullamento (IID_IOLEUndoManager).
Quando una visualizzazione viene posizionato in una struttura della finestra, ottiene un puntatore di sito, che può utilizzare per chiamare QueryInterface per IServiceProvider.
Casi in cui un editor supporta più visualizzazioni
Se si dispone di documento e la separazione di visualizzazione, esiste in genere un amministratore di annullamento associato al documento stesso. Tutte le unità di annullamento vengono inseriti in un amministratore di annullamento associato all'oggetto dati del documento.
Instead of the view querying for the undo manager, of which there is one for each view, the document data object calls CreateInstance to instantiate the undo manager, specifying a class identifier of CLSID_OLEUndoManager. L'identificatore di classe definito nel file di OCUNDOID.h.
When using CreateInstance to create your own undo manager instance, use the following procedure to hook your undo manager into the environment.
Per associare il gestore di annullamento nell'ambiente
Chiamare QueryInterface sull'oggetto restituito da ILocalRegistry2 per IID_IOleUndoManager. Archiviare il puntatore a IOleUndoManager.
chiamare QueryInterface su IOleUndoManager per IID_IOleCommandTarget. Archiviare il puntatore a IOleCommandTarget.
Relay your QueryStatus and Exec calls into the stored IOleCommandTarget interface for the following StandardCommandSet97 commands:
cmdidUndo
cmdidMultiLevelUndo
cmdidRedo
cmdidMultiLevelRedo
cmdidMultiLevelUndoList
cmdidMultiLevelRedoList
chiamata QueryInterface su IOleUndoManager per IID_IVsChangeTrackingUndoManager. Archiviare il puntatore a IVsChangeTrackingUndoManager.
Use the pointer to IVsChangeTrackingUndoManager to call the MarkCleanState, the AdviseTrackingClient, and the UnadviseTrackingClient methods.
chiamata QueryInterface su IOleUndoManager per IID_IVsLinkCapableUndoManager.
Chiamare l'entity_M:Microsoft.VisualStudio.TextManager.Interop.IVsLinkCapableUndoManager.AdviseLinkedUndoClient(Microsoft.VisualStudio.TextManager.Interop.IVsLinkedUndoClient) al documento, che deve implementare anche l'interfaccia di IVsLinkedUndoClient . Quando il documento viene chiuso, chiamare IVsLinkCapableUndoManager::UnadviseLinkedUndoClient.
Quando il documento viene chiuso, chiamare QueryInterface sull'amministratore di annullamento per IID_IVsLifetimeControlledObject.
Chiamare il metodo SeverReferencesToOwner.
Quando vengono apportate modifiche al documento, chiamare Add sull'amministratore a una classe di OleUndoUnit . Il metodo di Add mantiene un riferimento all'oggetto, pertanto in genere è lo rilascia immediatamente dopo Add.
La classe di OleUndoManager rappresenta una singola istanza di annullamento dello stack. Pertanto, è presente un oggetto di annullamento dell'amministratore di entità di dati che viene rilevato per la fase di annullamento o la ripetizione.
Nota
Mentre l'oggetto di annullamento amministratore viene utilizzato ampiamente dall'editor di testo, è un componente generale che non include il supporto specifico all'editor di testo.Se si desidera supportare undo a più livelli o la ripetizione, è possibile utilizzare questo oggetto a tale scopo.
Vedere anche
Attività
Procedura: Rimozione dello stack di annullamento