显示图像的CListCtrl:
CBitmap bmp;
m_imglist.Create(89, 58, ILC_COLOR32, 6,6);
bmp.Attach((HBITMAP)::SHLoadDIBitmap(m_strImagePath +_T("dir.bmp")));
m_imglist.Add(&bmp, &bmp);
::DeleteObject(bmp.Detach());
bmp.Attach((HBITMAP)::SHLoadDIBitmap(m_strImagePath +_T("mp3.bmp")));
m_imglist.Add(&bmp, &bmp);
::DeleteObject(bmp.Detach());
m_list.SetExtendedStyle(m_list.GetExtendedStyle()| LVS_EX_SUBITEMIMAGES );
m_list.SetIconSpacing(89, 1);
m_list.SetImageList(&m_imglist,LVSIL_NORMAL);
for(int j = 0;j < 20 ;j ++)
{
// m_list.InsertItem(j, _T("test"), 0);
m_list.InsertItem(j,NULL,1);
LVITEM item; //Item结构,很全的东西
item.iItem = j; //Item索引
item.iSubItem = 0; //SubItem索引
//Ⅲ.设定显示的格式
item.mask = LVIF_IMAGE |LVIF_TEXT; //显示文本和图片
//Ⅳ.设定对应图片的索引值
item.iImage = (j*2 %6); //图片索引值
item.pszText = _T("Virqintiugiuglbvjugjghdhgshgdjgd"); //在当前Item要显示的文本
m_list.SetItem(&item); //设定Item
}
隐藏滚动条:EVC不支持NCCALCSIZE消息.必须要用滚动条,否则不能滚动.
void CGpsListCtrl::OnSize(UINT nType, int cx, int cy)
{
this->ShowScrollBar(SB_VERT, FALSE);
this->ShowScrollBar(SB_HORZ, FALSE);
CListCtrl::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
}
改变时更改图片:
void CGpsFileDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
if(pNMLV->uChanged==LVIF_STATE) //必须要用,否则会导致多次进入,而且状态不正确,不可跟踪调试
{
if(((pNMLV->uOldState & LVIS_FOCUSED) == 0) && (pNMLV->uNewState & LVIS_FOCUSED))
{
// This item is getting the focus.
TCHAR chBuffer[255];
memset(chBuffer, 0,sizeof(TCHAR) * 255);
LVITEM item ;
item.iSubItem = 0; //必须指定,否则取出来的值不正确
item.mask = LVIF_TEXT |LVIF_IMAGE ; //必须同时指定,否则对应的值取不到.
item.pszText = chBuffer;
item.iItem = pNMLV->iItem;
item.cchTextMax = 255 * sizeof(TCHAR);
m_list.GetItem(&item);
item.iImage +=1;
m_list.SetItem(&item);
return ;
}
if(((pNMLV->uNewState & LVIS_FOCUSED) == 0) && (pNMLV->uOldState & LVIS_FOCUSED))
{
// This item is losing focus.
TCHAR chBuffer[255];
memset(chBuffer, 0,sizeof(TCHAR) * 255);
LVITEM item ;
item.iSubItem = 0;
item.mask = LVIF_TEXT |LVIF_IMAGE ;
item.pszText = chBuffer;
item.iItem = pNMLV->iItem;
item.cchTextMax = 255 * sizeof(TCHAR);
m_list.GetItem(&item);
item.iImage -=1;
m_list.SetItem(&item);
return ;
}
}
*pResult = 0;
}