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

📄 mainlistview.cpp

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CMainListView

IMPLEMENT_DYNCREATE(CMainListView, CListView)

CMainListView::CMainListView()
{
}

CMainListView::~CMainListView()
{
}


BEGIN_MESSAGE_MAP(CMainListView, CListView)
	//{{AFX_MSG_MAP(CMainListView)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	ON_NOTIFY_REFLECT(NM_CLICK, OnClick)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainListView drawing

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

/////////////////////////////////////////////////////////////////////////////
// CMainListView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CMainListView message handlers

void CMainListView::OnInitialUpdate() 
{
	CListView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	CListCtrl& theCtrl = GetListCtrl();	
	

	if(NULL == m_ServerImgList.GetSafeHandle())
	{
		m_ServerImgList.Create(46, 46, ILC_COLOR24 | ILC_MASK, 0, 256);
		
		CBitmap	m_Bmp;
		//m_Bmp.LoadBitmap(IDB_BITMAP_Design);
		m_Bmp.m_hObject = (HBITMAP)::LoadImage(NULL,"res\\AlgorithmicDesign.bmp",IMAGE_BITMAP,
		                    46*9 , 46 ,LR_LOADFROMFILE);
		if(NULL != m_Bmp.GetSafeHandle())
		{
			m_ServerImgList.Add(&m_Bmp, RGB(3, 126, 129));
			m_Bmp.DeleteObject();
		}
	}

	if(NULL != m_ServerImgList.GetSafeHandle())
	{
		theCtrl.SetImageList(&m_ServerImgList, TVSIL_NORMAL);
	}

	LV_ITEM lvi;
	lvi.mask =  LVIF_TEXT | LVIF_STATE | LVIF_IMAGE ;
	lvi.iItem = 0;
	lvi.iSubItem = 0;
	lvi.pszText = (LPTSTR)(LPCTSTR)("0/1背包问题的贪心算法");
 	lvi.iImage = 3;		// There are 8 images in the image list
	lvi.stateMask =LVIS_STATEIMAGEMASK;
	lvi.state = INDEXTOSTATEIMAGEMASK(1);
	theCtrl.InsertItem(&lvi);

	lvi.iItem = 1;
	lvi.pszText = (LPTSTR)(LPCTSTR)("最小耗费生成树问题的贪心算法");
	theCtrl.InsertItem(&lvi);
	
	lvi.iItem = 2;
	lvi.pszText = (LPTSTR)(LPCTSTR)("FIFO队列式分支限界0/1背包问题");
	theCtrl.InsertItem(&lvi);	

	lvi.iItem = 3;
	lvi.pszText = (LPTSTR)(LPCTSTR)("王岩");
	theCtrl.InsertItem(&lvi);	

	lvi.iItem = 4;
	lvi.pszText = (LPTSTR)(LPCTSTR)("0/1背包问题的动态规划算法");
	theCtrl.InsertItem(&lvi);	

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

}

void CMainListView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CListCtrl& theCtrl = GetListCtrl();	
	ASSERT(pNMHDR);
	if(NULL == pNMHDR)
		return ;
    int	dwRoomData=theCtrl.GetSelectionMark();
	POSITION p=theCtrl.GetFirstSelectedItemPosition();
	//long num=(long*)dwRoomData;
	if(p!=NULL)
	{
		switch(dwRoomData)
		{
		case 0:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("0/1背包问题的贪心算法");
            pMainFrame->ShowPackGreedyFrame(TRUE,0);
			break;
			}
		case 1:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("最小耗费生成树问题的贪心算法");
            pMainFrame->ShowPackGreedyFrame(TRUE,1);
			break;
			}
		case 2:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("FIFO队列式分支限界0/1背包问题");
            pMainFrame->ShowPackGreedyFrame(TRUE,2);
			break;
			}
		case 4:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("0/1背包问题的动态规划算法");
            pMainFrame->ShowPackGreedyFrame(TRUE,4);
			break;
			}
	    default:
		break;
		} 
	}
	*pResult = 0;
}

void CMainListView::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CListCtrl& theCtrl = GetListCtrl();	
	ASSERT(pNMHDR);
	if(NULL == pNMHDR)
		return ;
    int	dwRoomData=theCtrl.GetSelectionMark();
	POSITION p=theCtrl.GetFirstSelectedItemPosition();
	//long num=(long*)dwRoomData;
	if(p!=NULL)
	{
		switch(dwRoomData)
		{
		case 0:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("0/1背包问题的贪心算法");
			break;
			}
	   case 1:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("最小耗费生成树问题的贪心算法");
			break;
			}
	    case 2:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("FIFO队列式分支限界0/1背包问题");
			break;
			}
	    case 4:
			{
			//m_PackGreedyDlg.DoModal();
            CMainFrame*	pMainFrame	=(CMainFrame*)::AfxGetMainWnd();
			pMainFrame->p_MaintreeView->AddItem("0/1背包问题的动态规划算法");
			break;
			}
	    default:
		break;
		} 
	}
	*pResult = 0;
}

⌨️ 快捷键说明

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