本例要演示的是如何在ArcMap中对图形的移动动作进行撤销和重做,用到IExtentStack接口。以帮助理解ArcMap中对撤销和重做实现的方法
本例要演示的是如何在ArcMap中对图形的移动动作进行撤销和重做,用到IExtentStack接口。以帮助理解ArcMap中对撤销和重做实现的方法。
l 要点
IActiveView的ExtentStack属性保存了其Extent改变的“历史记录”,而IMxDocument的OperationStack属性则有能力记录更复杂的编辑动作的历史。用户只有深刻理解了概念,才能够完成特定功能“历史记录”的定制。
l 程序说明
过程 Extent_UnDo和Extent_RnDo分别模拟了ArcMap中Tools工具栏上的“Go Back To Previous Extent”和“Go To Next Extent”两个按钮的功能。
l 代码
|
Option Explicit
Public Sub Extent_UnDo() Dim pMxDocument As IMxDocument Dim pActiveView As IActiveView Dim pExtentStack As IExtentStack On Error GoTo ErrorHandler Set pMxDocument = ThisDocument Set pActiveView = pMxDocument.FocusMap Set pExtentStack = pActiveView.ExtentStack If pExtentStack.CanUndo Then pExtentStack.Undo End If Exit Sub ErrorHandler: MsgBox Err.Description End Sub
Public Sub Extent_ReDo() Dim pMxDocument As IMxDocument Dim pActiveView As IActiveView Dim pExtentStack As IExtentStack On Error GoTo ErrorHandler Set pMxDocument = ThisDocument Set pActiveView = pMxDocument.FocusMap Set pExtentStack = pActiveView.ExtentStack If pExtentStack.CanRedo Then pExtentStack.Redo End If Exit Sub ErrorHandler: MsgBox Err.Description End Sub
|