用SetImageList给treectrl设置图形列表,然后在insertitem的时候指定图片的index便可以让改item的图标为相应的图形.
是我现在想让其中一些item有图标,而其他的item没有图标。
如果把没有图标的item的image index设为-1或者imagelist中不存在的index的话,没有图标的item前面会有空隙(为图片的大小),如何可以去掉该空隙呢。

解决方案 »

  1.   

    好像是不能去掉的除非自己重绘CTreeCtrl,就是在不需要图片的时候将绘制文本提前以覆盖白色框框的位置
      

  2.   

    你如果使用标准的CTreeCtrl控件,那么这些东西已经定死了,除非你自己重新绘制,否则是难以改变的,这也是使用标准控件的悲哀了。
      

  3.   

    楼主用BCG一类的界面库就可以得到更多定制的机会了。
      

  4.   

    重绘如何进行,CTreectrl没有响应Ondrawitem 和onmesureitem这些函数的。重绘不容易吧。
      

  5.   

    在imagelist中首位置加载一个位图,这个位图可以使用mask颜色使它的背景透明.imagelist中的位图是基于0引索的,你在不需要头像的项目结点上,SetItemImage(hItem, 0)即可
      

  6.   

    to mynamelj(风之羽翼):
    现在不是不透明,其实只要设置了某个item的image为imagelist中不存在的index,已经可以使它透明了。问题是透明了之后有一道间隙(imagelist的图片的大小),现在问题是如何可以去掉该间隙。
      

  7.   

    TO mynamelj(风之羽翼) 请问如何自绘,给个思路。不可能改写Onpaint函数吧。
    他跟一般的控件不同哦。
    而且又没有响应ondrawitem
    该怎么办,请大家明示。
      

  8.   

    就是写到Onpaint中,我曾经绘制过不难.