zoukankan      html  css  js  c++  java
  • 桌面定制开发COM方式到AddIn方式的迁移

     桌面定制开发COM方式到Add-In方式的迁移
    本帖最后由 sishui198 于 2011-11-19 08:31 编辑

    http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=105152&extra=page%3D1%26amp%3Bfilter%3Ddigest com方式定制
    http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=105114&extra=page%3D1%26amp%3Bfilter%3Ddigest add-in方式

    前面个两篇帖子分别对桌面定制开发的COM方式和Add-In方式做了介绍,也通过两个相同的功能让大家感受下,Add-In是新出来的技术,而我们也建议大家使用Add-In这种方式代替以前的COM买方式.这篇我们就讨论迁移,迁移对程序员(其实我没有程序员证的)来说是经常遇到的事情,也很困惑,但是这次请放松心情,因为从COM迁移到Add-In很简单,代码改动很少,很少!

    我从下面几个方面说起:

    l命令的界面显示图标,类别,名称

    l命令是否可用

    l命令和操作对象的关联

    l事件响应

    下面我们从这几个方面介绍下:


    l命令的界面显示图标,类别,名称


    对于COM方式界面的显示是在构造函数中的相关语句,如下:

    h1.jpg


    而对于Add-In方式,我们知道,我们在选择模板的时候,这些信息是写在了XML文件中,代码与界面的分离,这样让我们的逻辑更清楚.,如下图:


    h2.jpg

    l命令是否可用

    COM方式中,我们可以重写Enable属性,这个属性系统会自动隔500毫秒调用,一下为我们重写Enabled属性,如果图层的个数大于0就可用.


    h3.jpg


    而对于Add-In方式,我们直接在update函数中写,Add-In直接将enable这个属性暴露给我们,因此我们也不用继承,很方便,如下:


    h4.jpg

    l命令和操作对象的关联

    COM方式中,有一个Oncreate函数,这个函数是在构造函数调用之后也是由系统调用,并传入一个Hook,这个Hook就是命令要作用的对象,因此这个命令能不能作用于这个对象,就看能不能和Hook关联起来,如果我们给ArcMap上定制一个命令,这个Hook就是ArcMap

    h5.jpg


    而在Add-In,Oncreate函数不在存在,那么又是怎么关联的呢?我们在选择Add-In模板的时候,比如选择了ArcMap,那么向导为我们自动生成了一个ArcMap的静态类,这个静态了封装了很多接口,通过这个静态类我们就可以随心所欲,也就是说这个静态类使我们获取相关对象的入口,下面是ArcMap这个静态类相关代码:

    h6.jpg


    在构造函数中我们可以直接使用这个对象获取相关信息,如下:

    1. IMxDocument pMxd;
    2.          public ArcMapButtonAddin()
    3.         {
    4.             pMxd = ArcMap.Document as IMxDocument;
    5.          }
    复制代码

    l事件响应


    对于事件的响应几乎一模一样,在COM方式中对于命令通过下面函数:

    h7.jpg


    而在Add-In中则是下面的,没什么区别吧?

    h8.jpg



    我们大体上说了迁移,通过这个例子我们可以看出Add-In的代码更少?怎么样心动了么?

    1

    评分人数

    • GisLily

  • 相关阅读:
    泛型
    多播委托
    匿名方法
    委托
    正则表达式
    压缩和解压,文件读取练习
    Vue样式绑定
    Vue跑马灯
    Vue中的v-for遍历循环
    Vue框架
  • 原文地址:https://www.cnblogs.com/gisoracle/p/2308395.html
Copyright © 2011-2022 走看看