CTreeCtrl和CListCtrl的应用【仿Explorer】

1.获取系统ImageList

//获得系统路径
 char szSysDir[MAX_PATH];
 CString strBuf;
 memset(szSysDir, 0, MAX_PATH);
 GetWindowsDirectory(szSysDir, MAX_PATH);
 strBuf = szSysDir;
 sprintf(szSysDir, "%s", strBuf.Left(strBuf.Find("));

 //获得系统的ImageList
 HIMAGELIST himlLarge;
 HIMAGELIST himlSmall;
 SHFILEINFO sfi;
 himlSmall = (HIMAGELIST)SHGetFileInfo(szSysDir, NULL, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
 himlLarge = (HIMAGELIST)SHGetFileInfo(szSysDir, NULL, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_LARGEICON);

2.设置CImageList

成功方法:

m_ImageList.Attach(himlSmall);
 m_trMain.SetImageList(&m_ImageList, TVSIL_NORMAL);//TreeList的ImageList

//设置ListCtrl ImageList
 ::SendMessage(m_ListCtrl.m_hWnd,LVM_SETIMAGELIST,(WPARAM)LVSIL_SMALL,(LPARAM)himlSmall);
 ::SendMessage(m_ListCtrl.m_hWnd,LVM_SETIMAGELIST,(WPARAM)LVSIL_NORMAL,(LPARAM)himlLarge);//ListCtrl的ImageList

插入成功方法:

SHGetFileInfo("", FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_SMALLICON|SHGFI_USEFILEATTRIBUTES);
   HTREEITEM hNow = m_trMain.InsertItem(ff.GetFileName(), sfi.iIcon, sfi.iIcon, hParent);

 

SHGetFileInfo(ff.GetFilePath(), FILE_ATTRIBUTE_DIRECTORY,&sfi,sizeof(sfi), SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_USEFILEATTRIBUTES);
   m_ListCtrl.InsertItem(0, str, sfi.iIcon); ///好像必须这样插入才能载入图标

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值