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 />

VARIANT_BOOL sizeChanged, VARIANT newEnvelope);<br />

void OnFullExtentUpdated(VARIANT displayTransformation,<br />

VARIANT newEnvelope);<br />

void OnKeyDown(long keyCode, long shift);<br />

void OnKeyUp(long keyCode, long shift);<br />

void OnMapReplaced(VARIANT newMap);<br />

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

double mapX, double mapY);<br />

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

double mapX, double mapY);<br />

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

double mapX, double mapY);<br />

void OnOleDrop(esriControlsDropAction dropAction, VARIANT<br />

dataObjectHelper, long* effect, long button, long<br />

shift, long x, long y);<br />

void OnSelectionChanged();<br />

void OnViewRefreshed(VARIANT ActiveView, long viewDrawPhase,<br />

VARIANT layerOrElement, VARIANT envelope);<br />

};<br />

#endif // __MAPCONTROLEVENTS_H_<br />

13. Implement those events in MapControlEvents.cpp. Leave all of the functions<br />

blank except OnAfterDraw, in which the rectangle will be drawn on the<br />

MapControl.<br />

#include "MapControlEvents.h"<br />

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

{<br />

if (g_ipCurrentExtent == 0)<br />

return;<br />

// If the foreground phase has drawn, viewDrawPhase will be 32<br />

esriViewDrawPhase drawPhase = esriViewDrawPhase(viewDrawPhase);<br />

if (drawPhase == esriViewForeground)<br />

{<br />

// Draw the shape on the MapControl<br />

CComVariant varSymbol = CComVariant(g_ipFillSymbol);<br />

g_ipMapControl->DrawShape((IGeometryPtr) g_ipCurrentExtent,<br />

&varSymbol);<br />

}<br />

}<br />

void MapControlEvents::OnAfterScreenDraw(long hdc)<br />

{<br />

}<br />

void MapControlEvents::OnBeforeScreenDraw(long hdc)<br />

{<br />

}<br />

Chapter 6 • <strong>Developer</strong> scenarios • 389

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

Saved successfully!

Ooh no, something went wrong!