用程序启动ArcMap工作文档的VB代码实现
昨天在图书馆,空间信息学院的一MM找到我帮忙,她需要在VB下启动ArcMap的代码。下午利用休息时间写了代码,其实在VB下启动ArcMap并不难,无非就是启动ArcMap的应用程序和ArcMap的工作文档,与VB调用Office WORD方法类似。具体代码如下,我已经调试通过.
Option Explicit
Private m_pDoc As IDocument
Private m_pApp As IApplication
Private WithEvents m_pAppRot As AppROT
Sub QuitArcMap()
If m_pDoc Is Nothing Then
Exit Sub
Else
m_pApp.Shutdown ' Quit ArcMap
Set m_pDoc = Nothing ' Release m_pDoc
Set m_pApp = Nothing ' Releasr m_pApp
cmdStartArcMap.Enabled = True
cmdAddData.Enabled = False
cmdQuitArcMap.Enabled = False
End If
End Sub
Sub StartArcMap()
If m_pDoc Is Nothing Then
frmStartArcMap.MousePointer = vbHourglass
' 打开ArcMap
Set m_pDoc = New MxDocument
' 获得程序的引用
Set m_pApp = m_pDoc.Parent
' 显示ArcMap
m_pApp.Visible = True
cmdStartArcMap.Enabled = False
cmdAddData.Enabled = True
cmdQuitArcMap.Enabled = True
frmStartArcMap.MousePointer = vbNormal
End If
End Sub
Private Sub cmdAddData_Click()
Dim pObjFactory As IObjectFactory
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim pGxDialog As IGxDialog
Dim pGxFilter As IGxObjectFilter
Dim pGxObjects As IEnumGxObject
Dim pGxDataset As IGxDataset
Dim pFeatureLayer As IGeoFeatureLayer
frmStartArcMap.MousePointer = vbHourglass
'从程序中获得对象工厂接口
Set pObjFactory = m_pApp
' 获得ArcMap文档和激活地图的引用
Set pMxDoc = m_pDoc
Set pMap = pMxDoc.FocusMap
' 创建特征层并添加到ArcMap
' 使用ArcMap一般对象工厂保证这些对象出现在ArcMap程序空间中
' 显示 GXDialog 允许用户选择数据
Set pGxDialog = pObjFactory.Create("esriCatalogUI.GxDialog")
pGxDialog.AllowMultiSelect = True
pGxDialog.Title = "Select Feature Classes to Add To ArcMap"
' 设置 pGxFilter = New GxFilterFeatureClasses
Set pGxFilter = pObjFactory.Create("esriCatalog.GxFilterFeatureClasses")
Set pGxDialog.ObjectFilter = pGxFilter
pGxDialog.DoModalOpen m_pApp.hWnd, pGxObjects
If (pGxObjects Is Nothing) Then Exit Sub
pGxObjects.Reset
Set pGxDataset = pGxObjects.Next
'创建图层
Do While (Not pGxDataset Is Nothing)
' 设置 pFeatureLayer = New FeatureLayer
Set pFeatureLayer = pObjFactory.Create("esriCarto.FeatureLayer")
Set pFeatureLayer.FeatureClass = pGxDataset.Dataset
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName
pMap.AddLayer pFeatureLayer
Set pGxDataset = pGxObjects.Next
Loop
frmStartArcMap.MousePointer = vbNormal
End Sub
Private Sub cmdQuitArcMap_Click()
QuitArcMap
End Sub
Private Sub cmdStartArcMap_Click()
StartArcMap
End Sub
Private Sub Form_Load()
Move 0, 0
Set m_pAppRot = New AppROT
cmdAddData.Enabled = False
cmdQuitArcMap.Enabled = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
QuitArcMap
Set m_pAppRot = Nothing
End Sub
Private Sub m_pAppRot_AppRemoved(ByVal pApp As esriFramework.IApplication)
' 如果退出ArcMap释放m_pDoc 和 m_pApp
If TypeOf pApp Is IMxApplication Then
If pApp.Document Is m_pDoc Then
Set m_pDoc = Nothing
Set m_pApp = Nothing
cmdStartArcMap.Enabled = True
cmdAddData.Enabled = False
cmdQuitArcMap.Enabled = False
End If
End If
End Sub
最新文章
- ArcGIS 9.3平台特点介绍及版本亮点 [08-20]
- 北京山海经纬信息技术有限公司2008 [03-15]
- 北京山海经纬 山海易绘EzRouter产品 [03-15]
- 综合的地下水建模软件GMS功能介绍 [03-15]
- SuperMap GIS 2008: SuperMap GIS的 [01-28]
- ArcGIS Engine保存Mxd文件类MapDom [12-08]
- 地理信息栅格数据共享工具Deegree简 [11-25]
- 用程序启动ArcMap工作文档的VB代码 [11-22]
- MapInfo Professioanl二次开发基本 [11-22]
- MapInfo二次开发方式之MapX开发Map [11-22]
推荐文章


热点文章
绝好资料:MapGIS详细操作手册下载
Mapinfo难点之SQL查询及操作大全
MAPGIS在数字化制图中的应用技巧
如何进行ArcGIS的矢量化操作
MAPGIS地理信息数据输入及数据采
如何在ArcMap下将栅格图象矢量化
分享:MAPGIS常见操作问题集锦(6.
如何在MapInfo中正确使用地理坐标
MapInfo Professional 7.5新增功
ArcGIS教程之编辑操作常用快捷键
MapGis6.7安装教程注意与QQ冲突
ArcGIS基础教程之拓扑关系
北京超图SuperMap GIS产品系列概
使用ArcGIS转换成dwg和dxf等CAD文
常见的几种地理信息系统如MapInf
MapInfo中表投影和会话投影及视图
Mapinfo难点讲解之无缝图层的特点
从MapInfo到Google Earth的通道之
栅格图象导入方法之TFW坐标信息文
程序里如何调用ArcMap中现有的功
如何使用程序获取或新建一个arcm
如何在ArcMap中加入Text和dBASE文
ArcMAP中如何使用状态条StatusBa
如何本地化Mapguide服务站点用户
基础教程:如何在ArcMap的VBA环境
shp2sde命令行方式向arcsde批量导
ArcMap中如何加载Shape文件[附代
Arcmap如何连接栅格文件[附代码]
代码:Arcmap如何连接Coverage文件
ArcGIS 9.3平台特点介绍及版本亮

