通常需要设计自己的listctrl(继承自CListCtrl)实现特定的功能如添加删除等。CListCtrl里有特定的消息以NM_前缀和LVN_前缀开头。通过响应这些消息来实现特定的功能。否则如果只用CListCtrl则这些消息响应没有地方添加。
CRect rect;
LVCOLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
CString str[3] = {"姓名", "学号", "年龄"};
m_pListCtrl->GetClientRect(&rect);
int i;
for(i = 0; i < 3; i++)
{
lvc.iSubItem = i;
lvc.pszText = (char*)(LPCTSTR)str[i];
lvc.cx = rect.Width() / 3;
lvc.fmt = LVCFMT_LEFT;
m_pListCtrl->InsertColumn(i, &lvc);
}
//插入项
int nIndex = m_listctrl.GetItemCount();
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = nIndex ;
lvi.iSubItem = 0;
lvi.cchTextMax = 64;
lvi.pszText = _T("阿猫");
m_pListCtrl->InsertItem(&lvi);
lvi.pszText = _T("20110901");
lvi.cchTextMax = 12;
lvi.iSubItem = 1;
m_pListCtrl->SetItem(&lvi);
lvi.pszText = _T("18");
lvi.cchTextMax = 3;
lvi.iSubItem = 2;
m_pListCtrl->SetItem(&lvi);
//CListCtrl中还有许多基本的函数,如获取LVCOLUMN LVITEM的信息,插入,删除,遍历等。
CRect rect;
LVCOLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
CString str[3] = {"姓名", "学号", "年龄"};
m_pListCtrl->GetClientRect(&rect);
int i;
for(i = 0; i < 3; i++)
{
lvc.iSubItem = i;
lvc.pszText = (char*)(LPCTSTR)str[i];
lvc.cx = rect.Width() / 3;
lvc.fmt = LVCFMT_LEFT;
m_pListCtrl->InsertColumn(i, &lvc);
}
//插入项
int nIndex = m_listctrl.GetItemCount();
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = nIndex ;
lvi.iSubItem = 0;
lvi.cchTextMax = 64;
lvi.pszText = _T("阿猫");
m_pListCtrl->InsertItem(&lvi);
lvi.pszText = _T("20110901");
lvi.cchTextMax = 12;
lvi.iSubItem = 1;
m_pListCtrl->SetItem(&lvi);
lvi.pszText = _T("18");
lvi.cchTextMax = 3;
lvi.iSubItem = 2;
m_pListCtrl->SetItem(&lvi);
//CListCtrl中还有许多基本的函数,如获取LVCOLUMN LVITEM的信息,插入,删除,遍历等。