📄 mapperlayerview.cpp
字号:
// MapperLayerView.cpp : implementation file
//
#include "stdafx.h"
#include "mapper.h"
#include "MapperLayerView.h"
#include "LayerRecordDlg.h"
#include "pointsetupdlg.h"
#include "LineSetupDlg.h"
#include "polysetupdlg.h"
#include "imagesetupdlg.h"
#include "dataeditdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMapperLayerView
IMPLEMENT_DYNCREATE(CMapperLayerView, CFormView)
CMapperLayerView::CMapperLayerView()
: CFormView(CMapperLayerView::IDD)
{
//{{AFX_DATA_INIT(CMapperLayerView)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CMapperLayerView::~CMapperLayerView()
{
}
void CMapperLayerView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMapperLayerView)
DDX_Control(pDX, IDC_LEGEND, m_legend);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMapperLayerView, CFormView)
//{{AFX_MSG_MAP(CMapperLayerView)
ON_WM_SIZE()
ON_COMMAND(ID_LAYER_REMOVE, OnLayerRemove)
ON_COMMAND(ID_LAYER_FULL, OnLayerFull)
ON_COMMAND(ID_LAYER_RECORD, OnLayerRecord)
ON_COMMAND(ID_LAYER_SETUP, OnLayerSetup)
ON_COMMAND(ID_LAYER_RECORD_EDIT, OnLayerRecordEdit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMapperLayerView diagnostics
#ifdef _DEBUG
void CMapperLayerView::AssertValid() const
{
CFormView::AssertValid();
}
void CMapperLayerView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMapperLayerView message handlers
void CMapperLayerView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
//变换TREE大小
if(m_legend.m_hWnd!=NULL)
m_legend.SetWindowPos(0,0,0,cx,cy,SWP_NOZORDER);
}
BEGIN_EVENTSINK_MAP(CMapperLayerView, CFormView)
//{{AFX_EVENTSINK_MAP(CMapperLayerView)
ON_EVENT(CMapperLayerView, IDC_LEGEND, 6 /* AfterSetLayerVisible */, OnAfterSetLayerVisibleLegend, VTS_PI2 VTS_PBOOL)
ON_EVENT(CMapperLayerView, IDC_LEGEND, 3 /* MouseDown */, OnMouseDownLegend, VTS_PI2 VTS_PI2 VTS_PI2 VTS_PR4 VTS_PR4)
ON_EVENT(CMapperLayerView, IDC_LEGEND, 1 /* LayerDblClick */, OnLayerDblClickLegend, VTS_PI2)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CMapperLayerView::OnAfterSetLayerVisibleLegend(short FAR* Index, BOOL FAR* isVisible)
{
//更新显示
theApp.GetMapPane()->m_map.Refresh();
}
void CMapperLayerView::OnMouseDownLegend(short FAR* Index, short FAR* Button, short FAR* Shift, float FAR* X, float FAR* Y)
{
//弹出菜单
if((*Button==2)&&(*Index>=0))
{
CPoint pt;
::GetCursorPos(&pt);
CMenu menu;
menu.LoadMenu(IDR_LAYER);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,
pt.x,pt.y,this);
}
}
void CMapperLayerView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
m_pWnd=(CMainFrame *)AfxGetMainWnd();
}
void CMapperLayerView::OnLayerRemove()
{
short n=m_legend.getActiveLayer();
if(n>=0)
{
theApp.GetMapPane()->m_map.GetLayers().Remove(n);
Eng_SetLegend(theApp.GetMapPane()->m_map,m_legend);
}
}
void CMapperLayerView::OnLayerFull()
{
short iLayer=m_legend.getActiveLayer();
if(iLayer<0)
return;
CMoLayers layers=theApp.GetMapPane()->m_map.GetLayers();
if(GetLayerType(layers,iLayer)==moMapLayer)
{
CMoMapLayer layer=layers.Item(COleVariant(iLayer));
CMoRectangle r=layer.GetExtent();
theApp.GetMapPane()->m_map.SetExtent(r);
}
else
{
CMoImageLayer layer=layers.Item(COleVariant(iLayer));
CMoRectangle r=layer.GetExtent();
theApp.GetMapPane()->m_map.SetExtent(r);
}
theApp.GetMapPane()->m_map.Refresh();
}
void CMapperLayerView::OnLayerRecord()
{
short iLayer=m_legend.getActiveLayer();
if(iLayer<0)
return;
CMoMapLayer layer(theApp.GetMapPane()->m_map.GetLayers().Item(COleVariant(iLayer)));
CLayerRecordDlg lrd;
lrd.m_sLayer= "图层:"+layer.GetName();
lrd.m_rs=layer.GetRecords();
lrd.DoModal();
}
void CMapperLayerView::OnLayerSetup()
{
short iLayer=m_legend.getActiveLayer();
if(iLayer<0)
return;
Sub_LayerSetup(iLayer);
}
void CMapperLayerView::OnLayerDblClickLegend(short FAR* Index)
{
Sub_LayerSetup(*Index);
}
void CMapperLayerView::Sub_LayerSetup(short index)
{
short iLayer=index;
if(iLayer<0)
return;
if(GetLayerType(theApp.GetMapPane()->m_map.GetLayers(),iLayer)==moMapLayer)
{
CMoMapLayer layer(theApp.GetMapPane()->m_map.GetLayers().Item(COleVariant(iLayer)));
switch(layer.GetShapeType())
{
case moPoint:
{
CPointSetupDlg psd;
psd.m_oOutlineColor.SetColor(layer.GetSymbol().GetOutlineColor());
psd.m_nOutline=layer.GetSymbol().GetOutline();
psd.m_oPointColor.SetColor(layer.GetSymbol().GetColor());
psd.m_nPointList=layer.GetSymbol().GetStyle();
psd.m_nPointSize=layer.GetSymbol().GetSize();
if(psd.DoModal()!=IDOK)
return;
layer.GetSymbol().SetOutlineColor(psd.m_oOutlineColor.GetColor());
layer.GetSymbol().SetOutline(psd.m_nOutline);
layer.GetSymbol().SetColor(psd.m_oPointColor.GetColor());
layer.GetSymbol().SetStyle(psd.m_nPointList);
layer.GetSymbol().SetSize(psd.m_nPointSize);
theApp.GetMapPane()->m_map.Refresh();
}
break;
case moLine:
{
CLineSetupDlg lsd;
lsd.m_oLineColor.SetColor(layer.GetSymbol().GetColor());
lsd.m_nLineWidth=layer.GetSymbol().GetSize();
lsd.m_nLineStyle=layer.GetSymbol().GetStyle();
if(lsd.DoModal()!=IDOK)
return;
layer.GetSymbol().SetColor(lsd.m_oLineColor.GetColor());
layer.GetSymbol().SetSize(lsd.m_nLineWidth);
layer.GetSymbol().SetStyle(lsd.m_nLineStyle);
theApp.GetMapPane()->m_map.Refresh();
}
break;
case moPolygon:
{
CPolySetupDlg psd;
psd.m_nFillList=layer.GetSymbol().GetStyle();
psd.m_nOutlineWidth=layer.GetSymbol().GetSize();
psd.m_oFillColor.SetColor(layer.GetSymbol().GetColor());
psd.m_oOutlineColor.SetColor(layer.GetSymbol().GetOutlineColor());
psd.m_nOutline=layer.GetSymbol().GetOutline();
if(psd.DoModal()!=IDOK)
return;
layer.GetSymbol().SetStyle(psd.m_nFillList);
layer.GetSymbol().SetSize(psd.m_nOutlineWidth);
layer.GetSymbol().SetColor(psd.m_oFillColor.GetColor());
layer.GetSymbol().SetOutlineColor(psd.m_oOutlineColor.GetColor());
layer.GetSymbol().SetOutline(psd.m_nOutline);
theApp.GetMapPane()->m_map.Refresh();
}
break;
}
}
if(GetLayerType(theApp.GetMapPane()->m_map.GetLayers(),iLayer)==moImageLayer)
{
CMoImageLayer layer(theApp.GetMapPane()->m_map.GetLayers().Item(COleVariant(iLayer)));
CImageSetupDlg isd;
isd.m_bTransparent=layer.GetTransparent();
isd.m_oColor.SetColor(layer.GetTransparentColor());
isd.m_sInfo.Format("图像宽度:%d\n图像长度:%d",layer.GetColumns(),layer.GetRows());
if(isd.DoModal()==IDOK)
{
layer.SetTransparent(isd.m_bTransparent);
layer.SetTransparentColor(isd.m_oColor.GetColor());
theApp.GetMapPane()->m_map.Refresh();
}
}
}
void CMapperLayerView::OnLayerRecordEdit()
{
short iLayer=m_legend.getActiveLayer();
if(iLayer<0)
return;
CMoMapLayer layer(theApp.GetMapPane()->m_map.GetLayers().Item(COleVariant(iLayer)));
CDataEditDlg ded;
// lrd.m_sLayer= "图层:"+layer.GetName();
ded.m_rs=layer.GetRecords();
ded.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -