图
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:
效果展示