AE中IHookHelper的用法 来自http://blog.sina.com.cn/s/blog_6faf711d0100xs1x.html

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

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.

时间: 2024-12-21 21:58:45

AE中IHookHelper的用法 来自http://blog.sina.com.cn/s/blog_6faf711d0100xs1x.html的相关文章

教你如何查看CAD文件是哪个版本的来自http://blog.sina.com.cn/s/blog_4c9fa4dd0101il1v.html

教你如何查看CAD文件是哪个版本的 http://blog.sina.com.cn/s/blog_4c9fa4dd0101il1v.html (2013-03-10 22:24:52) 转载▼ 标签: 教育 分类: AutoCAD实用技巧 在工作中会遇到打开一张图纸时出现“图形文件无效”的提示,大部都是因为用低版本软件打开了高版本的图纸.而又如何真正确认该文件是用哪个版本创建的,以下教大家一个辨别的方法.正常的DWG文件可以通过记事本或者其他文本软件打开,看开头几个字节就知道版本号了 Versi

用JAVA发送邮件 注:(原文来自http://blog.sina.com.cn/liuanzhi)

要用Java发送邮件,除过JDK本身的jar包之外,还需要两个额外的jar包:JavaMail和JAF.当然,如果你使用的JavaEE的JDK,那就不用单独去网上下载了,因为JavaEE的JDK中已经自带了这两个jar包.如果你使用的是JavaSE的JDK,那么你需要去Oracle的网站上下载这两个jar包.JavaMail 1.4.5 jar包下载地址是:http://www.oracle.com/technetwork/java/index-138643.html,JAF 1.1.1 jar

c++中的srand()和rand() 转载 自:http://blog.sina.com.cn/s/blog_624c2c4001012f67.html

今天看了同事写的小程序,发现了其中出现了srand()和rand()这两个我以前没有用过的函数,当然从名字可以看出肯定能随机数有关,于是网查资料知这两个函数配合一起使用来产生随机数的,哈哈,又长知识了,现将这两个函数的使用贴过来,以备以后查看使用. 这两个帮助生成伪随机数的函数包含在标准库 中,所以首先需在头文件中包含进来. 注意:在C语言中包含在标准库中.    函数一:int   rand(void):     从srand   (seed)中指定的seed开始,返回一个[seed,   R

MySQL存储过程详解 mysql 存储过程(转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html)

转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和

Matlab read_grib.r4 安装新方法(转自:http://blog.sina.com.cn/s/blog_9f36648b010179s7.html)

最近,打算用Matlab处理些GRIB格式的文件,需要在Matlab中添加read_grib.m文件,其实相当于是添加一个工具箱.read_grib.m的下载见:http://www.renci.org/~bblanton/files/ReadGrib/ 但是,要read_grib.m真正起作用,需要“安装”和“编译”两步. 按照网页上的说法,所谓安装,就是把下载下来的read_grib.r4.tar文件解压,然后将解压后的文件夹路径写到“startup.m”文件中.但是,我的Matlab201

matlab添加M_map工具箱(转 http://blog.sina.com.cn/s/blog_491b86bf0100srt9.html)

之前转载过matlab画世界地图的博文.最近正好用到.首先试了matlab自带的worldmap,感觉画出来的图形不尽如人意,比较杂乱.如下图. 略查阅了些资料,请教了Liangjing,一致推荐m_map.为了达到想要的效果,这次只要不再偷懒,下载M-Map工具箱(http://www.eos.ubc.ca/~rich/map.html)并进行安装.所幸过程比较顺利,现记录如下,回头把画出的效果图再添上.其他matlab的toolbox安装,也可参考进行. ------------------

C语言register关键字—最快的关键字 ---------------转自http://blog.sina.com.cn/s/blog_6a1837e90101128k.html

register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对.你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多register 变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你. 一.皇帝身边的小太监----寄存器 不知道什么是寄存器?那见过太监没有?没有?其实我也没有.没见过不要紧,见过就麻烦大了.^_^,大家都看过古装戏,那些皇帝们要阅读奏章的时候,大臣总是先将奏章交给皇帝旁边的

windows: Access denied for user 'root'@'localhost' .....(转自新浪:http://blog.sina.com.cn/s/blog_40aff6390100jeke.html)

WINDOWS-XP 系统 mysql-5.1.22-noinstall-win32 提示:access denied for user 'root'@'localhost' using password yes 前几天都好好的,今天开机上来提示上面的这个错误,重启 MySQL 还是不可以. 在网上搜索了好久,总算找到详细的操作方法了.为了以后不再浪费时间,把她重新整理放到 Blog 里. 注意我这里的环境是 WINDOWS-XP 系统,LINUX 系统下的操作没有验证过,情况不清楚. 1. 管

已发布13集网站开发技术视频:http://blog.sina.com.cn/s/blog_67d27f340102vf7l.html

已发布13集网站开发技术视频:http://blog.sina.com.cn/s/blog_67d27f340102vf7l.html