📄 layerinfodlg.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 + -