原文 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()添加如下代码,大功告成

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

程序运行结果如下:

4.设置地图控件大小

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

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

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

修改OnSize函数,代码如下:

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

实例源码见

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

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

  1. VC、OpenGL、ArcGIS Engine开发的二维三维结合的GIS系统

    一.前言 众所周知,二维GIS技术发展了近四十年,伴随着计算机软硬件以及关系型数据库的飞速发展,二维GIS技术已日臻完善.在对地理信息的分析功能上有着无可比拟的优势.一些宏观的地理信息,一维的地理信息 ...

  2. 【转载】Python与ArcGIS Engine的集成

    本文转载自Fransico<Python与ArcGIS Engine的集成>   1 在Python中调用AO类库 1.1  准备工作 本文所使用环境:ArcGIS 10.0.Python ...

  3. Arcgis Engine 添加一个Symbol符号样式步骤

    public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...

  4. WPF/ArcGIS Engine三维开发和EVC3/4升级到VS项目建议(转)

    系统环境:Windows 7 专业版,Visual Studio 2010,ArcGIS Engine 9.3 1.创建项目 创建一个WPF的项目,必须选择.Net framework 3.5(AE9 ...

  5. ArcGIS Engine开发之属性查询

    属性查询即基于空间数据的属性数据的查询,通过用户提交SQL语言中的where语句定义的查询条件,对属性数据进行搜索,从而得到查询结果的操作. 相关的类与接口 与属性查询功能相关的类主要有QureyFi ...

  6. ArcGIS Engine开发之地图基本操作(4)

    ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...

  7. ArcGIS Engine开发之地图基本操作(3)

    地图数据的加载 一.加载Shapefile数据 Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式.加载Shapefile数据的方式有两种: ...

  8. ArcGIS Engine开发之地图基本操作(2)

    地图数据的加载 1.加载地图文档 ArcGIS Engine支持加载多种类型的数据,有矢量数据的Coverage.Shapefile.dwg/dxf文件,栅格数据的BMP.GRID.控件数据库等.很多 ...

  9. ArcGIS Engine开发前基础知识(3)

    对象模型图 一.对象模型图中的类与接口 ArcGIS Engine 提供大量的对象,这些对象之间存在各种各样的关系,如继承.组合.关联等.对象模型图(Object model diagram,ODM) ...

随机推荐

  1. Send竞争对手:百度云一小时,QQ超大附件最多支持2G,邮件附件20M到50M不等(附国外所有storage列表)——痛点是,最大传输2G,最大容量只有3G(和微云不是一回事),转存到微云文件不能超过1G

    QQ邮箱最大可发送50M普通附件(群邮件则限制在2M).此外也可以使用超大附件功能,支持将1G的文件发往任意邮箱.QQ邮箱根据你的QQ邮箱容量的不同制定相应的接受附件限制,包括附件在内,2G用户所发送 ...

  2. grep详解

    一.简介 Global Regular Expression Print,是一种强大的文本搜索工具,能使用正则表达式. 二.语法 grep [OPTIONS] PATTERN [FILE...]gre ...

  3. 关闭ssh密码登录

    我们经常使用SSH登录管理服务器,在享受便利的同时也会遇到一些安全隐患,最常见的就是SSH密码被暴力破解.如果我们将SSH密码设置的过于复杂,又不容易记,因此限制SSH登录方式,只能使用key登录是一 ...

  4. Tomcat启动load action异常

    近期将之前的项目移到另一个文件夹中(包的路径也更改了),启动Tomcat之后包错:无法加载action,看错误提示知道是路径错误,网上也有各种各样的解决方案,这里我的错误是因为项目移到了别的文件中,所 ...

  5. HTML5 CSS3 诱人的实例 :模仿优酷视频截图功能

    一般的视频网站对于用户上传的视频,在用户上传完成后,可以对播放的视频进行截图,然后作为视频的展示图.项目中也可以引入这样的功能给用户一种不错的体验,而不是让用户额外上传一张展示图. 效果图: 看起来还 ...

  6. phpWeb

    Ruby on Rails框架在REST走得很前,开发时默认都按照RESTful风格搭建. <RESTful Web Services>是本好书 SOAP

  7. JUnit单元测试框架的使用

    http://blog.csdn.net/mao520741111/article/details/51462215 原文地址 http://www.open-open.com/lib/view/op ...

  8. android recover 系统代码分析 -- 选择进入

    最近做Recovery的规范及操作指导文档,花了一些时间将流程搞清. Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级.而在进入Recover ...

  9. Android窗口管理服务WindowManagerService对输入法窗口(Input Method Window)的管理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8526644 在Android系统中,输入法窗口 ...

  10. asp.net在后台弹出confirm确认对话框并获取用户选择的值做出相应的操作

    在asp项目中,这种情况是经常出现的,前段时间通过查找资料以及自己尝试,找到一种解决方案,但是不知是否有更好的方案,以后发现再进行记录. 一.思路 在本次项目中,在一个函数中需要让用户判断,并根据用户 ...