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