如何实现在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

posted on 2006-09-07 13:28  greatbird  阅读(1640)  评论(0)    收藏  举报

导航