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

📄 varidynamiclistview.cpp

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

#include "stdafx.h"
#include "AlgorithmicDesign.h"
#include "VariDynamicListView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CVariDynamicListView

IMPLEMENT_DYNCREATE(CVariDynamicListView, CListView)

CVariDynamicListView::CVariDynamicListView()
{
	memset(m_x,0,sizeof(m_x));
	m_n=0;
	//m_linenumber=1;
	m_linepronumber=1;
//	memset(m_p,0,sizeof(m_p));
//	memset(m_p,0,sizeof(m_p));
}

CVariDynamicListView::~CVariDynamicListView()
{
}


BEGIN_MESSAGE_MAP(CVariDynamicListView, CListView)
	//{{AFX_MSG_MAP(CVariDynamicListView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVariDynamicListView drawing

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

/////////////////////////////////////////////////////////////////////////////
// CVariDynamicListView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CVariDynamicListView message handlers

void CVariDynamicListView::OnInitialUpdate() 
{
	CListView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	CListCtrl& theCtrl = GetListCtrl();	
	theCtrl.InsertColumn(0,"  变量  ",LVCFMT_CENTER,441);
	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

	 DWORD dwStyle =  theCtrl.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
	 dwStyle |= LVS_EX_FULLROWSELECT ;//| LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP;
	 theCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);

	 DWORD dwEx =  theCtrl.GetExtendedStyle();
	 theCtrl.SetExtendedStyle(dwEx|LVS_EX_FLATSB);
	 SetRedraw(true);

	 COLORREF	clrBk = RGB(150, 175, 230);
	 theCtrl.SetBkColor( clrBk );
     theCtrl.SetTextBkColor( clrBk );

    int m_Number;
	m_Number=theCtrl.GetItemCount();
	LV_ITEM lvi;
	lvi.mask =  LVIF_TEXT | LVIF_STATE ;
	lvi.iItem = m_Number;
	lvi.iSubItem = 0;
	lvi.pszText = (LPTSTR)(LPCTSTR)("  变量名                      当前值");
	lvi.stateMask =LVIS_STATEIMAGEMASK;
	lvi.state = INDEXTOSTATEIMAGEMASK(1);
	theCtrl.InsertItem(&lvi);

	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.state = LVIS_FOCUSED|LVIS_DROPHILITED|LVIS_ACTIVATING ;
	lvi.pszText = (LPTSTR)(LPCTSTR)("   i                            0");
	theCtrl.InsertItem(&lvi);	
	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.state = INDEXTOSTATEIMAGEMASK(1);
	lvi.pszText = (LPTSTR)(LPCTSTR)("   MaxValue                     0");
	theCtrl.InsertItem(&lvi);
	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.pszText = (LPTSTR)(LPCTSTR)("   x                           {0}");
	theCtrl.InsertItem(&lvi);
	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.pszText = (LPTSTR)(LPCTSTR)("   p                           {0}");
	theCtrl.InsertItem(&lvi);
	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.pszText = (LPTSTR)(LPCTSTR)("   w                           {0}");
	theCtrl.InsertItem(&lvi);
	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.pszText = (LPTSTR)(LPCTSTR)("   TotalWeight                  0");
	theCtrl.InsertItem(&lvi);
	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.pszText = (LPTSTR)(LPCTSTR)("   n                            0");
	theCtrl.InsertItem(&lvi);
}

void CVariDynamicListView::SetVarianlemnpw(int n, int m, int p[100], int w[100])
{

	//把物体和价值数组传递到 变量显示 部分
	m_n = n;

	memset(m_x,0,sizeof(m_x));
	CListCtrl& theCtrl = GetListCtrl();	
	CString m_str,m_str2;
	m_str.Format("   n                            %d",n);
    theCtrl.SetItemText(7,0,m_str);

	m_str.Format("   TotalWeight                  %d",m);
	theCtrl.SetItemText(6,0,m_str);

	m_str = "   p                        {";
	for( int i=0;i<n;i++)
	{
		if(i!=n-1)
		   m_str2.Format("%d, ",p[i]);
		else
			m_str2.Format("%d",p[i]);
		m_str += m_str2;
	}
	m_str += "}";
    theCtrl.SetItemText(4,0,m_str);

	m_str = "   w                        {";
	for(i=0;i<n;i++)
	{
		if(i!=n-1)
		   m_str2.Format("%d, ",w[i]);
		else
			m_str2.Format("%d",w[i]);
		m_str += m_str2;
	}
	m_str += "}";
    theCtrl.SetItemText(5,0,m_str);

	m_str = "   x                        {";
	for(i=0;i<n;i++)
	{
		if(i!=n-1)
		   m_str2.Format("%d, ",0);
		else
			m_str2.Format("%d",0);
		m_str += m_str2;
	}
	m_str += "}";
    theCtrl.SetItemText(3,0,m_str);
}
void CVariDynamicListView::SetX(int i, BOOL b)
{
	if( b )
		m_x[i] = 1;
	else
		m_x[i] = 0;

	CListCtrl& theCtrl = GetListCtrl();	
	CString m_str,m_str2;
	m_str = "   x                        {";
	for( i=0; i<m_n; i++)
	{
		if( i != m_n-1 )
			m_str2.Format("%d, ",m_x[i]);
		else
			m_str2.Format("%d",m_x[i]);
	   m_str += m_str2;
	}

	m_str += "}";
    theCtrl.SetItemText(3,0,m_str);

	int state=INDEXTOSTATEIMAGEMASK(1);
    int mask=LVIF_TEXT | LVIF_STATE;
	theCtrl.SetItemState(m_linepronumber,state, mask );
	state = LVIS_FOCUSED|LVIS_DROPHILITED|LVIS_ACTIVATING;
    theCtrl.SetItemState(3,state, mask );
	m_linepronumber = 3;

}

void CVariDynamicListView::SetMaxValue(CString v)
{
	CListCtrl& theCtrl = GetListCtrl();	
	CString m_str;
	m_str = "   MaxValue                   ";
	m_str += v;
    theCtrl.SetItemText(2,0,m_str);

	int state=INDEXTOSTATEIMAGEMASK(1);
    int mask=LVIF_TEXT | LVIF_STATE;
	theCtrl.SetItemState(m_linepronumber,state, mask );
	state = LVIS_FOCUSED|LVIS_DROPHILITED|LVIS_ACTIVATING;
    theCtrl.SetItemState(2,state, mask );
	m_linepronumber = 2;
}

void CVariDynamicListView::SetI(int i)
{
	CListCtrl& theCtrl = GetListCtrl();	
	CString m_str;
	m_str.Format("   i                            %d",i);
    theCtrl.SetItemText(1,0,m_str);

	int state=INDEXTOSTATEIMAGEMASK(1);
    int mask=LVIF_TEXT | LVIF_STATE;
	theCtrl.SetItemState(m_linepronumber,state, mask );
	state = LVIS_FOCUSED|LVIS_DROPHILITED|LVIS_ACTIVATING;
    theCtrl.SetItemState(1,state, mask );
	m_linepronumber = 1;
}






















⌨️ 快捷键说明

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