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