天天看點

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

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。

    本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/6262434.html,如需轉載請自行聯系原作者

繼續閱讀