从操作系统中检索文件夹图标以在mfc中查看树视图

时间:2014-08-21 22:24:39

标签: mfc

我正在尝试使用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);

但我无法获取文件夹图标。

1 个答案:

答案 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;