📄 eyemap1.cpp
字号:
// EyeMap1.cpp : implementation file
//
#include "stdafx.h"
#include "MapNavigate.h"
#include "EyeMap1.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CEyeMap dialog
CEyeMap::CEyeMap(CWnd* pParent /*=NULL*/)
: CDialog(CEyeMap::IDD, pParent)
{
//{{AFX_DATA_INIT(CEyeMap)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CEyeMap::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEyeMap)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEyeMap, CDialog)
//{{AFX_MSG_MAP(CEyeMap)
ON_COMMAND(ID_TRACE, OnTrace)
ON_COMMAND(ID_ZOOMINOUT, OnZoominout)
ON_COMMAND(ID_EYEBACKGROUND, OnEyebackground)
ON_WM_CLOSE()
ON_WM_SIZE()
ON_MESSAGE(WM_MAPCHANGING,OnChangEye)
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CEyeMap, CDialog)
ON_EVENT(CEyeMap, 112, 3 /* ToolUsed */, OnToolUsedMap, VTS_I2 VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_BOOL VTS_BOOL VTS_PBOOL)
ON_EVENT(CEyeMap, 112, -606 /* MouseMove */, OnMouseMoveMap, VTS_I2 VTS_I2 VTS_R4 VTS_R4)
ON_EVENT(CEyeMap, 112, -605 /* MouseDown */, OnMouseDownMap, VTS_I2 VTS_I2 VTS_R4 VTS_R4)
// ON_EVENT(CEyeMap, 101, -607 /* MouseUp */, OnMouseUpMap1, VTS_I2 VTS_I2 VTS_R4 VTS_R4)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEyeMap message handlers
void CEyeMap::OnTrace()
{
// TODO: Add your command handler code here
currentoper = 0;
EyeMap.SetCurrentTool(1000);
EyeMap.SetMousePointer(miCrossCursor);
}
void CEyeMap::OnZoominout()
{
// TODO: Add your command handler code here
currentoper = 1;
EyeMap.CreateCustomTool(100,miToolTypeMarquee,miRectSelectCursor);
EyeMap.SetCurrentTool(100);
EyeMap.SetMousePointer(miRectSelectCursor);
}
void CEyeMap::OnEyebackground()
{
// TODO: Add your command handler code here
long color = EyeMap.GetBackColor();
CColorDialog dlg(color);
if(dlg.DoModal()==IDOK)
{
long setcolor = dlg.GetColor();
EyeMap.SetBackColor(setcolor);
m_backcolor = setcolor;
}
}
BOOL CEyeMap::Create()
{
return CDialog::Create(CEyeMap::IDD);
}
void CEyeMap::Init()
{
EyeMap.SetMousePointer(miCrossCursor);
CMapXLayer lyr = EyeMap.GetLayers().Item("pan");
long count = lyr.AllFeatures().GetCount();
for(int i=1;i<=count;i++)
{
lyr.DeleteFeature(lyr.AllFeatures().Item(i));
}
CMapXRectangle rec;
rec = map->GetBounds();
double x1 = rec.GetXMin();
double y1 = rec.GetYMax();
double x2 = rec.GetXMax();
double y2 = rec.GetYMin();
width = x2-x1;
height = y1-y2;
CMapXPoints points;
CMapXPoint point;
points.CreateDispatch(points.GetClsid());
point.CreateDispatch(point.GetClsid());
point.Set(x1,y1);
points.Add(point);
point.Set(x2,y1);
points.Add(point);
point.Set(x2,y2);
points.Add(point);
point.Set(x1,y2);
points.Add(point);
VARIANT v;
v.vt = VT_DISPATCH;
v.pdispVal = points.m_lpDispatch;
v.pdispVal->AddRef();
CMapXStyle sty;
sty.CreateDispatch(sty.GetClsid());
sty.SetRegionBorderWidth(3);
sty.SetRegionBorderColor(RGB(39,216,57));
sty.SetRegionPattern(miPatternNoFill);
sty.SetRegionTransparent(1);
VARIANT t;
t.vt = VT_DISPATCH;
t.pdispVal = sty.m_lpDispatch;
t.pdispVal->AddRef();
CMapXFeature ftr;
ftr = EyeMap.GetFeatureFactory().CreateRegion(v,t);
lyr.AddFeature(ftr);
}
LRESULT CEyeMap::OnChangEye(WPARAM wParam,LPARAM lParam)
{
CMapXLayer lyr = EyeMap.GetLayers().Item("pan");
long count = lyr.AllFeatures().GetCount();
for(int i=1;i<=count;i++)
{
lyr.DeleteFeature(lyr.AllFeatures().Item(i));
}
CMapXRectangle rec;
rec = map->GetBounds();
double x1 = rec.GetXMin();
double y1 = rec.GetYMax();
double x2 = rec.GetXMax();
double y2 = rec.GetYMin();
width = x2-x1;
height = y1-y2;
CMapXPoints points;
CMapXPoint point;
points.CreateDispatch(points.GetClsid());
point.CreateDispatch(point.GetClsid());
point.Set(x1,y1);
points.Add(point);
point.Set(x2,y1);
points.Add(point);
point.Set(x2,y2);
points.Add(point);
point.Set(x1,y2);
points.Add(point);
VARIANT v;
v.vt = VT_DISPATCH;
v.pdispVal = points.m_lpDispatch;
v.pdispVal->AddRef();
CMapXStyle sty;
sty.CreateDispatch(sty.GetClsid());
sty.SetRegionBorderWidth(2);
sty.SetRegionBorderColor(RGB(39,216,57));
sty.SetRegionPattern(miPatternNoFill);
sty.SetRegionTransparent(1);
VARIANT t;
t.vt = VT_DISPATCH;
t.pdispVal = sty.m_lpDispatch;
t.pdispVal->AddRef();
CMapXFeature ftr;
ftr = EyeMap.GetFeatureFactory().CreateRegion(v,t);
lyr.AddFeature(ftr);
return 0L;
}
void CEyeMap::OnToolUsedMap(short ToolNum, double X1, double Y1, double X2, double Y2, double Distance, BOOL Shift, BOOL Ctrl, BOOL FAR* EnableDefault)
{
// TODO: Add your control notification handler code here
if(ToolNum==100)
{
CMapXLayer lyr = EyeMap.GetLayers().Item("pan");
long count = lyr.AllFeatures().GetCount();
for(int i=1;i<=count;i++)
{
lyr.DeleteFeature(lyr.AllFeatures().Item(i));
}
width = X2-X1;
height = Y1-Y2;
CMapXPoints points;
CMapXPoint point;
points.CreateDispatch(points.GetClsid());
point.CreateDispatch(point.GetClsid());
point.Set(X1,Y1);
points.Add(point);
point.Set(X2,Y1);
points.Add(point);
point.Set(X2,Y2);
points.Add(point);
point.Set(X1,Y2);
points.Add(point);
VARIANT v;
v.vt = VT_DISPATCH;
v.pdispVal = points.m_lpDispatch;
v.pdispVal->AddRef();
CMapXStyle sty;
sty.CreateDispatch(sty.GetClsid());
sty.SetRegionBorderWidth(3);
sty.SetRegionPattern(miPatternNoFill);
sty.SetRegionBorderColor(RGB(39,216,57));
sty.SetRegionTransparent(1);
VARIANT t;
t.vt = VT_DISPATCH;
t.pdispVal = sty.m_lpDispatch;
t.pdispVal->AddRef();
CMapXFeature ftr;
ftr = EyeMap.GetFeatureFactory().CreateRegion(v,t);
lyr.AddFeature(ftr);
CMapXRectangle rec;
rec.CreateDispatch(rec.GetClsid());
rec.Set(X1,Y1,X2,Y2);
map->SetBounds(rec);
}
}
void CEyeMap::InitMap(CMapX *pMap)
{
map = pMap;
}
void CEyeMap::OnMouseDownMap(short Button, short Shift, float X, float Y)
{
// TODO: Add your control notification handler code here
currentoper=1;
CMapXLayer lyr = EyeMap.GetLayers().Item("pan");
long count = lyr.AllFeatures().GetCount();
for(int i=1;i<=count;i++)
{
lyr.DeleteFeature(lyr.AllFeatures().Item(i));
}
float screenX,screenY;
double x,y;
screenX = X;
screenY = Y;
EyeMap.ConvertCoord(&screenX,&screenY,&x,&y,1);
CMapXPoints points;
CMapXPoint point;
points.CreateDispatch(points.GetClsid());
point.CreateDispatch(point.GetClsid());
point.Set(x-width/2,y+height/2);
points.Add(point);
point.Set(x+width/2,y+height/2);
points.Add(point);
point.Set(x+width/2,y-height/2);
points.Add(point);
point.Set(x-width/2,y-height/2);
points.Add(point);
VARIANT v;
v.vt = VT_DISPATCH;
v.pdispVal = points.m_lpDispatch;
v.pdispVal->AddRef();
CMapXStyle sty;
sty.CreateDispatch(sty.GetClsid());
sty.SetRegionBorderWidth(3);
sty.SetRegionBorderColor(RGB(39,216,57));
sty.SetRegionPattern(miPatternNoFill);
sty.SetRegionTransparent(1);
VARIANT t;
t.vt = VT_DISPATCH;
t.pdispVal = sty.m_lpDispatch;
t.pdispVal->AddRef();
CMapXFeature ftr;
ftr = EyeMap.GetFeatureFactory().CreateRegion(v,t);
lyr.AddFeature(ftr);
CMapXRectangle rec;
rec.CreateDispatch(rec.GetClsid());
rec.Set(x-width/2,y+height/2,x+width/2,y-height/2);
map->SetBounds(rec);
}
void CEyeMap::OnMouseMoveMap(short Button, short Shift, float X, float Y)
{
// TODO: Add your control notification handler code here
if(currentoper==0)
{
CMapXLayer lyr = EyeMap.GetLayers().Item("pan");
long count = lyr.AllFeatures().GetCount();
for(int i=1;i<=count;i++)
{
lyr.DeleteFeature(lyr.AllFeatures().Item(i));
}
float screenX,screenY;
double x,y;
screenX = X;
screenY = Y;
EyeMap.ConvertCoord(&screenX,&screenY,&x,&y,1);
CMapXPoints points;
CMapXPoint point;
points.CreateDispatch(points.GetClsid());
point.CreateDispatch(point.GetClsid());
point.Set(x-width/2,y+height/2);
points.Add(point);
point.Set(x+width/2,y+height/2);
points.Add(point);
point.Set(x+width/2,y-height/2);
points.Add(point);
point.Set(x-width/2,y-height/2);
points.Add(point);
VARIANT v;
v.vt = VT_DISPATCH;
v.pdispVal = points.m_lpDispatch;
v.pdispVal->AddRef();
CMapXStyle sty;
sty.CreateDispatch(sty.GetClsid());
sty.SetRegionBorderWidth(3);
sty.SetRegionBorderColor(RGB(39,216,57));
sty.SetRegionPattern(miPatternNoFill);
sty.SetRegionTransparent(1);
VARIANT t;
t.vt = VT_DISPATCH;
t.pdispVal = sty.m_lpDispatch;
t.pdispVal->AddRef();
CMapXFeature ftr;
ftr = EyeMap.GetFeatureFactory().CreateRegion(v,t);
lyr.AddFeature(ftr);
CMapXRectangle rec;
rec.CreateDispatch(rec.GetClsid());
rec.Set(x-width/2,y+height/2,x+width/2,y-height/2);
map->SetBounds(rec);
}
}
void CEyeMap::OnClose()
{
// TODO: Add your message handler code here and/or call default
if(pView!=NULL)
this->DestroyWindow();
CDialog::OnClose();
}
void CEyeMap::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
EyeMap.MoveWindow(0,0,cx,cy);
// TODO: Add your message handler code here
}
BOOL CEyeMap::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
Init();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
int CEyeMap::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if(EyeMap.Create(NULL,WS_VISIBLE,CRect(0,0,0,0),this,112))
{
EyeMap.SetGeoSet("");
int i=0;
while(strMap[i]!="-1")
{
EyeMap.GetLayers().Add(strMap[i]);
i++;
}
EyeMap.SetBackColor(m_backcolor);
EyeMap.SetInfotipSupport(0);
EyeMap.SetBounds(EyeMap.GetLayers().GetBounds());
EyeMap.GetTitle().SetVisible(0);
COleVariant sd;
CMapXLayer layer;
CMapXDataset ds;
layer = EyeMap.GetLayers().Item(1);
sd.vt = VT_DISPATCH;
sd.pdispVal = layer.m_lpDispatch;
sd.pdispVal->AddRef();
ds = EyeMap.GetDatasets().Add(miDataSetLayer,sd,EyeMap.GetLayers().Item(1).GetName());
CMapXLayerInfo lyrinfo;
lyrinfo.CreateDispatch(lyrinfo.GetClsid());
lyrinfo.SetType(miLayerInfoTypeTemp);
VARIANT vlayername;
vlayername.vt = VT_BSTR;
vlayername.bstrVal = CString("pan").AllocSysString();
lyrinfo.AddParameter("Name",vlayername);
VARIANT m_Fields;
CMapXFields n_Fields;
n_Fields.CreateDispatch(n_Fields.GetClsid());
n_Fields=ds.GetFields();
m_Fields.vt = VT_DISPATCH;
m_Fields.pdispVal = n_Fields.m_lpDispatch;
m_Fields.pdispVal->AddRef();
lyrinfo.AddParameter("Fields", m_Fields);
VARIANT vName;
vName.vt = VT_BSTR;
vName.bstrVal = CString("MemTable").AllocSysString();
lyrinfo.AddParameter("TableStorageType",vName);
EyeMap.GetLayers().Add(lyrinfo.m_lpDispatch);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -