⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapperlayerview.cpp

📁 vc 和mapobjects地理信息系统组件开发 很有启发意义和参考价值
💻 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 + -