我这样修改都没有显示图标,为什么呢?
HICON hicon[1];
hicon[0]=AfxGetApp()->LoadIcon(IDR_TREETYPE);
m_img2.Add (hicon[0]);
filelist.SetImageList (&m_img2,LVSIL_NORMAL);
SetCurrentDirectory(fullpath);
BOOL bWorking = finder.FindFile("*.*");
while (bWorking)
{     
bWorking = finder.FindNextFile();
filelist.InsertItem(0,(LPCTSTR)finder.GetFileName(),0); 

}
奇怪呀,错在哪儿了?
请指教,谢谢了!拜托了!!!

解决方案 »

  1.   

    要知道,文件本身不包含ICON的,文件的ICON是根据组册表来确定的,比如TXT文件也可以换成IE的ICON。如果要找ICON,需要从EXE文件或DLL中得到推荐个软件 名称是ICONBOOK具体你去软件下载的地方搜索一下,里面收集了好多很漂亮的ICON
      

  2.   

    谢谢我要做的是资源管理器,切分窗口后,左边是树,右边是列表我并不是要修改图标,只是想显示出文件名及其图标,应该是和Windows一样的,所以先要得到图标和文件名,并把它们显示出来,可是现在只有文件名,得不到相应的图标。所以先想让它们显示出个其它的图标,结果也没有。怎么办呢?请你帮助。
    谢谢
      

  3.   

    那向列表中的项加个图标不就是应该这样吗?
    先定义一个imagelist,加入时用它的序列号
    为什么没有呢?
    请帮我看看有什么错误吗?
    HICON  hicon[1];
    hicon[0]=AfxGetApp()->  LoadIcon(IDR_TREETYPE);
    m_img2.Add  (hicon[0]);//添加了一个图标,其序列号是0吧?
    filelist.SetImageList  (&m_img2,LVSIL_NORMAL);//这一段用来显示fullpath中的文件名
    SetCurrentDirectory(fullpath);
    BOOL  bWorking  =  finder.FindFile("*.*");
    while  (bWorking)
    {          
        bWorking  =  finder.FindNextFile();
        filelist.InsertItem(0,(LPCTSTR)finder.GetFileName(),0);  
    //“0”应该是序列号吧
        
    }
     谢谢
      

  4.   

    这好象是列表控件的图象列表的问题
    好象里面就没有图标似的,为什么呢?
    IDR_TREETYPE是选择浏览器风格时,自带的图标我又换了一个,也还是没有请帮帮忙吧,谢谢了!!!
      

  5.   

    太让人生气了,只要把CImageList m_img2;在头文件中定义就可以了
    为什么呢?不明白!!!哪位能帮我讲一下,谢谢了。
      

  6.   

    因为你在方法中定义变量CImageList  m_img2,
    方法结束后m_img2的空间就释放了,所以你的ListCtrl根本找不到image list.
      

  7.   

    同意Jeffrey712(准备西行) 的,可以把CImageList定义为全局变量!
      

  8.   

    我的这段代码是写在下面这句里面的:
    void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 

    CMyTreeView *pView = (CMyTreeView *)(mFrm->m_wndSplitter.GetPane(0,1)); 
    CListCtrl & filelist = pView->GetListCtrl(); 
    filelist.DeleteAllItems(); CFileFind finder;
    HICON hicon[1];
    hicon[0]=AfxGetApp()->LoadIcon(IDI_ICON1);
    m_img2.Create( 32,32,ILC_COLOR24, 50, 50);
    m_img2.Add (hicon[0]);
    filelist.SetImageList (&m_img2,LVSIL_NORMAL);
    SetCurrentDirectory(fullpath);
    BOOL bWorking = finder.FindFile("*.*");
    while (bWorking)
    {     
    bWorking = finder.FindNextFile();
    filelist.InsertItem(0,(LPCTSTR)finder.GetFileName(),0); 
    }
    finder.Close ();

    因为是树中的选择改变,则右边的内容就改变,所以写在这里面
    但是程序启动时,对树的文件夹的第一次选择正确,以后就会出错了,忽略过后,还是每项都会有图标的。
    m_img2的定义在头文件中
    为什么呢?请指教,谢谢。
      

  9.   

    就是把img2定义在头文件中后,运行时就会出错了。
    第一次出现我要的那个图标时,不会有错,可是再选树的节点时就会有错了。要用全局变量呀?有必要吗?谢谢
      

  10.   

    因为你的m_img2重复Create了,
    你应该把下面这段都写到初始化程序中去,
    HICON  hicon[1];
    hicon[0]=AfxGetApp()->  LoadIcon(IDI_ICON1);
    m_img2.Create(  32,32,ILC_COLOR24,  50,  50);
    m_img2.Add  (hicon[0]);
      

  11.   

    另外,你前面用的SHGetFileInfo的方法也是可行的,不一定要LoadIcon
      

  12.   

    因为先用SHGetFileInfo没有得到结果,所以先用LoadIcon试试
    毕竟要得到和文件名相应的图标,还是要用那个呀谢谢Jeffrey712(准备西行)
    (如果西行了,也会上CSDN吗?嘻嘻!但愿上吧)