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