现在的位置: 首页 > 综合 > 正文

在CTreeCtrl控件创建节点时添加ICON图标的代码意义

2018年06月07日 ⁄ 综合 ⁄ 共 2276字 ⁄ 字号 评论关闭

代码样例:

类中定义:

CTreeCtrl m_treeCtrl;

CImageList cImageList;

代码实现:

HICON hIcon;

//首先创建ImageList

//16,16表示cImageList中图标大小为16*16,

//4 表示cImageList初始状态储存4个图标;

//在系统需要为新添加的图象而改变图象列表大小时,指定图象列表能增加的新图象个数为2。

CimageList.Create(16, 16,  ILC_COLOR32| ILC_MASK, 4, 2);

//从资源文件中导出一个资源图片

hIcon= ::AfxGetApp()->LoadIconW(IDI_ICON);

//添加icon类型图片进入ImageList

cImageList.Add(hIcon);

//关联树控件和图片list

m_treeCtrl.SetImageList(&cImageList);

//插入一个带图标的节点,未选中时显示imagelist中的第0个图片,选中时显示第1个图片

m_treeCtrl.InsertItem(_T("带图标节点"), 0, 1, NULL);

 

各个函数的分析:

BOOL Create(int cx,int cy,UINT nFlags,int nInitial,int nGrow );

函数功能:初始化图像列表并绑定对象

参数:
cx
Dimensions of each image, in pixels.
cy
Dimensions of each image, in pixels.
nFlags
Specifies the type of image list to create.

可以是以下值的组合:

ILC_COLOR、ILC_COLOR4、ILC_COLOR8、ILC_COLOR16、ILC_COLOR24、ILC_COLOR32、 ILC_COLORDDB和ILC_MASK;

意义:

ILC_COLOR 缺省模式,默认=ILC_COLOR4。老版本的系统是ILC_COLORDDB使用设备依赖位图。
ILC_COLOR4 4位DIB位图,表示生成的位图每个像素是由4位组成,也就是16色位图。
ILC_COLOR8 同上,8位位图,256色。
——上面2个都要用到调色板。
ILC_COLOR16 16 位DIB(32/64k 色) 位图。
ILC_COLOR24 24 位真彩色位图。
ILC_COLOR32 32位真彩,显示效果跟ILC_COLOR24位一样,多了一个Alpha通道,记录透明度,方便操作。
ILC_COLORDDB 设备依赖位图,表示颜色位跟设备(操作系统记录着)相关。
ILC_MASK 使用掩膜。如果包含这个值,那么当前ImageList使用2个位图,指定一个单色位图,将其做为掩膜,掩膜是用来透明的,就是在显示的时候,会将这个单色位图与图片与DC做一系列的位操作,最终达到某些色值透明的效果。从单色位图角度来看,就是单色位图与图片进行“按位异或”操作,如果得到的像素点颜色值为黑色,就按透明处理。

参数写0,就==ILC_COLOR。默认


nInitial
Number of images
that the image list initially contains.
nGrow
Number of images by which the image list can grow when the system needs to resize the list to make room for new images. This parameter represents the number of new images the
resized image list can contain.

 

 

AfxGetApp()->LoadIcon(LPCTSTR lpszResourceName)

从资源中load一个ico图片进来

返回值:指向包含影像的位图的指针

LoadIcon 注意:资源文件需要为ico才可以

如果图片size不确定就要用AfxGetApp()->LoadImage(LPCTSTR lpszResourceName )

eg:    m_hIcon=AfxGetApp()->LoadIcon(IDI_MYICON);   

cImageList.Add( HICON hIcon );

返回值:若成功返回的是第一个新影像的以0为基准的索引,否则返回-1

参数:pbmimage 指向包含影像的位图的指针,影像的数量以位图的宽度而定

说明:在影像列表中添加一个或多个影像或图标。

 

CTreeCtrl.SetImageList(&cImageList)

设置一个与树形查看器控件关联的图像列表的句柄

 

m_treeCtrl.InsertItem(_T("带图标节点"), 0, 1, NULL);

原型:HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage,
HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST)添加结点,其中参数nImage为结点没被选中时所使用图片序号,nSelectedImage为结点被选中时所使用图片序号。

如果没有设置int nImage, int nSelectedImage这两个参数则代表这个结点没有图标。

 

掩码(掩膜)详解参看http://blog.csdn.net/iamshuke/archive/2010/07/20/5749897.aspx

http://blog.sina.com.cn/s/blog_4b3c1f950100b0eh.html

抱歉!评论已关闭.