m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);
这使用的m_cImageListNormal, ListCtrl只是存储一个指向它的指针,如果这个ImageList是一个局部变量,析构后,ListCtrl内的指针就无效了
LVSIL_NORMAL
: Shown in LVS_ICON
view onlyLVSIL_SMALL
: Shown in LVS_SMALLICON
, LVS_LIST
, and LVS_REPORT
modes. //这要注意
ListCtrl可以添加2次ImageLis
m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL); 用来在ICON模式中显示
m_cListCtrl.SetImageList(&m_cImageListSmall, LVSIL_SMALL);用来在其他模式中显示
也可以只添加一次
ListCtrl插入的方式也很特别:
for (int i = 0; i < m_nItems; i++)
{
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
strItem.Format(_T("Item %i"), i);
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
lvi.iImage = i%8; m_cListCtrl.InsertItem(&lvi); //Item 0 调用 InsertItem
strItem.Format(_T("%d"), 10*i);
lvi.iSubItem =1;
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
m_cListCtrl.SetItem(&lvi); //该列的其他项只调用SetItem
strItem.Format(_T("%s"),
COleDateTime::GetCurrentTime().Format(_T("Created: %I:%M:%S %p, %m/%d/%Y")));
lvi.iSubItem =2;
lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
m_cListCtrl.SetItem(&lvi); //该列的其他项只调用SetItem
}
有什么好的方式来记录按钮的状态?用一个变量似乎有点山寨
对标题栏的绘制,GetHeaderCtrl()后用自定义的类SubclassWindow()就可以了