clsPan.cls
上传用户:wj1234qo
上传日期:2021-08-01
资源大小:38k
文件大小:4k
源码类别:

工具条

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsPan"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15. Private m_pPoint As esriGeometry.IPoint
  16. Private m_bInUse As Boolean
  17. Private m_pBitmap As IPictureDisp
  18. Private m_pCursor As IPictureDisp
  19. Private m_pCursorMove As IPictureDisp
  20. Private m_pMap As IMap
  21. Implements esriSystemUI.ICommand
  22. Implements esriSystemUI.ITool
  23. Private Sub Class_Initialize()
  24.   '从项目资源文件中加载资源
  25.   Set m_pBitmap = LoadResPicture("Pan", vbResBitmap)
  26.   Set m_pCursorMove = LoadResPicture("PanMove", vbResCursor)
  27.   Set m_pCursor = LoadResPicture("Pan", vbResCursor)
  28. End Sub
  29. Private Sub Class_Terminate()
  30.   Set m_pBitmap = Nothing
  31.   Set m_pCursor = Nothing
  32.   Set m_pCursorMove = Nothing
  33. End Sub
  34. Private Property Get ICommand_Enabled() As Boolean
  35.   ICommand_Enabled = True
  36. End Property
  37.  
  38. Private Property Get ICommand_Checked() As Boolean
  39.   ICommand_Checked = False
  40. End Property
  41.  
  42. Private Property Get ICommand_Name() As String
  43.   ICommand_Name = "DG_Pan"
  44. End Property
  45. Private Property Get ICommand_Caption() As String
  46.   ICommand_Caption = "Pan"
  47. End Property
  48.  
  49. Private Property Get ICommand_Tooltip() As String
  50.   ICommand_Tooltip = "漫游"
  51. End Property
  52.  
  53. Private Property Get ICommand_Message() As String
  54.   ICommand_Message = "Pans The Display By Grabbing"
  55. End Property
  56.  
  57. Private Property Get ICommand_HelpFile() As String
  58.   ' 在这里可以添加其它的重写代码
  59. End Property
  60.  
  61. Private Property Get ICommand_HelpContextID() As Long
  62.   ' 在这里可以添加其它的重写代码
  63. End Property
  64.  
  65. Private Property Get ICommand_Bitmap() As esriSystem.OLE_HANDLE
  66.   ICommand_Bitmap = m_pBitmap
  67. End Property
  68.  
  69. Private Property Get ICommand_Category() As String
  70.   ICommand_Category = "Sample_Pan/Zoom"
  71. End Property
  72.  
  73. Private Sub ICommand_OnCreate(ByVal hook As Object)
  74.   Set m_pMap = hook.Map
  75.    
  76. End Sub
  77.  
  78. Private Sub ICommand_OnClick()
  79.   ' 在这里可以添加其它的重写代码
  80. End Sub
  81. Private Property Get ITool_Cursor() As esriSystem.OLE_HANDLE
  82.   If (m_bInUse) Then
  83.     ITool_Cursor = m_pCursorMove
  84.   Else
  85.     ITool_Cursor = m_pCursor
  86.   End If
  87. End Property
  88.  
  89. Private Sub ITool_OnMouseDown(ByVal Button As Long, ByVal shift As Long, ByVal X As Long, ByVal Y As Long)
  90.   Dim pActiveView As esriCarto.IActiveView
  91.   Set pActiveView = m_pMap
  92.   If (pActiveView Is Nothing) Then Exit Sub
  93.   '开始漫游
  94.   Set m_pPoint = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)
  95.   pActiveView.ScreenDisplay.PanStart m_pPoint
  96.   m_bInUse = True
  97. End Sub
  98.  
  99. Private Sub ITool_OnMouseMove(ByVal Button As Long, ByVal shift As Long, ByVal X As Long, ByVal Y As Long)
  100.   If (Not m_bInUse) Then Exit Sub
  101.   
  102.   Dim pActiveView As esriCarto.IActiveView
  103.   Set pActiveView = m_pMap
  104.   '移动地图
  105.   pActiveView.ScreenDisplay.PanMoveTo pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y)
  106. End Sub
  107.  
  108. Private Sub ITool_OnMouseUp(ByVal Button As Long, ByVal shift As Long, ByVal X As Long, ByVal Y As Long)
  109.   If (Not m_bInUse) Then Exit Sub
  110.   
  111.   Dim pActiveView As esriCarto.IActiveView
  112.   Set pActiveView = m_pMap
  113.   '停止漫游
  114.   Dim pEnvelope As esriGeometry.IEnvelope
  115.   Set pEnvelope = pActiveView.ScreenDisplay.PanStop
  116.   
  117.   pActiveView.Extent = pEnvelope
  118.   pActiveView.Refresh
  119.   m_bInUse = False
  120. End Sub
  121.  
  122. Private Sub ITool_OnDblClick()
  123.   ' 在这里可以添加其它的重写代码
  124. End Sub
  125.  
  126. Private Sub ITool_OnKeyDown(ByVal KeyCode As Long, ByVal shift As Long)
  127.   ' 在这里可以添加其它的重写代码
  128.   
  129. End Sub
  130.  
  131. Private Sub ITool_OnKeyUp(ByVal KeyCode As Long, ByVal shift As Long)
  132.   ' 在这里可以添加其它的重写代码
  133. End Sub
  134.  
  135. Private Function ITool_OnContextMenu(ByVal X As Long, ByVal Y As Long) As Boolean
  136.   ' 在这里可以添加其它的重写代码
  137. End Function
  138.  
  139. Private Sub ITool_Refresh(ByVal hdc As esriSystem.OLE_HANDLE)
  140.   ' 在这里可以添加其它的重写代码
  141. End Sub
  142.  
  143. Private Function ITool_Deactivate() As Boolean
  144.   ITool_Deactivate = True
  145. End Function