CTreeCtrl和CListCtrl的应用【仿Explorer】

来源:互联网 发布:复杂网络算法是干嘛的 编辑:程序博客网 时间:2024/05/07 10:14

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("\\")+1));

 //获得系统的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); ///好像必须这样插入才能载入图标

原创粉丝点击