本帖最后由 sishui198 于 2011-11-19 08:31 编辑 http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=105152&extra=page%3D1%26amp%3Bfilter%3Ddigest com方式定制 前面个两篇帖子分别对桌面定制开发的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就可用.
l命令和操作对象的关联 在COM方式中,有一个Oncreate函数,这个函数是在构造函数调用之后也是由系统调用,并传入一个Hook,这个Hook就是命令要作用的对象,因此这个命令能不能作用于这个对象,就看能不能和Hook关联起来,如果我们给ArcMap上定制一个命令,这个Hook就是ArcMap
而在Add-In中,Oncreate函数不在存在,那么又是怎么关联的呢?我们在选择Add-In模板的时候,比如选择了ArcMap,那么向导为我们自动生成了一个ArcMap的静态类,这个静态了封装了很多接口,通过这个静态类我们就可以随心所欲,也就是说这个静态类使我们获取相关对象的入口,下面是ArcMap这个静态类相关代码:
在构造函数中我们可以直接使用这个对象获取相关信息,如下:
l事件响应
而在Add-In中则是下面的,没什么区别吧?
我们大体上说了迁移,通过这个例子我们可以看出Add-In的代码更少?怎么样心动了么? |