我的第一个MFC的ArcGIS Engine程序

原文 http://blog.csdn.net/zzahkj/article/details/9003518

(第一版,以VC++6.0+AE9.3为例)

首次,学习MFC,写个笔记,MFC还是挺好学的,废话不说,写MFC:

1.新建一个MFC工程

1)新建一个MFC AppWizard[exe],命名为FirstMap

2)在MFC AppWizard-step1中选择Single Document选项。然后默认到最后,在Base class中选择CFromView,再点击完成。

2.添加AE控件

1)从“工程”菜单,找到添加工程——Components and Controls…,打开Components and Controls Gallery对话框,双击Registered ActiveX Controls文件夹,选择Esri MapControl,单击insert,弹出的对话框点击确定和OK

2)同样的方法,添加TOC Control、ToolBarControl、LicenseControl,这些控件都出现在控件工具条上,并且向窗体添加各控件

3.设置控件并建立关联

1)右击MapControl打开Properties,设置Control属性页

2)设置ToolbarControl的Properties,在Items中点击Add,打开Controls Commands对话框,设置工具条属性,在Generic和Map Navigation列表中选择常用的命令拖到(或双击)工具条上。

3)右键建立类向导(或者Ctrl+W),给MapControl、TOCControl、ToolbarControl分别添加对应的成员变量m_ctrlMap、m_ctrlTOC、m_ctrlToolBar,点击OK

 

4)添加代码,建立三个控件之间间的关联,在void CFirstMapView::OnInitialUpdate()添加如下代码,大功告成

 

[cpp] view plaincopy

  1. void CFirstMapView::OnInitialUpdate()  
  2. {  
  3.     CFormView::OnInitialUpdate();  
  4.     GetParentFrame()->RecalcLayout();  
  5.     ResizeParentToFit();  
  6.   
  7.     //控件关联  
  8.     m_ctrlTOC.SetBuddyControl(m_ctrlMap.GetObject());  
  9.     m_ctrlToolBar.SetBuddyControl(m_ctrlMap.GetObject());  
  10.   
  11. }  

程序运行结果如下:

4.设置地图控件大小

上面的程序做完之后,放大窗体后发现控件不能随着窗体放大而放大

但我们需要控件随着窗体的放大而放大。在VC中,窗体在改变大小时会产生WM_SIZE消息,可以在消息处理时修改控件的大小,使它充满窗体。

1)右键建立类向导(或者Ctrl+W)打开MFC ClassWizard,映射WM_SIZE消息(双击WM_SIZE)

修改OnSize函数,代码如下:

 

[cpp] view plaincopy

  1. void CFirstMapView::OnSize(UINT nType, int cx, int cy)   
  2. {  
  3.     CFormView::OnSize(nType, cx, cy);  
  4.       
  5.     // TODO: Add your message handler code here  
  6.       
  7.     if(m_ctrlTOC.GetSafeHwnd() != NULL)  
  8.     {  
  9.         if(cx<500)//窗体宽度小于500像素时,TOC控件宽度是窗体宽度的五分之二  
  10.         {  
  11.             m_ctrlToolBar.MoveWindow(0,0,cx,20);  
  12.             m_ctrlTOC.MoveWindow(0,20,int(cx*0.4),cy);  
  13.             m_ctrlMap.MoveWindow(int(cx*0.4),20,cx,cy);  
  14.         }  
  15.         else//窗体宽度不小于500像素时,TOC控件宽度为200像素  
  16.         {  
  17.             m_ctrlToolBar.MoveWindow(0,0,cx,20);  
  18.             m_ctrlTOC.MoveWindow(0,20,200,cy);  
  19.             m_ctrlMap.MoveWindow(200,20,cx,cy);  
  20.         }  
  21.     }  
  22. }  

实例源码见

http://download.csdn.net/detail/zzahkj/5494265

时间: 2024-08-03 22:28:29

我的第一个MFC的ArcGIS Engine程序的相关文章

ArcGIS Engine开发入门教程

利用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 Dixon整理 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>/DeveloperKit/Samples/Developer_Guide_Scenarios/ ArcGIS_Engine/Building_an_ArcGIS_Control_Application/Map_Viewer 注:Ar

《ArcGIS Engine+C#实例开发教程》第八讲 属性数据表的查询显示

原文:<ArcGIS Engine+C#实例开发教程>第八讲 属性数据表的查询显示 第一讲 桌面GIS应用程序框架的建立 第二讲 菜单的添加及其实现 第三讲 MapControl与PageLayoutControl同步 第四讲 状态栏信息的添加与实现 第五讲 鹰眼的实现 第六讲 右键菜单添加与实现 教程Bug及优化方案1 第七讲 图层符号选择器的实现1 第七讲 图层符号选择器的实现2 第八讲 属性数据表的查询显示 摘要:这一讲中,我们将实现图层属性数据表的查询显示.在ArcMap中,单击图层右

ArcGIS Engine开发之旅04---ARCGIS接口详细说明

原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1.      IField接口(esriGeoDatabase)... 2 2.      IFieldEdit接口(esriGeoDatabase)... 2 3.      IFields接口(esriGeoDatabase)... 2 4. IRow接口(esriGeoDatabase)... 3 5. ITable接口(esriGeoDatabase)... 3 6. IAr

ArcGIS Engine开发之旅05---空间数据库

原文:ArcGIS Engine开发之旅05---空间数据库 1  Geodatabase概念 Geodatabase是ArcInfo8引入的一种全新的面向对象的空间数据模型,是建立在DBMS之上的统一的.智能的空间数据模型."统一"是指,Geodatabase之前的多个空间数据模型都不能在一个统一的模型框架下对地理空间要素信息进行统一的描述,而Geodatabase做到了这一点:"智能化"是指,在Geodatabase模型中,对空间要素的描述和表达较之前的空间数据

代码-在vs2013里有时无法打开arcgis engine的设计器和使用工具,悬赏

问题描述 在vs2013里有时无法打开arcgis engine的设计器和使用工具,悬赏 我用vs2013来进行arcgis engine的设计,但偶尔出现这种现象. 打开某个arcgis engine的解决方案时,屏幕上一直呈现正在准备解决方案中直至最后程序未响应,我只好强制退出. 第二次打开时顺利进入到解决方案当中,但提示说上次未能加载出一个或多个项目,于是我又查看解决方案里的各个项目,所有代码都能显示,并且没有报错,但是当尝试打开设计器窗体时,和之前一样,始终显示正在打开文件,直至最后程序

《ArcGIS Engine+C#实例开发教程》第二讲 菜单的添加及其实现

原文:<ArcGIS Engine+C#实例开发教程>第二讲 菜单的添加及其实现 摘要:在上一讲中,我们实现了应用程序基本框架,其中有个小错误,在此先跟大家说明下.在"属性"选项卡中,我们当时添加的是 DataGridView控件,这个控件是用来显示数据表的,而专门用于属性的查询和设置的控件是 PropertyGrid 控件.因此请你删除"属性"选项卡中的DataGridView 控件,再把位于"工具箱 | 所有 Windows 窗体 |Pro

如何在WPF程序中使用ArcGIS Engine的控件

原文 http://www.gisall.com/html/47/122747-4038.html WPF(Windows Presentation Foundation)是美国微软公司推出.NET Framework 3.0的组成部分之一,它是一套基于XML..NET Framework.矢量绘图(vector graphic)技术的展示层(presentation layer)开发框架,微软视其为下一代用户界面(user interface)技术,将广泛被用于下一代的Windows平台(Wi

利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

原文:利用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer 注:ArcGIS样

ArcObjects与ArcGIS Engine

1.ArcObjects 在ArcGIS系列产品中,ArcGIS Desktop.ArcGIS Engine和ArcGIS Server都是基于核心组件库ArcObjects搭建的. 所谓ArcObjects,现在一般都是指ArcGIS Desktop版本的组件开发集,即需要安装ArcGIS桌面版软件后才能安装这些组件开发集,它是所有版本中组件最全的版本. ArcObjects组件库有3000多个对象可供开发人员调用,为开发人员集成了大量的GIS功能,可以快速的帮助开发人员进行GIS项目的开发.