正在写一个类似资源管理器的界面,中间需要使用 SHGetFileInfo 获取文件的图标将其显示在listview上,我的做法是将 SHGetFileInfo 得到的图标复制到和view关联的imagelist上。主要代码如下:SHFILEINFO sfi;
if (::SHGetFileInfo (pathname, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO),SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_TYPENAME |SHGFI_ICON|SHGFI_SMALLICON ))
{
    if (imglist.Add(sfi.hIcon) != -1)
    {
        // do something...
    }
}运行过程中发现如果文件非常多的时候,多次调用 SHGetFileInfo (调用几千次的情况)得到的 sfi.hIcon 为空值,这是怎么回事?