2-13 : 代码实现

通过重载OnCreate和OnClick,实现命令对象的创建,和事件里具体内容的实现。

注意:Tool(工具插件):适用于与地图或制图组件有交互的插件,只需继承自BaseTool(继承自BaseCommand),根据功能需要可重写OnMouseDown、OnMouseMove等方法,如:拉框放大、探针、画多边形等。

Command(命令插件):与地图无交互,只需继承自BaseCommand,重写OnClick方法,如:全图、居中放大、前一视图等。弹出窗体的Command继承至DesktopCommand,如空间量测工具,而这里的加载矢量数据Command继承至BaseCommand。

2-14 :初始化

在构造函数里初始化 界面按钮的样式:

m_Image为按钮背景图片;

注意: 主程序首先通过配置文件查找图片,若配置文件中的图片不存在则使用工程中定义的图片。

Caption 为按钮名称;

Name 为命令对象的名称;

ToolTip 为按钮提示内容;

Checked 表示初始化时按钮是否为选中状态;

Enabled 设置初始化时按钮的可用性

2-15: 创建插件对象

通过OnCreate方法传递hook对象,也就是MapControl对象,赋值给Command对象的m_Hook和m_HookHelper

2-16: 实现加载矢量数据方法

通过以上步骤,矢量数据加载命令即创建完毕。

3.3   在主程序中调用插件

3.3.1  设置启动宿主程序PIEApplication.exe

右键项目在调试选项中,选择启动外部程序,路径为 安装路径目录下\Bin\PIEApplication.exe

2-17: 启动宿主程序 PIEApplication.exe

3.3.2   配置文件设置

2-18: 修改配置文件

在配置文件中新增Item项,设置控件类型(Type)为button,

library 为插件类名,即 PIE.ControlsTest.dll (带后缀的全称)

caption为控件在界面显示的名称

identity 为唯一标识,格式为类库名称 + 命令对象名称,即 PIE.ControlsTest.VectorCommand 代码中通过identity找到对应命令控件

Image 为插件的背景图片名称,图片放置位置为安装路径目录下的【Res】文件夹下

2-19: 插件控件背景图片设置

其中标签项page、group、item对应界面上的控件如下所示

2-20: 界面与配置文件对应关系

3.3.3  效果展示

2-21: 效果展示