18.04.2015 Views

ArcGIS Engine Developer Guide

ArcGIS Engine Developer Guide

ArcGIS Engine Developer Guide

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

BUILDING APPLICATIONS WITH C++ AND CONTROL WIDGETS<br />

10. Clean up the transform events in MapViewer.cpp’s CloseAppCallback.<br />

// End event listening<br />

g_ipPageLayoutControlEventHelper->UnadviseEvents();<br />

g_ipPageLayoutControlEventHelper->Shutdown();<br />

g_ipPageLayoutControlEventHelper = 0;<br />

delete g_pageLayoutEvents;<br />

g_ipTOCControlEventHelper->UnadviseEvents();<br />

g_ipTOCControlEventHelper->Shutdown();<br />

g_ipTOCControlEventHelper = 0;<br />

delete g_tocEvents;<br />

g_ipTransEventHelper->UnadviseEvents();<br />

g_ipTransEventHelper->Shutdown();<br />

g_ipTransEventHelper = 0;<br />

delete g_transEvents;<br />

11. Update the makefile to reflect the new source file. Also, add a dependencies<br />

list for TransformEvents.o and add the TransformEvents class to the<br />

PageLayoutControlEvent and MapViewer dependencies lists.<br />

12. To do the actual drawing of the symbol on the MapControl, you need to<br />

listen for the MapControl’s OnAfterDraw event. You will implement an event<br />

class for the MapControl as you have done the PageLayoutControl and<br />

TOCControl. This class will need to know about the global MapControl,<br />

extent, and fill symbol. Start with a new file, MapControlEvents.h:<br />

#ifndef __MAPCONTROLEVENTS_H_<br />

#define __MAPCONTROLEVENTS_H_<br />

// ArcObjects Headers<br />

// <strong>Engine</strong><br />

#include <br />

// Controls<br />

#include <br />

extern IMapControl3Ptr g_ipMapControl;<br />

extern IEnvelopePtr g_ipCurrentExtent;<br />

extern IFillSymbolPtr g_ipFillSymbol;<br />

class MapControlEvents : public IMapControlEvents2Helper<br />

{<br />

public:<br />

// IUnknown<br />

IUNKNOWN_METHOD_DEFS<br />

// IMapControlEvents<br />

void OnAfterDraw(VARIANT display, long viewDrawPhase);<br />

void OnAfterScreenDraw(long hdc);<br />

void OnBeforeScreenDraw(long hdc);<br />

void OnDoubleClick(long button, long shift, long x, long y,<br />

double mapX,double mapY);<br />

void OnExtentUpdated(VARIANT displayTransformation,<br />

388 • <strong>ArcGIS</strong> <strong>Engine</strong> <strong>Developer</strong> <strong>Guide</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!