一、MapX的帮助

  MapX的官方帮助文档是《MapX在线帮助》。

  个人认为,这套文档过于简单,系统性偏差,与ArcEngine的帮助文档不可比。很多MapX的开发技巧在《MapX在线帮助》中查找不到,只能在互联网上搜索。

  本文试图从一个程序员的视角展开,来整理一下MapX的开发技巧。需要强调的是,VB+MapX模式是在《MapX在线帮助》中重点描述内容,本文将侧重于VC+MapX。

  二、MapX的对象组织

  MapInfo作为地图编辑平台,需要解决一个核心问题: 如何组织地理世界的空间数据和属性数据,以及如何在电脑屏幕上绘制出来。MapX作为二次开发控件,其对象组织结构将直接体现MapInfo对于地理世界的理解。

  在阅读本文的同时,请读者打开《MapX在线帮助》,定位到“The MapX Objects”=〉“Intro - The MapX Objects”。注意:《MapX在线帮助》是安装MapX后的帮助文档,比如我安装了MapX4.0,那么通过“开始”=〉“程序”=〉“MapInfo MapX 4.0”可以打开《MapX在线帮助》。

  这里是MapX的对象结构图(OMD),ArcEngine的帮助文档也有类似的图。学习二次开发,需要熟悉这张图。这样能“一览众山小”,心里有谱,知道如何下手去搜索对象。

  从图中可以发现,OMD有两条核心主线。一条是用于表达空间数据的Layers->Layer->Feature->Parts等对象系列;另一条是用于表达属性数据的Datasets->Dataset->Fields->Field等对象系列。

  

  这两条对象系列是MapInfo的精华所在。其他对象诸如注记、专题、查询等对象都是在两条主线上衍生出来的支线。有能力的读者,如果想从底层写一个地图编辑平台,也可以借鉴此OMD来组织自己的程序数据结构。

  在上一篇文章中,大致描述了MapX的帮助文档以及MapX的体系结构。那么,接下来,我们开始VC6.0 + MapX之旅。

  一、准备工作

  开发前,需要安装Visual Studio 6和MapX,以及搭建测试环境。

  测试环境并不是指程序员进行开发的计算机软件环境,这种环境只能进行单元测试,最理想的测试环境应该是尽可能的模仿用户使用环境。什么是用户环境?有一点可以肯定,用户环境不会安装Visual Studio 6。

  如果没有条件购置第二台电脑搭建测试环境,可以使用虚拟机(比如VMWare等)工具在本机安装双系统,甚至是多系统。

  

  二、在VC6工程中创建MapX Control

  在MapX的帮助文档《MapX在线帮助》中,已经很详尽的描述创建的方法。具体位置:

  1、“开始”=〉“程序”=〉“MapInfo MapX 4.0”可以打开《MapX在线帮助》。

  2、“The MapX User Guide”=〉“Working With Visual C++”=〉“Create a MapX Control Using C++”。

  OK。按照上面的操作,您就已经开始了丰富多彩的MapX开发之旅。

  不过,需要注意两点。

  1、如何将MAPX.H/MAPX.CPP添加进VC6工程?很简单,从例程中找到这两个文件,然后复制到自己的工程目录就可以。而不要使用VC6中安装组建和控件的方法添加(菜单:“project”=>“Add To Project”=>“Components and Controls”)。

  2、按照默认的方法创建的工程在编译运行后,会自动打开一个gst地图。如果想让程序运行时不显示任何地图数据,需要将gst清空,方法如下:

  int CMapxSampleView::OnCreate(LPCREATESTRUCT lpCreateStruct)

  {

  if (CView::OnCreate(lpCreateStruct) == -1)

  return -1;

  //创建mapx控件

  CRect rc(0,0,100,100);

  if( !m_ctrlMapX.Create(NULL, WS_VISIBLE, rc, this, IDC_MAP) )

  return -1;

  //清空 gst 地图

  m_ctrlMapX.SetGeoSet("");

  return 0;

3S基础知识:VC6.0+MapX编程总结相关推荐

  1. 【嵌入式Linux】嵌入式Linux应用开发基础知识之串口应用编程

    文章目录 前言 1.ARM芯片是如何使用串口发送/接收数据的 2. TTY体系中设备节点的差别 做个小实验 3.TTY驱动程序框架 4.在STM32MP157上做串口实验的准备工作 4.1.使能设备树 ...

  2. 一、 Python 基础知识笔记 —— 《Python编程:从入门到实践(第二版)》学习笔记

    前言 先安利这本书<Python编程:从入门到实践(第二版)>,作者埃里克-马瑟斯,很适合新手入门,我的python入门学习就是以这本书为核心: 再安利一个网站:菜鸟教程-Python3教 ...

  3. 自学python 编程基础知识_一个python编程自学者的历程以及给自学新手的一些建议...

    文章原本昨晚已经在电脑写好了,今天准备用手机润润色再发表,结果误操作给删了,又要重新码字,真是日了狗了. 由于手机码字,以下python就用py简称代替了.写之前其实也犹豫再三,一则自己编程水平实在有 ...

  4. 【嵌入式Linux】嵌入式Linux应用开发基础知识之I2C应用编程和SMBus协议及AP3216C应用编程

    文章目录 前言 1.IIC协议和SMBUS协议 1.1.IIC协议 1.1.1.硬件框架 1.1.2.软件框架 1.1.3.读写数据格式 1.1.4.硬件结构--在硬件上是如何实现双向传输 1.2.S ...

  5. VC项目配置基础 (VC6.0 和VC2005)

    转载:http://blog.csdn.net/jwcoffee/article/details/5826981 一.预处理宏 1. 通用宏 VC6.0 中: Project Setting à C/ ...

  6. 计算机基础知识好学吗,计算机编程好学吗 需要什么基础知识?

    计算机编程好学吗 需要什么基础知识?想要进入编程行业,入门是比较关键的,经常能听到很多人说,想学习编程不难,入门更为简单,只要你对他感兴趣就能学,但是至于学的怎么样,那就不好说了,尤其是在涉及到高级编 ...

  7. vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)

    不想解释太多直接上代码吧!!! 在对matlab配置后,上代码mcc -W cpplib:libMyAdd -T link:lib MyAdd -C就可以了,记得加上-C 在对VC6.0进行配置的时候 ...

  8. java学习--基础知识阶段性总结--网络编程

    网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识:有效端口:0~65535,其中0~1024系统使用或保留端口. java 中ip对象:InetAddress. imp ...

  9. 神经网络---第一章 基础知识 1.0 人工智能与神经网络

    0.背景 一个对中文一窍不通,只说英语的人关在一个封闭房间中.房间里有一本用英文写成的手册,指示该如何处理收到的汉语信息及如何以汉语相应地回复.房外的人向房间内递进用中文写成的问题.房内的人便按照手册 ...

最新文章

  1. 欧洲超高速网比宽带快万倍 几秒下载一部电影
  2. Linux管道的原子性,管道机制
  3. 160809230张钊
  4. 可视化排班管理_小白经理的思考日记-可视化看板和走动管理
  5. 数据持化技术的发展演变(SQL、JDBC、mybatis)
  6. common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)...
  7. 在 Mac 上的“照片”中如何更改文件的储存位置?
  8. 使用旧版本MATLAB打开新版本MATLAB创建的.slx文件 提高MATLAB启动速度
  9. js 注释,分号用法
  10. RSA之共模攻击与共享素数
  11. auto头文件 qt_C++ auto 关键字的使用
  12. ★思维导图的30个问答
  13. 怎么写经济学论文的导言和文献综述
  14. python和易语言哪个容易胖_碳水化合物和脂肪哪个更容易让身体发胖?
  15. 制作linux包 u盘安装
  16. Mstar的Monitor方案笔记(八)——EDID扩展数据结构
  17. 作为一个数学专业的学生,我是怎么看待编程的?
  18. 【STC单片机学习】第十一课:蜂鸣器
  19. 365天挑战LeetCode1000题——Day 096 消失的两个数字 子串能表示从 1 到 N 数字的二进制串 检查数组是否存在有效划分
  20. 画论68 郑绩《梦幻居画学简明》

热门文章

  1. pip 常用命令及控制台怎么查看python 及pip 和已安装包版本号
  2. 《微观经济学》 第二章
  3. 太厉害了!java老版手机游戏下载
  4. jquery文字提示框
  5. Linux虚拟机的远程三种链接,以及各自的上网方式
  6. Vue移动端项目(二)
  7. 图像处理中的forward warping 和 inverse warping
  8. WIN XP SP2系统经常性死机问题解决历程
  9. iOS开发笔记(IOS7回归)
  10. ECMAScript 2019(ES10) 的新特性总结