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

📄 demodynamiclistview.cpp

📁 师兄做的算法可视化演示程序
💻 CPP
字号:
// DemoDynamicListView.cpp : implementation file
//

#include "stdafx.h"
#include "AlgorithmicDesign.h"
#include "DemoDynamicListView.h"
#include "MainFrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDemoDynamicListView

IMPLEMENT_DYNCREATE(CDemoDynamicListView, CListView)

CDemoDynamicListView::CDemoDynamicListView()
{
	memset(m_x,0,sizeof(m_x));
	memset(m_price,0,sizeof(m_price));
	memset(m_weight,0,sizeof(m_weight));
    m_n=0;
	m_totalweight=0;
	m_top=310;

}

CDemoDynamicListView::~CDemoDynamicListView()
{
}


BEGIN_MESSAGE_MAP(CDemoDynamicListView, CListView)
	//{{AFX_MSG_MAP(CDemoDynamicListView)
	ON_WM_SIZE()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDemoDynamicListView drawing

void CDemoDynamicListView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CDemoDynamicListView diagnostics

#ifdef _DEBUG
void CDemoDynamicListView::AssertValid() const
{
	CListView::AssertValid();
}

void CDemoDynamicListView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDemoDynamicListView message handlers

void CDemoDynamicListView::OnInitialUpdate() 
{
	 CListView::OnInitialUpdate();
	 CListCtrl& theCtrl = GetListCtrl();
	 theCtrl.InsertColumn(0,"  演示  ",LVCFMT_CENTER,699);
	 DWORD dwStype=GetWindowLong(theCtrl.GetSafeHwnd(),GWL_STYLE);
	 dwStype&=~LVS_TYPEMASK;		//Remove the current stype flags
	 dwStype|=LVS_REPORT;		//Add the List stype
	 dwStype|=LVS_SHOWSELALWAYS;
	 dwStype|=LVS_NOLABELWRAP;
	 SetWindowLong(theCtrl.GetSafeHwnd(),GWL_STYLE,dwStype);	//Set it back into the list view

     COLORREF	clrBk = RGB(150, 175, 230);
	 theCtrl.SetBkColor( clrBk );
     theCtrl.SetTextBkColor( clrBk );
 
	// TODO: Add your specialized code here and/or call the base class

	
}

void CDemoDynamicListView::OnSize(UINT nType, int cx, int cy) 
{
	CListView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
}

void CDemoDynamicListView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
    CRect rect;
	CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(0,0,0));
	CBrush br2(RGB(150, 175, 230));
	CPen*p=dc.SelectObject(&pen);
    dc.MoveTo(100,350);
    dc.LineTo(100,650);
	dc.MoveTo(600,350);
    dc.LineTo(600,650);
	dc.MoveTo(100,650);
    dc.LineTo(600,650);
    DrawObject();
	MoveObject();
	// Do not call CListView::OnPaint() for painting messages
}

void CDemoDynamicListView::AddDemoData(int n, int m, int p[100], int w[100])
{
	memset( m_x,0,sizeof(m_x) );//重新设置数据后,要将m_x清0,否则bug
	memset(m_price,0,sizeof(m_price));
	memset(m_weight,0,sizeof(m_weight));
	m_n = n;
	m_totalweight = m;
	for(int i=0;i<m_n;i++)
	{
		m_price[i]=p[i];
		m_weight[i]=w[i];
	}
	CRect rect;
	CBrush br2(RGB(150, 175, 230));
	rect.left=105;
	rect.right=595;
	rect.top=20;
	rect.bottom=650;
	CDC*pdc=GetDC();
	pdc->FillRect(&rect,&br2);
	OnPaint();
	m_top=310;
}

void CDemoDynamicListView::DrawObject()
{
	//先将物体清除
	CRect rect;
	CBrush br2(RGB(150, 175, 230));
	rect.left=105;
	rect.right=595;
	rect.top=20;
	rect.bottom=650;
	CDC*pdc=GetDC();
	pdc->FillRect(&rect,&br2);
	


	CBrush br3;
    br3.CreateSolidBrush(RGB(0,0,0));
    pdc->SetBkColor(RGB(150, 175, 230));
	CString m_str;
	rect.top = 310;
	rect.bottom = 330;
	int m_height = 311;
	rect.left = 105;
	rect.right = 595;
	for(int i=0;i<m_n;i++)
	  {
		if( m_x[i] == 0 )
		{//如果此物体不被装入背包,则,画出它
			pdc->FillRect(&rect,&br3);
			m_str.Format("No%d.  p[%d]/w[%d]: %d/%d",i+1,i,i,m_price[i],m_weight[i]);
			pdc->TextOut( 230,m_height,m_str);
		}
		rect.top -= 21;
		rect.bottom -= 21;
		m_height -= 21;
	  }
}

void CDemoDynamicListView::MoveObject()
{
	CDC*pdc = GetDC();
	CBrush br2;
	CBrush br3;
	br2.CreateSolidBrush(RGB(150, 175, 230));
	br3.CreateSolidBrush(RGB(0,0,0));
	pdc->SetBkColor(RGB(150, 175, 230));
	CString m_str;
	CRect rect;
	rect.top = 630;
	rect.bottom = 650;
	rect.left = 105;
	rect.right = 595;

	int m_height = 631;
	
	for(int i=0;i<m_n;i++)
	{
		if( m_x[i] == 1 )
		{//如果此物体被装入背包,则画出它
			pdc->FillRect(&rect,&br3);
			m_str.Format("No%d.  p[%d]/w[%d]: %d/%d",i+1,i,i,m_price[i],m_weight[i]);
			pdc->TextOut( 230,m_height,m_str);
			rect.top -= 21;
			rect.bottom -= 21;
			m_height -= 21;
		}
	}
	
}

void CDemoDynamicListView::SetX(int i)
{
	m_x[i] = 1;
}

void CDemoDynamicListView::Paint()
{
	OnPaint();
}

⌨️ 快捷键说明

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