主题:关于CListCtrl设置图片的问题
alucard83
[专家分:10] 发布于 2008-01-21 16:18:00
如何才能让第一列的图片不显示???
回复列表 (共3个回复)
沙发
华山论剑 [专家分:5310] 发布于 2008-01-21 16:47:00
ListCtrl格式设成Icon或者small icon才显示图片,如不显示可以将格式设置成list,或者设成Report,但是不加载图片(图片加载是要写码的)。
板凳
alucard83 [专家分:10] 发布于 2008-01-22 14:38:00
我是希望所有行的第一列不显示图片,而我指定的列显示图片。我的CListCtrl类型是report。
在初始化时做以下工作:
CBitmap bmp1;
bmp1.LoadBitmap(IDB_BITMAP1);
m_imgList.Create(16, 16, ILC_COLORDDB, 0, 2);
m_imgList.Add( &bmp1, RGB(255,0,255) );
m_objList.SetImageList( &m_imgList, LVSIL_SMALL);
以下是单击列表事件
OnNMClickobjlist(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLISTVIEW* pView =(NMLISTVIEW*)pNMHDR;
int row = pView->iItem; //row: 文本框成员变量,用来存放行
int col = pView->iSubItem; //col: 文本框成员变量,用来存放列
if(col == 2)
{
m_objList.SetItem(row, col, LVIF_IMAGE, NULL, 1, 0, 0, 0, 0);
//我想指定某行第3列显示图片
}
}
为什么第一列显示图片呢???还有在资源Bitmap里,我在16*16的格子里画的图片会显示在第一列,在下一个16*16的格子里画的会显示在我所指定的列里。我的想法再创建一个CBitmap对象,然后再加到CImageList里,但显示的还是我在第一个CBitmap对象资源里画的图片。这是为什么???请高手解答一下。
3 楼
华山论剑 [专家分:5310] 发布于 2008-01-22 19:09:00
List Control默认是只有第1列(ListItem)才能显示图片,如果想在它的子项中也显示,要先调用:
SetExtendedStyle(LVS_EX_SUBITEMIMAGES);
然后再用SetItem设置图片就行了。
我来回复