SHFILEINFO sfi_root;
//获取计算机图标
LPITEMIDLIST pidl = NULL;
SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &pidl);
SHGetFileInfo((LPCTSTR) pidl, 0, &sfi_root, sizeof(sfi_root), SHGFI_DISPLAYNAME|SHGFI_ICON | SHGFI_PIDL);//如果只获取图标,可以去掉SHGFI_DISPLAYNAME
HICON computer = sfi_root.hIcon;
//获取驱动器图标
wchar_t driver_name[4] = L"A:\\";
::SHGetFileInfo(driver_name,0, &sfi, sizeof(sfi), SHGFI_DISPLAYNAME|SHGFI_ICON);
文件图标获取与驱动器类似,路径后面加入名字即可
可以结合CFileFind进行文件目录遍历时
CFileFind FileFind;
wchar_t path_temp[7] = L"C:\\*.*";
BOOL res = FileFind.FindFile(path_temp);
res = FileFind.FindNextFileW();
CString dic_name = FileFind.GetFileName();
CString file_path = FileFind.GetFilePath();//获取到文件路径
//路径代入即可
SHFILEINFO sfi_folder;
::SHGetFileInfo(file_path,0, &sfi_folder, sizeof(sfi_folder),SHGFI_ICON);