arcmapBaseCommand 类加载的生命周期
在 ArcGIS 开发中,BaseCommand
类提供了命令(Command)生命周期管理的基础结构。这个生命周期主要通过一些重写的方法来体现,例如 OnCreate
和 OnClick
。以下是对基类方法作为生命周期管理机制的详细说明。
基类方法的生命周期含义
BaseCommand
是一个抽象类,用于在 ArcMap 中定义自定义命令。其核心生命周期方法包括:
1. 构造函数(ZoomToLayer
构造方法)
- 调用时机:
- 当 ArcGIS 环境加载插件时调用。
- 功能:
- 定义命令的基本属性,包括类别(
m_category
)、标题(m_caption
)、提示信息(m_toolTip
)等。 - 加载图标资源用于工具栏显示。
- 定义命令的基本属性,包括类别(
- 作用:
- 设置命令的静态特性,这是生命周期的起点。
2. OnCreate
方法
- 调用时机:
- 当用户首次点击命令或工具时由 ArcGIS 环境调用。
- 功能:
- 初始化与 ArcGIS 环境的连接。
- 检查当前
hook
是否为IMxApplication
(确认命令在 ArcMap 中有效)。 - 启用或禁用命令(通过
base.m_enabled
控制)。
- 作用:
- 完成命令的动态绑定和环境验证。
3. OnClick
方法
- 调用时机:
- 当用户点击命令按钮时触发。
- 功能:
- 定义命令的主要执行逻辑。
- 在这个示例中,
OnClick
方法通过调用NeuForm
打开一个自定义窗体。
- 作用:
- 实现具体功能,是命令生命周期中最核心的部分。
完整生命周期顺序
- 注册和加载阶段:
- 通过 COM 注册 (
RegisterFunction
) 将命令注册到 ArcGIS 环境。 - 插件被加载时调用构造函数,初始化命令的静态信息。
- 通过 COM 注册 (
- 创建阶段:
OnCreate
方法在命令激活时调用,完成与 ArcGIS 环境的关联。
- 运行阶段:
- 用户点击命令后,
OnClick
被触发,执行自定义逻辑。
- 用户点击命令后,
- 卸载阶段(可选):
- 插件从 ArcGIS 环境中移除时调用
UnregisterFunction
,清理资源。
- 插件从 ArcGIS 环境中移除时调用
本示例中的变量作用分析
m_application
:- 通过
OnCreate
方法绑定的IApplication
对象,表示 ArcMap 的主应用程序接口。 - 用于获取文档对象、地图对象等。
- 通过
m_pDoc
:- 表示当前活动的
IMxDocument
(地图文档)。 - 包含地图和图层的上下文信息。
- 表示当前活动的
NeuForm
:- 自定义窗体类,通过
OnClick
方法实例化并显示,提供用户交互功能。
- 自定义窗体类,通过
hook
:- ArcGIS 环境传入的对象,用于验证和绑定当前应用程序。
生命周期关键点总结
- 构造函数初始化命令的静态特性。
OnCreate
动态绑定 ArcGIS 环境,是命令运行的前置条件。OnClick
负责定义用户交互后的逻辑,是核心执行逻辑所在。