看下面代码
SHFILEINFO shFi,sh;
m_hImage = (HIMAGELIST)::SHGetFileInfo("c:\\",\
0,&shFi,sizeof(shFi),SHGFI_SYSICONINDEX|SHGFI_ICON);
m_ImageList.Attach(m_hImage);
m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);
m_ImageList.Detach(); 
执行后,等退出程序,系统所有的大图标都没有了!! 开始菜单一片文字
就算用了m_ListCtrl.GetImageList(LVSIL_NORMAL)->Detach()也不行郁闷中,如何解决????我只是要做一个文件列表视图而已晕啊

解决方案 »

  1.   

    刚才打错
    m_ListCtrl.SetImageList(&m_ImageList,LVSIL_NORMAL);
      

  2.   

    Detach后,系统并没有重新取回系统图标的句柄,
    也就是说系统失去了和图标资源的联系。
    建议使用自己的图标资源。
      

  3.   

    不是啦 , m_ImageList.Detach();图像列表Detach后就释放了图标handle,但是不知道如何让listctrl类释放。
    用自己图标?不是啊,我是要作文件列表(资源管理器),就是要系统图表的。。
      

  4.   

    DWORD dwStyle = ::GetWindowLong(GetListCtrl().GetSafeHwnd(),GWL_STYLE); 
    dwStyle |= LVS_SHAREIMAGELISTS;
    ::SetWindowLong(GetListCtrl().GetSafeHwnd(),GWL_STYLE,dwStyle);
      

  5.   

    对于HIMAGELIST的释放使用ImageList_Destroy( HIMAGELIST );,在COMMCTRL.h中声明
      

  6.   

    在OnDestroy()加入 m_SmallImgList.Detach();
      

  7.   

    不好意思,在析构函数中加入 m_SmallImgList.Detach();