给ctreectrl添加图标

ASSERT(pmyTreeCtrl-> GetImageList(TVSIL_NORMAL)   ==   NULL);
pmyTreeCtrl-> SetImageList(pmyImageList,   TVSIL_NORMAL);
ASSERT(pmyTreeCtrl-> GetImageList(TVSIL_NORMAL)   ==   pmyImageList);

 
1.CImageList   myImageList;
2.CImageList::Create
3.CTreeCtrl::SetImageList:
CImageList*   SetImageList(   CImageList   *   pImageList,   int   nImageListType   );

 
.h:
HTREEITEM   m_hRootItem; //
CImageList   MyImageList; //
.cpp
//   Create   an   imagelist   for   the   tree   control.
MyImageList.Create(   20,   20,   ILC_COLOR24,   2,   1   );
//   Had   created   the   imagelist(MyImageList)   for   the   tree   control   in   OnInitDialog.
CBitmap   bmImage,   bmSelectedImage;
bmImage.LoadBitmap(   "NORMALIMAGE "   );
bmSelectedImage.LoadBitmap(   "SELECTIMAGE "   );
int   iNo   =   MyImageList.Add(   bmImage.FromHandle(   (HBITMAP)(bmImage)   ),   RGB(   0,   0,   0)   );
int   iNoSelect   =   MyImageList.Add(   bmSelectedImage.FromHandle(   (HBITMAP)(bmSelectedImage)   ),  
RGB(   0,   0,   0)   );
bmImage.DeleteObject();
bmSelectedImage.DeleteObject();
TV_ITEM   TreeItem;
TV_INSERTSTRUCT   Item;
TreeItem.mask   =   TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
TreeItem.iImage   =   iNo;
TreeItem.iSelectedImage   =   iNoSelect;
 


二法
 
当然有方法了,你看下面的代码就知道了。
m_img.Create(   GetSystemMetrics(SM_CXSMICON),  
                    GetSystemMetrics(SM_CYSMICON),  
    ILC_COLOR24,   50,   50);
m_img.SetBkColor(   GetSysColor(COLOR_WINDOW)   );
m_img.Add(ExtractIcon(   AfxGetApp()-> m_hInstance,   "shell32.dll ",   6));
m_img.Add(ExtractIcon(   AfxGetApp()-> m_hInstance,   "shell32.dll ",   3));
m_img.Add(ExtractIcon(   AfxGetApp()-> m_hInstance,   "shell32.dll ",   4));
m_img.Add(ExtractIcon(   AfxGetApp()-> m_hInstance,   "shell32.dll ",   8));
m_img.Add(ExtractIcon(   AfxGetApp()-> m_hInstance,   "shell32.dll ",   11));
m_img.Add(ExtractIcon(   AfxGetApp()-> m_hInstance,   "shell32.dll ",   9));
m_img.Add(ExtractIcon(   AfxGetApp()-> m_hInstance,   "shell32.dll ",   15));
m_dirTree.SetImageList(&m_img,TVSIL_NORMAL);
其中: CImageList   m_img;
                  CTreeCtrl m_dirTree;
这个是我做的一个关于得到系统所有目录滴例子中一段代码,呵呵……(使用的图标全部是系统图标)


三法
 
图标少的话,可以把所有图标做成一个bmp,然后loadbitmap,用索引操作.
或者:
CBitmap   bmp;
bmp.LoadBitmap(IDB_BMP1);
...
这里把所有图标加入imagelist
m_treeList.SetImageList(&m_imageList,   TVSIL_NORMAL);


四法

建立一个CTreeCtrl控制成员 m_Tree;

使用图标的方法:

Step1:   //load icon

HICON icon[4];

Icon[0]=AfxGetApp()->LoadIcon(IDI_ICON1);

Icon[1]=AfxGetApp()->LoadIcon(IDI_ICON2);

Step2: //创建CImageList

CImageList *ImageList4Tree = new CImageList;

ImageList4Tree.Create(16,16,0,4,4); //16,16为图标分辩率,4,4为该list最多能容纳的图标数

For(int i=0;i<2;i++)

{

       ImageList4Tree->Add(Icon[i]); //读入图标

}

Step3: //使用创建好的CImageList

m_Tree.SetImageList(ImageList4Tree);

Step4: //在添加项的同时选用图标

m_Tree.InsertItem(itemName,0,1,parentItem); //第2个参数是item在添加好后的图标                                                                          //第3个参数为item在被选中后的图标

 

 


五法

 

 

 

 

 


在MFC中应用CTreeCtrl控件的技巧
 
首先,我们要创建一个基本对话框的MFC工程MFC_TreeCRTL。然后在资源视图中插入两个Dialog,ID分别为IDD_DIALOG11和IDD_DIALOG211,都更改Style属性为Child,Border属性为None,为它们建立两个类,分别命名为Cdialog11和Cdialog211,并在MFC_TreeCRTLDlg.CPP文件中包含dialog11.h和dialog211.h两个头文件。再导入几个资源图标作为树形控件节点的图标及装饰面板。最后在主面板上添加一个CTreeCtrl控件,ID为默认,并在ClassWizard中添加它的一个变量,命名为m_mytree。
接着,我们进行具体代码编写。
我们必须在CMFC_TreeCRTLDlg 类中加入这些变量和函数
CDialog * m_treePages[2];
CString node_name;
BOOL InitMytree();
我们还要在CMFC_TreeCRTLDlg 类的构造函数中为m_treePages[2]分配空间,m_treePages[0]=new Cdialog11;   m_treePages[1]=new Cdialog211;
InitMytree()函数是 m_mytree 的初始化过程
BOOL CMFC_TreeCRTLDlg::InitMytree()
{
 //节点的图标
 int i=0;
 int i_count=2;
 //载入图标
 HICON icon[4];
 icon[0]=AfxGetApp()->LoadIcon (IDI_ICON6);
 icon[1]=AfxGetApp()->LoadIcon (IDI_ICON7);
 //创建图像列表控件
 CImageList *m_imagelist=new CImageList;
 m_imagelist->Create(16,16,0,7,7);
 m_imagelist->SetBkColor (RGB(255,255,255));
 for(int n=0;n<i_count;n++)
 {
  m_imagelist->Add(icon[n]); //把图标载入图像列表控件
 }
 m_mytree.SetImageList(m_imagelist,TVSIL_NORMAL); //为m_mytree设置一个图像列表,使CtreeCtrl的节点显示不同的图标
 m_mytree.SetBkColor(RGB(0,250,255));//设置m_mytree的背景色
 //创建节点
 //父节点
 HTREEITEM root0=m_mytree.InsertItem("Dialog1",0,1,TVI_ROOT,TVI_LAST);
 HTREEITEM root1=m_mytree.InsertItem("Dialog2",0,1,TVI_ROOT,TVI_LAST);
 //一层子节点
 HTREEITEM sub_son0=m_mytree.InsertItem("Dialog 1-1",0,1,root0,TVI_LAST);
 HTREEITEM sub_son1=m_mytree.InsertItem("Dialog 2-1",0,1,root1,TVI_LAST);
 //二层孙子节点
 HTREEITEM sub_m_son0=m_mytree.InsertItem("Dialog 2-1-1",0,1,sub_son1,TVI_LAST);
 //建立节点对应的Dialog
 m_treePages[0]->Create(IDD_DIALOG11,this);
 m_treePages[1]->Create(IDD_DIALOG211,this);
 m_treePages[0]->ShowWindow(SW_SHOW);
 m_treePages[1]->ShowWindow(SW_HIDE);
 //把Dialog移到合适位置
 CRect m_rect;
 GetClientRect(m_rect);
 m_rect.left=200;
 m_treePages[0]->MoveWindow(m_rect);
 m_treePages[1]->MoveWindow(m_rect);
 return true;
}
始初化完成后,我们要添加CTreeCtrl的消息响应事件,这样才能让它按我们的要求起作用。我们打开Class Wizard点选IDC_TREE1添加TVN_SELCHANGED消息,并在消息响应函数中写入代码。
void CMFC_TreeCRTLDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
 // TODO: Add your control notification handler code here
 UpdateData(true);
 node_name=m_mytree.GetItemText(pNMTreeView->itemNew.hItem);
 //在标题栏显示节点信息
 SetWindowText(node_name);
 //切换面板
 if(node_name=="Dialog 1-1"){
  m_treePages[0]->ShowWindow(SW_SHOW);
  m_treePages[1]->ShowWindow(SW_HIDE);
 }
 else if(node_name=="Dialog 2-1-1"){
  m_treePages[0]->ShowWindow(SW_HIDE);
  m_treePages[1]->ShowWindow(SW_SHOW);
 }
 UpdateData(false);
 *pResult = 0;
}
最后,我们在 CMFC_TreeCRTLDlg::OnInitDialog()初始化函数里调用InitMytree()函数。

 

————————————————————————————————————————————————————————————————————

Shell32.Dll 图标资源对照表
001:默认图标(无扩展名文件)
002:默认文本
003:EXE文件
004:文件夹闭合
005:文件夹打开
006:5.25" 5寸盘
007:3.5" 3寸盘/
008:移动存储
009:磁盘
010:网络硬盘
011:网络硬盘(离线)
012:空CD驱动器
013:Ram 盘
014:全球
015:不知(图标描述:一个地球上有一个鼠标)
016:我的电脑)
017:打印机
018:网上邻居
019:工作组
020:查看(详细描述:工具栏上的"平铺"、"图标"、"列表"、"详细信息"、的图标)
021:历史纪录文档
022:控制面版
023:搜索(描述:单纯的一个搜索放大镜)
024:帮助
025:运行
026:睡眠模式
027:弹出(256色)
028:关闭(描述:好像是关闭电源的那种)
029:共享
030:快捷方式小箭头
031:不知(类似 快捷箭头大小 黑色里有一个小圈圈)
032:回收站[空]
033:回收站[满]
034:网络空间文件夹
035:显示桌面
036:控制面版(256色)
037:{与020 相同} 查看(描述:工具栏上的"平铺"、"图标"、"列表"、"详细信息"、的图标)
038:打印机文件夹 (256色)
039:字体文件夹
040:任务栏和开始菜单
041:音频CD
042:不知(图标描述:和上Ftp的时候地址栏的图标一样。)
043:不知(图标描述:底层一个文件夹图标,顶层一个电脑图标)
044:收藏夹
045:登陆/注销
046:搜索文件夹
047:Windows 自动更新
048:不知(图标描述:一把锁)
049:不知(图标描述:底层一个文件夹窗口,顶层一个蓝色屏幕电脑图标)
050~053:都是空白图标
054:未知磁盘
133:不知(图标描述:层叠着的空白文件)
134:搜索(详细描述:打开方式那里的搜索。)
135:搜索我的电脑
137:{与022 相同} 控制面版
138:打印机和传真
139:添加新的打印机
140:网络打印机
141:不知(图标描述:一个打印机和一个软盘)
142~144:另类回收站[满](描述:和32.33 图标不一样,另一种回收站[满]样式)
145:不知(图标描述:2个文本文档,底层是一个红叉文档,顶层是一个完好文档,好像是完好文档替换损坏文档的意思)
146:复制文件
147:文件重命名
148:不知(图标描述:一个电脑+一个齿轮转移到一个文件夹内,好像是配置备份的意思。)
151:配置文件
152:文本文档
153:批处理文件(256色)
154:DLL文件
155:A字体(不好意思,不知道A字体的全名)
156:TrueType Font Truetype字体
157:Type 1 Font Type 1 字体
160:{与025 相同} 运行
161:删除
165:文件备份硬盘
166:光驱错误校验
167:磁盘碎片
168:安装打印机
169:安装网络打印机
170:不知(图标描述:一个打印机和一个软盘,左上角有一小勾勾)
171:颜色交换文件
172:共享文档
173:{与044 相同}收藏夹!
174:不知(图标描述:一个文件夹,文件夹上有几种颜色.有一个箭头指着,好像是要选择文件颜色还是怎么)
175:连接到
176:新建网络文件夹(256色)
177:不知(图标描述:一个文件夹窗口和一个齿轮,好像是配置文件夹)
178:添加新的连接-
179:不知(图标描述:底层一个地球,顶层一台电脑和主机)
180:不知(图标描述:一个显示器,打开了很多窗口.都缩小到了任务栏)
181:不知(图标描述:一个显示器,显示的空白桌面)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面的是文件夹选项中的图标:
182:在文件夹显示常见任务
183:使用 Windows 传统风格的文件夹
184:在同一窗口中打开每个文件夹
185:在不同窗口中打开不同的文件夹!
186:通过单击打开项目(指向时选定)
187:通过双击打开项目(单击时选定)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
191:另类回收站[空](256色)(描述:和32.33 图标不一样,另一种回收站[空]样式)
192:与191是一个图标样式的回收站[满](256色)
193:网络文件夹
194:不知(图标描述:3把钥匙)
196:传真机
197:安装传真机
198:安装网络传真机
199:网络传真机
200:禁止动作
210:文件夹选项
220:用户(256色)
221:电源开关!
222:DVD光盘
223:不知(图标描述:3张层叠的文档)
224:视频文件
225:音频文件
226:图像文件
227:混合媒体文件
228:音频CD (256色)
229:CF卡读卡器
230:Zip驱动器
231:不知(图标描述:类似快捷箭头的向下小图标)
232:{与231 相同} 不知(图标描述:类似快捷箭头的向下小图标)
233:{与008 相同} 移动存储
234:Zip驱动器(无盘)
235:我的文档
236:我的图片
237:我的音乐
238:我的视频
239:Msn
240:取消
241:不知(图标描述:我的文档图标+一个向右的箭头,难道是.........)
242:选择
243:2个文本文档
244:把此文件发布到Web
245:{与017 相同}打印机
246:播放
247:在线音乐商店
248:照相机
249:幻灯片
250:显示 (详细描述:控制面版的“显示”,也就是桌面属性)
251:在线定购打印机
252:打印图片
253:不知(图标描述:一个默认图标,中间一个红色的勾勾)
254:{与032 相同} 回收站[空]
255:前一文件夹
256:{与146 相同} 复制文件
257:{与175 相同} 连接到
258:新建网络共享文件夹
259:网络安装向导
260:将文件烧制到CD
261:将软件刻录到CD
262:将光盘仍到回收站
263:帮助
264:复制到文件夹
265:电子邮件
266:复制到CD
267:共享文件夹
268:辅助功能选项
269:用户帐户
270:桌面主题
271:添加/删除程序
272:打印机和其他硬件
273:网络和Internet连接!
274:选项
275:性能和维护
276:日期、时间、语言和区域选项
277:声音、语音和音频设备
278:批处理
279:{与269 相同} 用户帐户
281:放大镜
282:语音
283:屏幕键盘
284:不知(图标描述:2个黑白三角型组成的正方型图标)
289:帮助文档
290:确定、开始、Go 。
291:DVD驱动器
292:增强CD
293:未知CD
294:CD-ROM光盘
295:CD-R光盘
296:CD-RW光盘
297:DVD-RAM光盘
298:DVD-R光盘
299:MP3 播放器
300:大磁带驱动器
301:小磁带驱动器
302:普通CD
303:CF卡
304:DVD-ROM光盘
305:{与008 相同} 移动存储
306:PC卡
307:SD卡
308:智能卡
309:{与248 相同} 照相机
310:手机
311:不知(图标描述:底层一个地球,顶层一个打印机)
312:JAZ驱动器
313:{与230 相同} Zip驱动器
314:PDA
315:扫描仪
316:扫描仪和相机
317:DV机
318:DVD-RW光盘
319:新建文件夹
320:{与266 相同} 复制到CD
321:{与022 相同} 控制面版2
322:{与044 相同} 收藏夹
323:{与023 相同} 搜索(描述:单纯的一个搜索放大镜)
324:{与024 相同} 帮助
325:{与045 相同} 登陆/注销
326:{与020 相同,只不过小一点} 查看(描述:工具栏上的"平铺"、"图标"、"列表"、"详细信息"、的图标)
327:{与021 相同,只不过小一点} 历史纪录文档
328:{与025 相同} 运行
329:关闭
330:{与022 相同} 控制面版
331:弹出
337:不知(图标描述:一个放大镜在找驱动里面的东西)
338:{与200 相同} 禁止动作
512:Internet Explorer
1001:气球提示
1002:{与168 相同} 安装打印机
1003:不知(图标描述:一个主机上有一个勾)
1004:{与289 相同} 帮助文档
1005:不知(图标描述:一个默认图标+一个向右的箭头)
1006:打印文档
1007:{与253 相同} 不知(图标描述:一个默认图标,中间一个红色的勾勾)
1008:暂停打印
1009:开始打印
1010:共享传真机
1011:另类传真机(详细描述:与196有所不同)
8240:另类我的电脑(详细描述:与016有所不同)
16710~16721:所有{与161 相同} 删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值