CImageList容纳图标有最大限制吗?该怎么处理
CImageList容纳图标有最大限制吗?
最近写了一个文件搜索的程序,基于MFC对话框的,我将符合搜索条件的文件信息插入了一个CListCtrl的报表中,第一列是文件类型的图标,可遇到一个问题就是当我插入数目达4873的时候,再插入的图标就显示不出来了,Add(hIcon)就返回-1了,哪位高手知道这是咋回事,是CImageList容纳图标有最大限制吗??? 还是CListCtrl的问题???请高手给予指点
------解决方案--------------------
应该不至于的。你跟进去看一下Add函数,
------解决方案--------------------
MFC有源码可以跟进吗?
还是查下MSDN吧。
------解决方案--------------------
------解决方案--------------------
你用什么方式取得的图标?
需要插入么?
我一般都是用SHGetFileInfo取L""或L"C:\\",传入SHGFI_SYSICONINDEX | SHGFI_SMALLICON。这样得到的系统图标列表。直接把列表SetImageList给CListCtrl。以后每次对文件SHGetFileInfo,直接用返回SHFILEINFO的那个图标索引值iIcon就可以了,不过这个函数总是会额外给你创建了一个图标对象hIcon,这个对象必须DestoryIcon删除掉。不过更规范的方式是用IShellIcon等接口来实现。
估计你也是每次将Icon插入CImageList后忘记把原来那个图标给Destory了,总不释放,系统资源就耗尽了。
最近写了一个文件搜索的程序,基于MFC对话框的,我将符合搜索条件的文件信息插入了一个CListCtrl的报表中,第一列是文件类型的图标,可遇到一个问题就是当我插入数目达4873的时候,再插入的图标就显示不出来了,Add(hIcon)就返回-1了,哪位高手知道这是咋回事,是CImageList容纳图标有最大限制吗??? 还是CListCtrl的问题???请高手给予指点
------解决方案--------------------
应该不至于的。你跟进去看一下Add函数,
------解决方案--------------------
MFC有源码可以跟进吗?
还是查下MSDN吧。
------解决方案--------------------
------解决方案--------------------
你用什么方式取得的图标?
需要插入么?
我一般都是用SHGetFileInfo取L""或L"C:\\",传入SHGFI_SYSICONINDEX | SHGFI_SMALLICON。这样得到的系统图标列表。直接把列表SetImageList给CListCtrl。以后每次对文件SHGetFileInfo,直接用返回SHFILEINFO的那个图标索引值iIcon就可以了,不过这个函数总是会额外给你创建了一个图标对象hIcon,这个对象必须DestoryIcon删除掉。不过更规范的方式是用IShellIcon等接口来实现。
估计你也是每次将Icon插入CImageList后忘记把原来那个图标给Destory了,总不释放,系统资源就耗尽了。