回 帖 发 新 帖 刷新版面

主题:关于CListCtrl设置图片的问题

如何才能让第一列的图片不显示???

回复列表 (共3个回复)

沙发

ListCtrl格式设成Icon或者small icon才显示图片,如不显示可以将格式设置成list,或者设成Report,但是不加载图片(图片加载是要写码的)。

板凳

我是希望所有行的第一列不显示图片,而我指定的列显示图片。我的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 楼

List Control默认是只有第1列(ListItem)才能显示图片,如果想在它的子项中也显示,要先调用:

SetExtendedStyle(LVS_EX_SUBITEMIMAGES);

然后再用SetItem设置图片就行了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册