本文简单地介绍下VS的listview使用:包括属性设置、背景设置、双击事件、右键弹出菜单等。
使用工具:VS2008
使用语言:C++
开发步骤:
1.新建单文档程序,View派生于ListView
2.添加菜单资源
3.设置属性
void CListViewDemoView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: 调用 GetListCtrl() 直接访问 ListView 的列表控件,
// 从而可以用项填充 ListView。
//属性设置
CListCtrl& list = GetListCtrl();
list.ModifyStyle(LVS_TYPEMASK,LVS_REPORT & LVS_TYPEMASK | LVS_SINGLESEL);//important for show
DWORD dwStyle = list.GetExtendedStyle();
list.SetExtendedStyle(dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
CImageList image;
image.Create(1,20,ILC_COLOR24 | ILC_MASK,4,0);
list.SetImageList(&image,LVSIL_SMALL);
CFont font;
font.CreateFont(
16,
0,
0,
0,
FW_NORMAL,
FALSE,
FALSE,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS,
_T("宋体"));
list.SetFont(&font);
list.GetHeaderCtrl()->SetFont(&font);
//菜单
m_menu.LoadMenu(IDR_MENU1);
list.SetMenu(&m_menu);
//标题栏
list.InsertColumn(0,_T("名称"),LVCFMT_LEFT,150,0);
list.InsertColumn(1,_T("属性1"),LVCFMT_LEFT,120,0);
list.InsertColumn(2,_T("属性2"),LVCFMT_LEFT,120,0);
UpdateList();
}
4.更新数据
void CListViewDemoView::UpdateList(void)
{
CListCtrl& list = GetListCtrl();
CString str=_T("");
//值设置
for(int i=0; i<5; i++)
{
str.Format(_T("name %d"),i);
list.InsertItem(i,str);
str.Format(_T("属性1 %d"),i);
list.SetItemText(i,1,str);
str.Format(_T("属性2 %d"),i);
list.SetItemText(i,2,str);
}
}
5.背景效果
void CListViewDemoView::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
int iRow = lp