EVC之CListCtrl

 显示图像的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;
}

 

你可能感兴趣的:(image,null)