在CTreeCtrl控件创建节点时添加ICON图标的代码意义
2014-09-17 10:24
411 查看
代码样例:
类中定义:
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这两个参数则代表这个结点没有图标。
类中定义:
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这两个参数则代表这个结点没有图标。
相关文章推荐
- 在CTreeCtrl控件创建节点时添加ICON图标
- MFC树控件CTreeCtrl中为每个item节点动态添加提示信息,并定时更新提示内容
- 给树形目录控件的节点添加图标
- mfc CtreeCtrl上添加图标、将一个对话框放在另一个对话框上、CTreeCtrl响应不同的节点
- VC下ctreectrl的使用方法及节点前图标添加方法
- 创建带节点图片的CTreeCtrl控件
- mfc CTreeCtrl 添加节点 和绑定图标
- VC代码创建按钮和图标控件
- Flex使用<mx:Tree>控件创建树(可添加和删除节点)
- easyui中tree控件添加自定义图标icon
- Flex使用<mx:Tree>控件创建树(可添加和删除节点)
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- 让在vc6创建的程序中,控件可以随xp风格的改变而变化,不用再程序中添加代码来自己实现~
- 为树形控件的每个节点前添加不同的图标
- Flex使用<mx:Tree>控件创建树(可添加和删除节点)
- WPF-使用代码创建Grid行与列,并将控件添加到Grid中的指定行指定列
- TreeView代码动态添加带图标的节点
- 给树形目录控件的节点添加图标
- 给树形目录控件的节点添加图标
- Flex使用<mx:Tree>控件创建树(可添加和删除节点)