使用范围:
1.如果你想list的不同item前面都是不一样的图片,可以用这个方法(这个方法是Icon模式,其它模式需要自己稍微修改一下就行,类似的)
2.用list来显示图片(这个只支持Icon模式)
效果如图:
其中图片下面的数字就是每个item的text,可以不要也可以要.
步骤如下:
1.添加资源(我添加的是位图资源)
这一步骤前面有文章已经说过,这里不再详细说了.
2.右键单击list属性,设置view为 Icon
如图所示:
3.关联list变量,然后添加成员变量和函数
CImageList m_ImgList; //图像列表对象
UINT m_uBmpID[20]; //存放资源ID
UINT m_uImgID[20]; //存放添加到图像列表中的ID
CListCtrl m_list;
void Init(); //初始化m_uBmpID数组
void AddBmp(); //向图像列表中添加位图
4.void Init 函数实现如下
m_uBmpID[0] = IDB_BITMAP1;
m_uBmpID[1] = IDB_BITMAP2;
m_uBmpID[2] = IDB_BITMAP3;
m_uBmpID[3] = IDB_BITMAP4;
m_uBmpID[4] = IDB_BITMAP5;
m_uBmpID[5] = IDB_BITMAP6;
m_uBmpID[6] = IDB_BITMAP7;
m_uBmpID[7] = IDB_BITMAP8;
m_uBmpID[8] = IDB_BITMAP9;
m_uBmpID[9] = IDB_BITMAP10;
m_uBmpID[10] = IDB_BITMAP11;
m_uBmpID[11] = IDB_BITMAP12;
m_uBmpID[12] = IDB_BITMAP13;
m_uBmpID[13] = IDB_BITMAP14;
m_uBmpID[14] = IDB_BITMAP15;
m_uBmpID[15] = IDB_BITMAP16;
m_uBmpID[16] = IDB_BITMAP17;
m_uBmpID[17] = IDB_BITMAP18;
m_uBmpID[18] = IDB_BITMAP19;
m_uBmpID[19] = IDB_BITMAP20;
5.void AddBmp()函数实现如下
//创建图像列表 这里是32*32的图片 真彩色 透明背景
m_ImgList.Create(32, 32, ILC_COLOR24 | ILC_MASK, 0, 0);
for (int i = 0; i < 20 ; i++)
{
CBitmap bmp;
bmp.LoadBitmap(m_uBmpID[i]); //加载位图
m_uImgID[i] = m_ImgList.Add(&bmp, RGB(0, 0, 0)); //添加位图到图像列表,返回该图像的序号
}
//获取指向列表控件的指针
CListCtrl* pLc = (CListCtrl*)GetDlgItem(IDC_LIST1);
pLc->ModifyStyle(LVS_ALIGNLEFT,LVS_ALIGNTOP); //把水平滚动条换成垂直滚动条
//这里必须用指针才能设置
pLc->SetImageList(&m_ImgList, LVSIL_NORMAL);//显示正常图标
6.接着在初始化对话框中调用这两个函数即可
7.最后再添加按钮函数中添加item即可
int iCount = m_list.GetItemCount();//获取列表中有多少item
int i = iCount % 19; //循环
CString strText;
strText.Format(_T("%d"), iCount + 1); //item text可要可不要
m_list.InsertItem(iCount, strText,m_uImgID[i]);//最后一个参数就是图片的Id
只要稍加修改就可以做成 small icon list report 模式的带图标的列表了.