GeoMedia是美国Intergraph公司开发的桌面GIS平台,至于GeoMedia的介绍我在这里不多说,可以到Intergraph的网站www.intergraph.com/geomedia/或者通过Google了解更多详细情况。在这里所提到的Geomedia均指GeoMedia Professional 4.0 或 5.0。

使用GeoMedia开发GIS应用程序,需要了解一些GeoMedia平台中的一些术语和概念,请参见。在GeoMedia的帮助文档GeoMedia Professional Object Reference中可以找到很多VB例子,在这里我主要介绍用VC++6.0如何开发基于GeoMedia的应用程序。

为了让大家有个初步的概念和便于理解的环境,我先不介绍一些平台相关的术语和特性,而是直接描述如何用VC++6创建一个嵌入GeoMedia平台中运行的自定义工具程序。

为了你在下面的过程中不碰到什么不必要的麻烦,请先安装好VC++6.0英文版+SP6补丁。

好,开始进入正题。

第一步
打开VC6,创建工程。
工程类型为ATL COM AppWizard,我在这里将工程名字取为TestCmd。Next到下一步设置我们创建的ATL COM组件类型为Dynamic Link Library (DLL),并且选择MFC支持(这是为了使用大家比较熟悉的界面控制方式,避免对本主题内容理解上的障碍,如果你对ATL/WTL比较熟悉,那么完全可以不选择MFC的支持)。如下图:

第二步
工程创建好了之后,我们接下来要做的第一件事就是创建一个ATL COM对象,选择菜单Insert -> New ATL Object,在ATL Ojbect Wizard对话框中选择Objects,类型为Simple Object。在Wizard的下一步中,我们需要设置ATL Object的名字,我这里设置为TestCmdCom。在attributes标签页中设置线程模型(Threading Model)选择为单线程(Simgle), 接口(Interface)设置为双接口(Dual),也就是支持IDispatch和vtable绑定。 Aggregation设置为NO,也就是不需要聚合支持。另外勾选Support ISupportErrorInfo,以实现ISupportErrorInfo接口,其他的不需要选择。如下图:

第三步
在IDE自动生成的TestCmdCom.h文件中加入如下接口声明:

接口声明

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] 下一页