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

📄 layerinfodlg.cpp

📁 vc 和mapobjects地理信息系统组件开发 很有启发意义和参考价值
💻 CPP
字号:
// LayerInfoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "mapper.h"
#include "LayerInfoDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLayerInfoDlg dialog


CLayerInfoDlg::CLayerInfoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLayerInfoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CLayerInfoDlg)
	//}}AFX_DATA_INIT
}


void CLayerInfoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLayerInfoDlg)
	DDX_Control(pDX, IDC_FIELDS, m_oFields);
	DDX_Control(pDX, IDC_INFO, m_oInfo);
	DDX_Control(pDX, IDC_LAYERS, m_oLayers);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLayerInfoDlg, CDialog)
	//{{AFX_MSG_MAP(CLayerInfoDlg)
	ON_NOTIFY(NM_CLICK, IDC_LAYERS, OnClickLayers)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLayerInfoDlg message handlers

BOOL CLayerInfoDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_oLayers.InsertColumn(0,"标题");
	m_oLayers.InsertColumn(1,"图层类型");
	m_oLayers.InsertColumn(2,"数据类型");
	m_oLayers.InsertColumn(3,"状态");
	m_oLayers.InsertColumn(4,"文件");

	m_oLayers.SetColumnWidth(0,100);
	m_oLayers.SetColumnWidth(1,60);
	m_oLayers.SetColumnWidth(2,60);
	m_oLayers.SetColumnWidth(3,40);
	m_oLayers.SetColumnWidth(4,200);
	
	GetLayerInfo();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CLayerInfoDlg::GetLayerInfo()
{
	short i,index;
	CMoLayers layers(theApp.GetMapPane()->m_map.GetLayers());
	short count=layers.GetCount();
	for(i=0;i<count;i++)
	{
		index=m_oLayers.InsertItem(i,theApp.GetLayerPane()->m_legend.GetEntryName(&i));
		
		CMoMapLayer layer=layers.Item(COleVariant(i));
		switch(GetLayerType(layers,i))
		{
		case moMapLayer:
			{
				m_oLayers.SetItemText(i,1,"空间");
				switch(layer.GetShapeType())
				{
					case moPoint:
						m_oLayers.SetItemText(i,2,"点");
						break;
					case moLine:
						m_oLayers.SetItemText(i,2,"线");
						break;
					case moPolygon:
						m_oLayers.SetItemText(i,2,"多边形");
						break;
					default:
						m_oLayers.SetItemText(i,2,"?");
						break;
				}
			}
			break;
		case moImageLayer:
			{
				m_oLayers.SetItemText(i,1,"图像");
				m_oLayers.SetItemText(i,2,"/");
			}
			break;
		}
		if(layer.GetValid())
		{
			m_oLayers.SetItemText(i,3,"正常");
		}
		else
		{
			m_oLayers.SetItemText(i,3,"错误");
		}

		m_oLayers.SetItemText(i,4,layer.GetName());
	}
}

void CLayerInfoDlg::OnClickLayers(NMHDR* pNMHDR, LRESULT* pResult) 
{
	m_oFields.DeleteAllItems();
	int n=m_oLayers.GetNextItem(-1,LVNI_SELECTED);

	CLayerFieldArray lf;
	Eng_GetLayerField(theApp.GetMapPane()->m_map,n,lf);
	CStringArray dp;
	Eng_GetLayerDataPara(theApp.GetMapPane()->m_map,n,dp);

	m_oInfo.ResetContent();
	int i,count=lf.GetSize();
	HTREEITEM hItem;
	CString s;
	for(i=0;i<count;i++)
	{
		hItem=m_oFields.InsertItem(lf[i].szField);

		s=lf[i].szDataType;
		if((s!="长整数")&&(s!="双精度"))
			continue;
	
		s.Format("最小:%19.6lf",lf[i].min);
		m_oFields.InsertItem(s,NULL,NULL,hItem);
		s.Format("最大:%19.6lf",lf[i].max);
		m_oFields.InsertItem(s,NULL,NULL,hItem);
		s.Format("均值:%19.6lf",lf[i].mean);
		m_oFields.InsertItem(s,NULL,NULL,hItem);
		s.Format("总和:%19.6lf",lf[i].sum);
		m_oFields.InsertItem(s,NULL,NULL,hItem);
		s.Format("方差:%19.6lf",lf[i].dev);
		m_oFields.InsertItem(s,NULL,NULL,hItem);
		s.Format("个数:%12ld",lf[i].count);
		m_oFields.InsertItem(s,NULL,NULL,hItem);
	}

	count=dp.GetSize();
	for(i=0;i<count;i++)
	{
		m_oInfo.AddString(dp[i]);
	}
	
	*pResult = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -