📄 txtview.cpp
字号:
// TXTView.cpp : implementation file
//
#include "stdafx.h"
#include "LandSoft.h"
#include "TXTView.h"
#include "lsdoc.h"
#include "commctrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTXTView
IMPLEMENT_DYNCREATE(CTXTView, CMultiColumnSortListView)
CTXTView::CTXTView()
{
m_nColNum=0;
m_nLineNum=0;
}
CTXTView::~CTXTView()
{
}
BEGIN_MESSAGE_MAP(CTXTView, CMultiColumnSortListView)
//{{AFX_MSG_MAP(CTXTView)
ON_UPDATE_COMMAND_UI(ID_INDICATOR_BYTES, OnUpdateIndicatorBytes)
ON_UPDATE_COMMAND_UI(ID_INDICATOR_COMPRESS, OnUpdateIndicatorCompress)
ON_UPDATE_COMMAND_UI(ID_INDICATOR_PIXELS, OnUpdateIndicatorPixels)
ON_COMMAND(ID_SAVELIST, OnSavelist)
ON_COMMAND(IDM_MAKE_PICTURE, OnMakePicture)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
inline CLSDoc* CTXTView::GetDocument()
{ return (CLSDoc*)m_pDocument; }
/////////////////////////////////////////////////////////////////////////////
// CTXTView diagnostics
#ifdef _DEBUG
void CTXTView::AssertValid() const
{
CMultiColumnSortListView::AssertValid();
}
void CTXTView::Dump(CDumpContext& dc) const
{
CMultiColumnSortListView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CTXTView message handlers
void CTXTView::OnInitialUpdate()
{
CMultiColumnSortListView::OnInitialUpdate();
CSize sizeScreen (GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN)); // 得到当前分辨率
UINT width=500;
UINT height=sizeScreen.cy*3/4;
GetParentFrame()->SetWindowPos(NULL,sizeScreen.cx-(width+10),0,width,height,
SWP_NOACTIVATE | SWP_NOZORDER); // 设置视的属性
}
void CTXTView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
if(lHint==PICVIEW)
return;
ShowWindow(SW_HIDE);
CListCtrl& ctrl=GetListCtrl();
SetListStyle(ctrl.GetSafeHwnd(),LVS_REPORT);
CLSDoc *pDoc=GetDocument();
long id;
CString temp;
int min=pDoc->m_nMinArea;
BYTE typenum=pDoc->m_BlockTypes.GetSize();
DeleteAllItems();
DeleteAllColumns();
switch(pDoc->m_nShow)
{
case SHOWALLPROPERTY:
m_strName="图形中各类型属性";
ctrl.InsertColumn(0,"序号",LVCFMT_LEFT,40,-1);
ctrl.InsertColumn(1,"景观名称",LVCFMT_CENTER,100,-1);
ctrl.InsertColumn(2,"颜色值",LVCFMT_RIGHT,50,-1);
ctrl.InsertColumn(3,"斑块数(不过滤)",LVCFMT_RIGHT,110,-1);
ctrl.InsertColumn(4,"景观总面积",LVCFMT_RIGHT,80,-1);
ctrl.InsertColumn(5,"景观总周长",LVCFMT_RIGHT,80,-1);
m_nColNum=6;
SetColumnNumeric( 0 );
UnsetAll(1);
SetColumnNumeric( 2 );
SetColumnNumeric( 3 );
SetColumnNumeric( 4 );
SetColumnNumeric( 5 );
m_nLineNum=pDoc->m_BlockTypes.GetSize();
for(id=1;id<=m_nLineNum;id++)
{
Types tmpType=pDoc->m_BlockTypes[id-1];
temp.Format("%ld",id);
int index=ctrl.InsertItem(id,temp);
ctrl.SetItemText(index,1,tmpType.Name);
temp.Format("%d",tmpType.Val);
ctrl.SetItemText(index,2,temp);
temp.Format("%ld",tmpType.Number);
ctrl.SetItemText(index,3,temp);
temp.Format("%ld",tmpType.Area);
ctrl.SetItemText(index,4,temp);
temp.Format("%ld",tmpType.Length);
ctrl.SetItemText(index,5,temp);
}
break;
case SHOWBLOCKAREA:
m_strName="斑块的面积";
ctrl.InsertColumn(0,"块ID",LVCFMT_LEFT,40,-1);
ctrl.InsertColumn(1,"斑块景观名",LVCFMT_CENTER,100,-1);
ctrl.InsertColumn(2,"斑块颜色值",LVCFMT_RIGHT,80,-1);
ctrl.InsertColumn(3,"斑块面积",LVCFMT_RIGHT,65,-1);
m_nColNum=4;
SetColumnNumeric( 0 );
UnsetAll(1);
SetColumnNumeric( 2 );
SetColumnNumeric( 3 );
m_nLineNum=pDoc->m_BlockNum;
for(id=1;id<=m_nLineNum;id++)
{
Block tmpBlock=pDoc->m_LittleBlocks[id-1];
if(tmpBlock.AREA<=min)
continue;
Types tmpType=pDoc->m_BlockTypes[tmpBlock.TYPEINDEX];
temp.Format("%ld",id);
int index=ctrl.InsertItem(id,temp);
ctrl.SetItemText(index,1,tmpType.Name);
temp.Format("%d",tmpType.Val);
ctrl.SetItemText(index,2,temp);
temp.Format("%ld",tmpBlock.AREA);
ctrl.SetItemText(index,3,temp);
}
break;
case SHOWBLOCKLENGTH:
m_strName="斑块边界长";
ctrl.InsertColumn(0,"块ID",LVCFMT_LEFT,40,-1);
ctrl.InsertColumn(1,"斑块景观名",LVCFMT_CENTER,100,-1);
ctrl.InsertColumn(2,"斑块颜色值",LVCFMT_RIGHT,80,-1);
ctrl.InsertColumn(3,"斑块边界长",LVCFMT_RIGHT,80,-1);
m_nColNum=4;
SetColumnNumeric( 0 );
UnsetAll(1);
SetColumnNumeric( 2 );
SetColumnNumeric( 3 );
m_nLineNum=pDoc->m_BlockNum;
for(id=1;id<=m_nLineNum;id++)
{
Block tmpBlock=pDoc->m_LittleBlocks[id-1];
if(tmpBlock.AREA<=min)
continue;
Types tmpType=pDoc->m_BlockTypes[tmpBlock.TYPEINDEX];
temp.Format("%ld",id);
int index=ctrl.InsertItem(id,temp);
ctrl.SetItemText(index,1,tmpType.Name);
temp.Format("%d",tmpType.Val);
ctrl.SetItemText(index,2,temp);
temp.Format("%ld",tmpBlock.LENG);
ctrl.SetItemText(index,3,temp);
}
break;
case SHOWBLOCKCROSS:
m_strName="斑块之间的交界长度";
ctrl.InsertColumn(0,"ID①",LVCFMT_LEFT,40,-1);
ctrl.InsertColumn(1,"景观名①",LVCFMT_CENTER,100,-1);
ctrl.InsertColumn(2,"颜色值①",LVCFMT_RIGHT,60,-1);
ctrl.InsertColumn(3,"ID②",LVCFMT_LEFT,40,-1);
ctrl.InsertColumn(4,"景观名②",LVCFMT_CENTER,100,-1);
ctrl.InsertColumn(5,"颜色值②",LVCFMT_RIGHT,60,-1);
ctrl.InsertColumn(6,"交界长度",LVCFMT_RIGHT,60,-1);
m_nColNum=7;
SetColumnNumeric( 0 );
UnsetAll(1);
SetColumnNumeric( 2 );
SetColumnNumeric( 3 );
UnsetAll(4);
SetColumnNumeric( 5 );
SetColumnNumeric( 6 );
m_nLineNum=pDoc->m_BlockBorders.GetSize();
for(id=1;id<=m_nLineNum;id++)
{
BlockBorder tmpBorder=pDoc->m_BlockBorders[id-1];
long id1=tmpBorder.ID1;
long id2=tmpBorder.ID2;
Block tmpBlock1=pDoc->m_LittleBlocks[id1-1];
Block tmpBlock2=pDoc->m_LittleBlocks[id2-1];
if((tmpBlock1.AREA<=min)||(tmpBlock2.AREA<=min))
continue;
Types tmpType1=pDoc->m_BlockTypes[tmpBlock1.TYPEINDEX];
Types tmpType2=pDoc->m_BlockTypes[tmpBlock2.TYPEINDEX];
temp.Format("%ld",id1);
int index=ctrl.InsertItem(id,temp);
ctrl.SetItemText(index,1,tmpType1.Name);
temp.Format("%d",tmpType1.Val);
ctrl.SetItemText(index,2,temp);
temp.Format("%ld",id2);
ctrl.SetItemText(index,3,temp);
ctrl.SetItemText(index,4,tmpType2.Name);
temp.Format("%d",tmpType2.Val);
ctrl.SetItemText(index,5,temp);
temp.Format("%ld",tmpBorder.Leng);
ctrl.SetItemText(index,6,temp);
}
break;
case SHOWBLOCKCOORDS:
m_strName="斑块的中心点坐标";
ctrl.InsertColumn(0,"块ID",LVCFMT_LEFT,40,-1);
ctrl.InsertColumn(1,"斑块景观名",LVCFMT_CENTER,100,-1);
ctrl.InsertColumn(2,"斑块颜色值",LVCFMT_RIGHT,80,-1);
ctrl.InsertColumn(3,"中心点横坐标",LVCFMT_RIGHT,90,-1);
ctrl.InsertColumn(4,"中心点纵坐标",LVCFMT_RIGHT,90,-1);
m_nColNum=5;
SetColumnNumeric( 0 );
UnsetAll(1);
SetColumnNumeric( 2 );
SetColumnFloat( 3 );
SetColumnFloat( 4 );
m_nLineNum=pDoc->m_BlockNum;
for(id=1;id<=m_nLineNum;id++)
{
Block tmpBlock=pDoc->m_LittleBlocks[id-1];
if(tmpBlock.AREA<=min)
continue;
Types tmpType=pDoc->m_BlockTypes[tmpBlock.TYPEINDEX];
temp.Format("%ld",id);
int index=ctrl.InsertItem(id,temp);
ctrl.SetItemText(index,1,tmpType.Name);
temp.Format("%d",tmpType.Val);
ctrl.SetItemText(index,2,temp);
temp.Format("%.4f",tmpBlock.CX);
ctrl.SetItemText(index,3,temp);
temp.Format("%.4f",tmpBlock.CY);
ctrl.SetItemText(index,4,temp);
}
break;
case SHOWBLOCKALL:
m_strName="斑块所有属性";
ctrl.InsertColumn(0,"块ID",LVCFMT_LEFT,40,-1);
ctrl.InsertColumn(1,"景观名",LVCFMT_CENTER,90,-1);
ctrl.InsertColumn(2,"颜色值",LVCFMT_RIGHT,50,-1);
ctrl.InsertColumn(3,"斑块面积",LVCFMT_RIGHT,60,-1);
ctrl.InsertColumn(4,"边界长",LVCFMT_RIGHT,50,-1);
ctrl.InsertColumn(5,"中心点横坐标",LVCFMT_RIGHT,90,-1);
ctrl.InsertColumn(6,"中心点纵坐标",LVCFMT_RIGHT,90,-1);
m_nColNum=7;
SetColumnNumeric( 0 );
UnsetAll(1);
SetColumnNumeric( 2 );
SetColumnNumeric( 3 );
SetColumnNumeric( 4 );
SetColumnFloat(5);
SetColumnFloat(6);
m_nLineNum=pDoc->m_BlockNum;
for(id=1;id<=m_nLineNum;id++)
{
Block tmpBlock=pDoc->m_LittleBlocks[id-1];
if(tmpBlock.AREA<=min)
continue;
Types tmpType=pDoc->m_BlockTypes[tmpBlock.TYPEINDEX];
temp.Format("%ld",id);
int index=ctrl.InsertItem(id,temp);
ctrl.SetItemText(index,1,tmpType.Name);
temp.Format("%d",tmpType.Val);
ctrl.SetItemText(index,2,temp);
temp.Format("%ld",tmpBlock.AREA);
ctrl.SetItemText(index,3,temp);
temp.Format("%ld",tmpBlock.LENG);
ctrl.SetItemText(index,4,temp);
temp.Format("%.4f",tmpBlock.CX);
ctrl.SetItemText(index,5,temp);
temp.Format("%.4f",tmpBlock.CY);
ctrl.SetItemText(index,6,temp);
}
break;
case SHOWTYPEINDEX:
m_strName="各类型的景观指数汇总";
ctrl.InsertColumn(0,"景观名",LVCFMT_CENTER,90,-1);
ctrl.InsertColumn(1,"颜色值",LVCFMT_RIGHT,50,-1);
ctrl.InsertColumn(2,"分维指数",LVCFMT_RIGHT,60,-1);
ctrl.InsertColumn(3,"形状指数",LVCFMT_RIGHT,60,-1);
ctrl.InsertColumn(4,"碎裂化①",LVCFMT_RIGHT,60,-1);
ctrl.InsertColumn(5,"碎裂化②",LVCFMT_RIGHT,60,-1);
ctrl.InsertColumn(6,"平均最短距离",LVCFMT_RIGHT,90,-1);
ctrl.InsertColumn(7,"相邻度指数",LVCFMT_RIGHT,75,-1);
ctrl.InsertColumn(8,"相互作用指数",LVCFMT_RIGHT,90,-1);
m_nColNum=9;
UnsetAll(0);
SetColumnNumeric(1);
SetColumnFloat(2);
SetColumnFloat(3);
SetColumnFloat(4);
SetColumnFloat(5);
SetColumnFloat(6);
SetColumnFloat(7);
SetColumnFloat(8);
m_nLineNum=pDoc->m_BlockTypes.GetSize();
for(id=1;id<=m_nLineNum;id++)
{
Types tmpType=pDoc->m_BlockTypes[id-1];
int index=ctrl.InsertItem(id,tmpType.Name);
temp.Format("%d",tmpType.Val);
ctrl.SetItemText(index,1,temp);
temp.Format("%.4f",pDoc->m_Results.Split[id-1]);
ctrl.SetItemText(index,2,temp);
temp.Format("%.4f",pDoc->m_Results.Shape[id-1]);
ctrl.SetItemText(index,3,temp);
temp.Format("%.4f",pDoc->m_Results.TypeChip[id-1]);
ctrl.SetItemText(index,4,temp);
temp.Format("%.4f",pDoc->m_Results.TypeChip2[id-1]);
ctrl.SetItemText(index,5,temp);
temp.Format("%.4f",pDoc->m_Results.MinDistance[id-1]);
ctrl.SetItemText(index,6,temp);
temp.Format("%.4f",pDoc->m_Results.Neighbour[id-1]);
ctrl.SetItemText(index,7,temp);
temp.Format("%.4f",pDoc->m_Results.Interaction[id-1]);
ctrl.SetItemText(index,8,temp);
}
break;
case SHOWALLINDEX:
m_strName="整体的景观指数汇总";
ctrl.InsertColumn(0,"景观指数名称",LVCFMT_CENTER,150,-1);
ctrl.InsertColumn(1,"景观总体的指数值",LVCFMT_RIGHT,150,-1);
m_nColNum=2;
int ind;
ind=ctrl.InsertItem(1,"景观蔓延度指数");
temp.Format("%.4f",pDoc->m_Results.Contagion);
ctrl.SetItemText(ind,1,temp);
ind=ctrl.InsertItem(2,"景观多样性指数");
temp.Format("%.4f",pDoc->m_Results.TrueDiversity);
ctrl.SetItemText(ind,1,temp);
ind=ctrl.InsertItem(3,"最大多样性指数");
temp.Format("%.4f",pDoc->m_Results.MaxDiversity);
ctrl.SetItemText(ind,1,temp);
ind=ctrl.InsertItem(4,"景观均匀度指数");
temp.Format("%.4f",pDoc->m_Results.Blance);
ctrl.SetItemText(ind,1,temp);
ind=ctrl.InsertItem(5,"景观优势度指数");
temp.Format("%.4f",pDoc->m_Results.Vantage);
ctrl.SetItemText(ind,1,temp);
ind=ctrl.InsertItem(6,"整体碎裂化指数①");
temp.Format("%.4f",pDoc->m_Results.AllChip);
ctrl.SetItemText(ind,1,temp);
ind=ctrl.InsertItem(7,"整体碎裂化指数②");
temp.Format("%.4f",pDoc->m_Results.AllChip2);
ctrl.SetItemText(ind,1,temp);
m_nLineNum=7;
break;
case SHOWALLSPACE:
m_strName="整体变量空间化结果";
ctrl.InsertColumn(0,"Box序号",LVCFMT_LEFT,60,-1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -