一:设置风格
DWORD dwStyle = m_list.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_DOUBLEBUFFER;//双缓冲
dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
m_list.SetExtendedStyle(dwStyle); //设置扩展风格
二:设置列名
使用m_list.InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
nCol:第几列,从0开始
lpszColumnHeading 显示的名称字段名
nFormat 可以选择LVCFMT_LEFT、LVCFMT_RIGHT和LVCFMT_CENTER
nWidth列宽度
nSubItem可不设置,默认即可
三:添加数据
有两种方式:
1.使用默认方式:
使用m_list.InsertItem(int nItem, LPCTSTR lpszItem); //插入一行数据
nItem要插入的行数从0算起
lpszItem行数第一列名称
使用m_list.SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);//设置第几行各字段内容
nItem要设置的行数
nSubItem要设置的列数
lpszText要设置的内容
2.虚拟列表方式:
需要设置m_list属性中“所有者数据”为TRUE,添加LVN_GETDISPINFO消息处理,只要实现这个消息处理后,初始化的时候
调用m_list.SetItemCount(int iCount);设置行数即可
void OnLvnGetdispinfoList1(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
LV_ITEM* pItem= &(pDispInfo->item);//获取要设置的项信息
int itemid = pItem->iItem;//第几行
if (pItem->mask & LVIF_TEXT)//设置文本内容
{
CString text;
switch(pItem->iSubItem)//第几列 根据第几列设置text 来填充内容
{
case 0:
case 1:
.
.
.
default:
text = _T("");
break;
}
lstrcpyn(pItem->pszText, text, pItem->cchTextMax);
}
*pResult = 0;
}