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

📄 txtview.cpp

📁 数据结构链表的演示程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// 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 + -