我正在尝试使用SHGetFileInfo()从操作系统获取树视图中的文件夹图标。 但我无法在树状视图中获取文件夹图标。
我使用CSplitterWnd创建树视图。
TVINSERTSTRUCT tvInsert;
HTREEITEM hCategory;
SHFILEINFO sfi;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT | TVIF_PARAM| TVIF_IMAGE ;
::SHGetFileInfo(pRoot->GetName(), 0, &sfi, sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES|SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
tvInsert.item.lParam =(LPARAM) pRoot;
tvInsert.item.pszText = (LPWSTR)pRoot->GetName().GetString();
tvInsert.item.iImage = sfi.iIcon;
hCategory= GetTreeCtrl().InsertItem(&tvInsert);
但我无法获取文件夹图标。
答案 0 :(得分:0)
我不知道您的具体问题是什么,但我使用以下代码来缓存文件夹图片:
TCHAR szWindows[MAX_PATH+1] = { 0 };
GetWindowsDirectory(szWindows, MAX_PATH);
SHFILEINFO sfi = { 0 };
UINT nFlags = SHGFI_SYSICONINDEX | (m_bLargeIcons ? SHGFI_ICON : SHGFI_SMALLICON);
HIMAGELIST hIL = (HIMAGELIST)SHGetFileInfo(szWindows, 0, &sfi, sizeof(sfi), nFlags);
nFolderImage = sfi.iIcon;