ListrCtrl重绘

m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);
这使用的m_cImageListNormal, ListCtrl只是存储一个指向它的指针,如果这个ImageList是一个局部变量,析构后,ListCtrl内的指针就无效了

  
  
  
  
  • LVSIL_NORMAL: Shown in LVS_ICON view only
  • LVSIL_SMALL: Shown in LVS_SMALLICONLVS_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++)
{
// Insert the first item
	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;		// There are 8 images in the image list
	m_cListCtrl.InsertItem(&lvi);  //Item 0 调用 InsertItem
// Set subitem 1
	strItem.Format(_T("%d"), 10*i);
	lvi.iSubItem =1;
	lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
	m_cListCtrl.SetItem(&lvi);    //该列的其他项只调用SetItem
// Set subitem 2
	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()就可以了

你可能感兴趣的:(ListrCtrl重绘)