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

📄 listnew.cpp

📁 模拟迅雷的下载工具软件
💻 CPP
字号:
// ListNew.cpp : implementation file
//

#include "stdafx.h"
#include "LeoBlock2004.h"
#include "ListNew.h"

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

/////////////////////////////////////////////////////////////////////////////
// CListNew

CListNew::CListNew()
{
	m_pParentWnd=NULL;
	m_nMenuID=0;

	
	
}

CListNew::~CListNew()
{
}


BEGIN_MESSAGE_MAP(CListNew, CListCtrl)
	//{{AFX_MSG_MAP(CListNew)
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CListNew message handlers
BOOL CListNew::CreateNew(CWnd *pParentWnd,CRect nRect,UINT nID,UINT nMenuID,UINT nBitmapID,int nImageListType)
{
	BOOL bReturn;
	bReturn=Create(WS_CHILD|WS_BORDER|WS_TABSTOP|LVS_SHOWSELALWAYS|LVS_REPORT|LVS_SINGLESEL,nRect,pParentWnd,nID);
	if(bReturn)
	{
		m_nMenuID=nMenuID;
		m_pParentWnd=pParentWnd;
		SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE);
		ShowWindow(SW_SHOW);
		if(nBitmapID!=-1)
		{
			CBitmap nBitmap;
			if(nBitmap.LoadBitmap(nBitmapID))
			{
				m_ImageList.Create(16,16,TRUE|ILC_COLOR16|ILC_MASK,3,1);
				m_ImageList.Add(&nBitmap,RGB(255,0,255));
				SetImageList(&m_ImageList,nImageListType);
			}
			nBitmap.DeleteObject();
		}

		return TRUE;
	}
	
	return FALSE;


}

BOOL CListNew::PopupMenu(int iItem,int iSubItem,CRect *rRect)
{
	if(m_pParentWnd && m_nMenuID)
	{
		CMenu menu;
		if(!menu.LoadMenu(m_nMenuID))
			return FALSE;
		
		CMenu *pSubMenu=menu.GetSubMenu(0);
		if(!pSubMenu)
			return FALSE;
		
		CPoint pos;
		LIST_INFO nListInfo;
		GetCursorPos(&pos);
		nListInfo.nItem=iItem;
		nListInfo.nSubItem=iSubItem;

		::TrackPopupMenu(pSubMenu->m_hMenu,0,pos.x,pos.y,0,m_pParentWnd->m_hWnd,NULL);
		::SendMessage(m_pParentWnd->m_hWnd,WM_LISTINFO,0,(LPARAM)&nListInfo);
		return TRUE;
	}

	return FALSE;


}
void CListNew::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	//Get Mouse Point
	POINT point;
	::GetCursorPos(&point);
	CPoint pt(point);
	ScreenToClient(&pt);

	POSITION pos;
	pos=GetFirstSelectedItemPosition();
	if(pos)
	{
		//Test Mouse Point if Item Rect
			//Get Mouse Click Point;
		LVHITTESTINFO TestInfo;
		TestInfo.pt.x=pt.x;
		TestInfo.pt.y=pt.y;
		TestInfo.flags=LVHT_ONITEMLABEL;
		if(SubItemHitTest(&TestInfo)>=0)
		{
			CString cs;
			m_nItem=TestInfo.iItem;
			m_nSubItem=TestInfo.iSubItem;
			PopupMenu(m_nItem,m_nSubItem);
			//cs.Format("item%d SubItem%d",m_nItem,m_nSubItem);
			//AfxMessageBox(cs);
		}
	}

	*pResult = 0;
}

void CListNew::SetCurrentRow(int nItem)
{
	m_nItem=nItem;
}

void CListNew::SetCurrentCol(int nCol)
{
	m_nSubItem=nCol;
}

int CListNew::GetCurrentRow()
{
	return m_nItem;
}

int CListNew::GetCurrentCol()
{
	return m_nSubItem;
}

void CListNew::SetItemValue(int nItem,int nImage)
{
	LV_ITEM lItem;
	lItem.mask=LVIF_IMAGE|LVIF_TEXT;
	lItem.iItem=nItem;
	lItem.iSubItem=0;
	lItem.iImage=nImage;
	SetItem(&lItem);
	SetItemText(nItem,1,"");

}
void CListNew::SetItemColumnValue(int nItem,int nSubItem,LPCTSTR szText)
{
	SetItemText(nItem,nSubItem,szText);
}

void CListNew::SetDefaultTitle()
{
	
	
	InsertColumn(0,"下载");
	InsertColumn(1,"文件名");
	InsertColumn(2,"文件大小");
	InsertColumn(3,"完成率");
	InsertColumn(4,"速率");
	InsertColumn(5,"已用时间");
	InsertColumn(6,"剩余时间");
	InsertColumn(7,"注释");
	InsertColumn(8,"URL");
}

void CListNew::SetItemColumnValueA(int nItem,int nSubItem,char *cText[],int nImage)
{
	//cText[6]
	
	LV_ITEM lItem;
	lItem.mask=LVIF_IMAGE;
	lItem.iItem=nItem;
	lItem.iSubItem=0;
	lItem.iImage=nImage;
	InsertItem(&lItem);

	for(int i=1;i<nSubItem;i++)
		SetItemText(nItem,i,cText[i-1]);


}

void CListNew::SetItemColumnValueB(int nItem,int nSubItem,LPTSTR cText[],int nImage)
{
	//cText[6]
	
	LV_ITEM lItem;
	lItem.mask=LVIF_IMAGE;
	lItem.iItem=nItem;
	lItem.iSubItem=0;
	lItem.iImage=nImage;
	InsertItem(&lItem);

	for(int i=1;i<=nSubItem;i++)
		SetItemText(nItem,i,cText[i-1]);


}

void CListNew::SetAutoSize(int nStartNum,int nCount)
{
	for(int i=0;i<9;i++)
		SetColumnWidth(i,LVSCW_AUTOSIZE);
	nCount+=nStartNum;
	for(nStartNum;nStartNum<nCount;nStartNum++)
		SetColumnWidth(nStartNum,70);

}

⌨️ 快捷键说明

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