CListCtrl在SetImageList之后第一列有空白图标占位置,我想把这个去掉。下列是添加图片的代码。
插入图的代码如下
HBITMAP hBitmap;
BITMAP bmp;
CBitmap* pBitmap;
pBitmap = new CBitmap;
hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), FilePathName1, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
pBitmap->Attach(hBitmap);
m_ImageList.Add(pBitmap, RGB(0, 0, 0));
hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), FilePathName2, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
pBitmap->Attach(hBitmap);
m_ImageList.Add(pBitmap, RGB(0, 0, 0));
//将ImageList设置到ListCtrl中
m_listCtrl.SetImageList(&m_ImageList, LVSIL_SMALL);
添加的代码如下
LV_ITEM lvitem;
memset((char*)&lvitem, '\0', sizeof(LV_ITEM));
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;//| LVIF_INDENT仅对第0列有效;
lvitem.iItem = i; lvitem.iSubItem = 0;
我是自己重绘了表格的,重绘图片的代码如下。
void CAAMyListCtrl::DrawImage(CDC* pDC, CPoint Pt, int width, int height, int nItem)
{
LVITEM Lv = { LVIF_IMAGE };//指明获取什么类型的数据
Lv.iItem = nItem;//指明获取第几行的图标
GetItem(&Lv);
CImageList* pImgList = GetImageList(LVSIL_SMALL);
if (pImgList != NULL)
{
//ImageList_SetIconSize(pImgList->m_hImageList,27, 27);
int cx = 0;
int cy = 0;
ImageList_GetIconSize(pImgList->GetSafeHandle(), &cx, &cy);//图片尺寸
if (width >= cx && height >= cy)//单元格大于图片时,设置图片居中,其余靠单元格左上角
{
int iSubW = (width - cx) / 2;
int iSubH = (height - cy) / 2;
iSubW = Pt.x + iSubW;
iSubH = Pt.y + iSubH;
Pt.x = iSubW;
Pt.y = iSubH;
//CListCtrl坐标原点为列表左上角,x向右,y向下
}
pImgList->Draw(pDC, Lv.iImage, Pt, ILD_TRANSPARENT);
}
}
有尝试在重绘的时候修改尺寸,但是这样显示不出来图片。总结我的需求:去掉第一列的空白图片占位。麻烦有明白的朋友帮帮忙,感谢了。