• IHookHelper的用法


    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对象 

    Provides access to members needed when developing commands to work with the MapControl, PageLayoutControl, ArcMap, and custom controls and applications.

    Product Availability

    Available with ArcGIS Engine.

    Description

    Use the IHookHelper interface to return the ActiveView, PageLayout or FocusMap of the hook passed to the ICommand::OnCreate event regardless of whether the hook is a MapControl, PageLayoutControl, ToolbarControl or ArcMap.

  • 相关阅读:
    辅助构造器
    pycharm、webstorm和idea激活码
    Executor
    生产者和消费者模型
    Master和worker模式
    Future模式
    记事本中快速查看数字对应的ASCII
    C#中时间戳和日期相互转换
    Dos命令调用FlashFXP上传文件
    curl 上传文件
  • 原文地址:https://www.cnblogs.com/arxive/p/6262434.html
Copyright © 2020-2023  润新知