zoukankan      html  css  js  c++  java
  • IHookHelper的使用

    一、IHookHelper 主要在用在自定义类型于AE带的的ICommand或ITool等,

    1.实例化IHookHelper 对象:
    IHookHelper m_hookHelper = new HookHelperClass();
    m_hookHelper.Hook = this.axMapControl1.Object ;这样就可以把AxMapControl传递给其它要用到的地方。

    2.通过IHookHelper,获取地图控件和主窗体:

    IntPtr pHandle = new IntPtr (m_hookHelper.ActiveView.ScreenDisplay.hWnd);
    axMapControl1 = System.Windows.Forms.Form.FromHandle(pHandle) as AxMapControl;//对这个地图控件对象操作,会直接反应到主窗体的地图控件上

    Form. MainForm. = Form.FromHandle(pHandle).FindForm();//这里的主窗体对象之后运行时能起作用,MainForm. 不能直接访问到主窗体里的变量。

    3.通过IHookHelper,获取IActiveView和IMap对象

    再通过IHookHelper.ActiveView和IHookHelper.FocusMap属性来获取IActiveView和IMap对象,通过这两个接口进行更一步的操作.


    4.通过IHookHelper,操作地图

    IHookActions hookActions= m_hookHelper as IHookHelper;
    获取IHookActions,再通过IHookActions进行Flash,Pan,ZoomTo操作.

    二、HOOK实际是一个对象传出的自身的引用或者叫指针或者叫句柄。
    例如一个程序,加载一个dll内的对象时通过把Hook传递给要调用的对象,
    这样dll内的对象就得到了应用程序传递给他的这个hook,
    对象可以通过这个hook查看程序内部的结构。
    实际实现时就是对象间传递指向自身的指针传递给另一个对象。

    IHookHelper m_hookHelper=new HookHelperClass();
    m_hookHelper.Hook=axMapControl1.Object;
     //这样就获得了axMapControl1控件的一个引用
    然后通过m_hookHelper.ActiveView可以获得原axMapControl1的ActiveView项,
    用m_hookHelper.FocusMap可以获得IMap对象

    https://www.cnblogs.com/c-gis/articles/2263534.html

  • 相关阅读:
    JAVA基础知识之多线程——三种实现多线程的方法及区别
    JAVA基础知识之Collections工具类
    JAVA基础知识之Map集合
    JAVA基础知识之Queue集合
    JAVA基础知识之List集合
    JAVA基础知识之Set集合
    Java基础知识之集合(容器)简介
    JAVA中STL使用
    博客园皮肤
    RMQ
  • 原文地址:https://www.cnblogs.com/wgj-blog/p/12169717.html
Copyright © 2011-2022 走看看