在基于AO的ArcGIS二次开发中,OnCreate方法是关键的一环,特别是在创建常用定制命令时。此方法位于HookHelperClass中,它负责建立命令对象与应用程序核心对象之间的通信桥梁,确保命令能在ArcGIS Desktop或独立应用中正常工作。以下是OnCreate方法的详细解释:
1. **HookHelper Class和OnCreate方法**:
- `OnCreate`方法是HookHelperClass中的成员函数,其目的是初始化和验证HookHelper对象。当一个自定义命令被创建时,这个方法会被调用,接收一个hook参数,代表应用程序的上下文或句柄。
2. **勾连对象(HookHelper)的作用**:
- 勾连对象是ESRI提供的组件,用于在命令对象(如ICommand或ITool)与应用程序的核心交互对象(如Desktop的Application对象或MapControl)间建立联系。这是实现命令与应用程序协作的基础。
3. **命令对象与应用程序的通信**:
- 在ArcObjects开发中,OnCreate方法的主要任务是检测和设置钩子,即检查传入的hook是否适用于当前命令。如果钩子无效或者应用程序不支持,命令将自动失效,确保了命令的正确性和一致性。
4. **HookHelper的分类**:
- 存在三种类型的HookHelper:HookHelper、GlobeHookHelper和SceneHookHelper,分别针对不同的ArcGIS控件和应用环境,如MapControl、PageLayoutControl、ToolbarControl以及SceneControl等。
5. **HookHelper的应用场景**:
- HookHelper主要用于创建在ArcMap桌面应用中的自定义MapControl、PageLayoutControl和ToolbarControl的命令。SceneHookHelper则专注于与SceneControl和ArcScene桌面应用的交互。
6. **自定义工具和命令的创建流程**:
- 开发人员首先需要通过HookHelper来实现自定义工具或命令的创建。这包括在OnCreate方法中进行必要的对象验证和设置,确保命令可以在目标环境中正确执行相应的功能。
总结来说,OnCreate方法是ArcGIS二次开发中不可或缺的部分,它通过HookHelper类实现了命令对象与应用程序环境的有效连接,确保了定制命令在不同场景下的稳定运行。理解并熟练运用OnCreate方法对于构建高效且兼容的自定义命令至关重要。