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

📄 variablelistview.cpp

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

#include "stdafx.h"
#include "AlgorithmicDesign.h"
#include "VariableListView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CVariableListView

IMPLEMENT_DYNCREATE(CVariableListView, CListView)

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

CVariableListView::~CVariableListView()
{
}


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

/////////////////////////////////////////////////////////////////////////////
// CVariableListView drawing

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

/////////////////////////////////////////////////////////////////////////////
// CVariableListView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CVariableListView message handlers

void CVariableListView::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)("   s               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)("   m               0");
	theCtrl.InsertItem(&lvi);
	m_Number=theCtrl.GetItemCount();
    lvi.iItem = m_Number;
	lvi.pszText = (LPTSTR)(LPCTSTR)("   n               0");
	theCtrl.InsertItem(&lvi);
}

void CVariableListView::SetVarianlemnpw(int n, double m, double p[100], double w[100])
{
	    memset(m_x,0,sizeof(m_x));
	   // memset(m_p,0,sizeof(m_p));
	  //  memset(m_p,0,sizeof(m_p));
		CListCtrl& theCtrl = GetListCtrl();	
		CString m_str,m_str2;
		m_n=n;
		m_m=m;
		m_str.Format("   n              %d",n);
        theCtrl.SetItemText(7,0,m_str);

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

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

		m_str="   w       {";
		for(i=0;i<n;i++)
		{
		//	m_w[i]=w[i];
			if(i!=n-1)
			   m_str2.Format("%.1f, ",w[i]);
			else
				m_str2.Format("%.1f",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("%.1f, ",0);
			else
				m_str2.Format("%.1f",0);
			m_str+=m_str2;
		}
		m_str+="}";
        theCtrl.SetItemText(3,0,m_str);
}
void CVariableListView::SetX(double x, int num)
{
		CListCtrl& theCtrl = GetListCtrl();	
		CString m_str,m_str2;
		m_str="   x       {";
		for(int i=0;i<m_n;i++)
		{
			if(i==num-1)
			{
				if(num!=m_n)
				{
				   m_x[i]=x;
			       m_str2.Format("%.1f, ",m_x[i]);
				}
			    else
				{
				   m_x[i]=x;
				   m_str2.Format("%.1f",m_x[i]);
				}
			}
			else
			{
				if(i!=m_n-1)
			       m_str2.Format("%.1f, ",m_x[i]);
			    else
				   m_str2.Format("%.1f",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 CVariableListView::SetS(double s)
{
		CListCtrl& theCtrl = GetListCtrl();	
		CString m_str;
		m_str.Format("   s             %f",s);
        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 CVariableListView::SetM(double m)
{
		CListCtrl& theCtrl = GetListCtrl();	
		CString m_str;
		m_str.Format("   m              %f",m);
        theCtrl.SetItemText(6,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(6,state, mask );
		m_linepronumber=6;
}

void CVariableListView::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 + -