桌面定制开发COM方式到Add-In方式的迁移
来源:互联网 发布:隔音毡 知乎 编辑:程序博客网 时间:2024/05/16 04:51
http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=105152 com方式定制
http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=105114 add-in方式
前面个两篇帖子分别对桌面定制开发的COM方式和Add-In方式做了介绍,也通过两个相同的功能让大家感受下,Add-In是新出来的技术,而我们也建议大家使用Add-In这种方式代替以前的COM买方式.这篇我们就讨论迁移,迁移对程序员(其实我没有程序员证的)来说是经常遇到的事情,也很困惑,但是这次请放松心情,因为从COM迁移到Add-In很简单,代码改动很少,很少!
我从下面几个方面说起:
l命令的界面显示图标,类别,名称
l命令是否可用
l命令和操作对象的关联
l事件响应
下面我们从这几个方面介绍下:
l命令的界面显示图标,类别,名称
对于COM方式界面的显示是在构造函数中的相关语句,如下:
而对于Add-In方式,我们知道,我们在选择模板的时候,这些信息是写在了XML文件中,代码与界面的分离,这样让我们的逻辑更清楚.,如下图:
l命令是否可用
在COM方式中,我们可以重写Enable属性,这个属性系统会自动隔500毫秒调用,一下为我们重写Enabled属性,如果图层的个数大于0就可用.
而对于Add-In方式,我们直接在update函数中写,Add-In直接将enable这个属性暴露给我们,因此我们也不用继承,很方便,如下:
l命令和操作对象的关联
在COM方式中,有一个Oncreate函数,这个函数是在构造函数调用之后也是由系统调用,并传入一个Hook,这个Hook就是命令要作用的对象,因此这个命令能不能作用于这个对象,就看能不能和Hook关联起来,如果我们给ArcMap上定制一个命令,这个Hook就是ArcMap
而在Add-In中,Oncreate函数不在存在,那么又是怎么关联的呢?我们在选择Add-In模板的时候,比如选择了ArcMap,那么向导为我们自动生成了一个ArcMap的静态类,这个静态了封装了很多接口,通过这个静态类我们就可以随心所欲,也就是说这个静态类使我们获取相关对象的入口,下面是ArcMap这个静态类相关代码:
在构造函数中我们可以直接使用这个对象获取相关信息,如下:
- IMxDocument pMxd;
- public ArcMapButtonAddin()
- {
- pMxd = ArcMap.Document as IMxDocument;
- }
l事件响应
对于事件的响应几乎一模一样,在COM方式中对于命令通过下面函数:
而在Add-In中则是下面的,没什么区别吧?
- 桌面定制开发COM方式到Add-In方式的迁移
- ArcGIS桌面定制-灵巧的Python Add-in
- MOSS定制,开发方式
- 定制dialog的方式
- 定制dialog的方式
- [Android开发实战]Android添加快捷方式到桌面的两种方式
- ArcGIS桌面开发之Add-in模式
- 福建电大光纤到桌面的布线方式访问系统
- Office COM add-in 开发(一)
- 定制表格的显示方式
- nginx对于XXX.com和XXX.com/index给映射到www.xxx.com的方式
- Selenium的RC方式编写的测试脚本部分迁移到WebDriver方式混用的简单示例
- 创建com对象的方式
- c++ 调用com的方式
- c++ 调用com的方式
- android 定制组件的三种方式
- Ueditor的两种定制方式
- Android定制组件的三种方式
- sql基本操作
- 数据库学习心得第二天:简单的权限了解 ,jdbc简介
- Windows事件驱动机制及消息循环 http://blog.csdn.net/liaoming321/article/details/4605133
- 什么是IP Core?
- Flex Component instantiation life cycle | Flex组件实例化生命周期
- 桌面定制开发COM方式到Add-In方式的迁移
- OpenCV_轮廓的查找、表达、绘制、特性及匹配
- 一个硕士是怎么样发5篇SCI的
- 简单干净的C#方法设计案例:SFCUI.AjaxValue()之三
- 范例-数组排序-比较排序-选择排序升级版:优先级队列
- 安装android ndk r7 时 注意的问题
- Entity Framework菜鸟初飞【3】——Entity Data Model 之 分析
- php知识点复习之正则表达式
- 学会在ASP中使用存储过程 .