VC CListCtrl 图标不显示的问题
2007-07-06 06:41
330 查看
本文记录了本人开发过程中遇到的一些CListCtrl不显示图片的问题的现象和解决过程。
1。没有将CImageList设置为窗体成员变量导致的。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BOOL CMyDlg::OnInitDialog()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
CImageList images;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
images.Create(15, 15, ILC_COLOR16, 1, 1);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
images.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.SetImageList(&images, LVSIL_NORMAL);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.SetImageList(&images, LVSIL_SMALL);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.SetImageList(&images, LVSIL_STATE);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.InsertItem(0, _T("text"), 0);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
2.CImageList改成了成员变量后,可以正常显示。于是接下来尝试将ICON换成Bitmap,又出现不能显示的问题,不过只是当选中某个Item的时候,他的图片不能显示。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//CREATE IMAGELIST
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
m_images.Create(15, 15, ILC_COLOR32, 3, 3);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// Add my bitmap, make all black pixels transparent.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CBitmap bm;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bm.LoadBitmap(IDB_arrow);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
m_images.Add(&bm, RGB(0, 0, 0));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
开始怀疑是CBitmap为局部变量所致,但是不对。后来查看那个位图资源文件的属性发现是256色的,使用ILC_COLOR32有点不大合适,于是改成了ILC_COLOR16就好了。
3.以上是Debug下解决的问题,后来出现在debug版本中图标可以正常变换,但是Release版本中图标不能变化的问题。网上查贴,一般就是说这可能是由于变量没有初始化造成的(因为debug版本会进行一些初始化,而release则没有),经查,果然如此。
使用的是CListCtrl,在不同情况下要设置不同图片,使用SetItem( ... )方法,其参数是一个结构,虽然该结构有标志位指出要使用结构中的哪个参数来进行设置,但还是要将其他参数清零才行。就是这个结构没有初始化的毛病。
1。没有将CImageList设置为窗体成员变量导致的。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
BOOL CMyDlg::OnInitDialog()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
CImageList images;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
images.Create(15, 15, ILC_COLOR16, 1, 1);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
images.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.SetImageList(&images, LVSIL_NORMAL);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.SetImageList(&images, LVSIL_SMALL);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.SetImageList(&images, LVSIL_STATE);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
m_listctrl.InsertItem(0, _T("text"), 0);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
2.CImageList改成了成员变量后,可以正常显示。于是接下来尝试将ICON换成Bitmap,又出现不能显示的问题,不过只是当选中某个Item的时候,他的图片不能显示。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//CREATE IMAGELIST
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
m_images.Create(15, 15, ILC_COLOR32, 3, 3);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// Add my bitmap, make all black pixels transparent.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
CBitmap bm;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bm.LoadBitmap(IDB_arrow);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
m_images.Add(&bm, RGB(0, 0, 0));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
开始怀疑是CBitmap为局部变量所致,但是不对。后来查看那个位图资源文件的属性发现是256色的,使用ILC_COLOR32有点不大合适,于是改成了ILC_COLOR16就好了。
3.以上是Debug下解决的问题,后来出现在debug版本中图标可以正常变换,但是Release版本中图标不能变化的问题。网上查贴,一般就是说这可能是由于变量没有初始化造成的(因为debug版本会进行一些初始化,而release则没有),经查,果然如此。
使用的是CListCtrl,在不同情况下要设置不同图片,使用SetItem( ... )方法,其参数是一个结构,虽然该结构有标志位指出要使用结构中的哪个参数来进行设置,但还是要将其他参数清零才行。就是这个结构没有初始化的毛病。
相关文章推荐
- VC++ 关于ClistCtrl小图标显示的问题!!
- CListCtrl一行显示多个图标问题
- VC 关于让子窗显示图标的问题
- VC++ 文件和应用程序关联,默认图标不显示问题
- CListCtrl一行显示多个图标问题
- VC# 2005中MDI子窗体最大化图标显示问题
- mfc使用CListCtrl显示文件名和图标出现的部分问题
- 解决svn图标不显示的各种问题
- 解决使用VC运行时库函数wprintf和wcount显示中文不正确的问题
- 【VC】Clistctrl 实现拖动文件显示文件名录。
- android问题1-程序图标无法正常显示,只显示机器人图标
- tabbarcontroller 内嵌导航 控制器,2层push hide tabbar 后 ,第二层直接返回根视图控制器选择tabbarcontroller的其它vc 无法显示 tabbar的 问题解决方案
- 网络驱动器无法显示SVN图标问题
- 修复TortoiseGit文件夹和文件状态图标不显示问题
- ToritoiseCVS CVSNT异常及图标无法显示问题
- wince程序 中使用Listview显示图标问题 (C#)
- 在Yii中解决引入本地Bootstrap文件字体图标无法显示问题
- 解决Eclipse中文件SVN图标、版本号不显示的问题
- echarts图标在切换标签时显示不全问题
- vc listctrl里相同的列不同行显示不同图标