VC CListCtrl 图标不显示的问题
程序员文章站
2022-05-26 09:29:01
...
VC CListCtrl 图标不显示的问题
1。没有将CImageList设置为窗体成员变量导致的。
BOOL CMyDlg::OnInitDialog()
{
CImageList images;
images.Create(15, 15, ILC_COLOR16, 1, 1);
images.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_listctrl.SetImageList(&images, LVSIL_NORMAL);
m_listctrl.SetImageList(&images, LVSIL_SMALL);
m_listctrl.SetImageList(&images, LVSIL_STATE);
m_listctrl.InsertItem(0, _T("text"), 0);
}
2.CImageList改成了成员变量后,可以正常显示。于是接下来尝试将ICON换成Bitmap,又出现不能显示的问题,不过只是当选中某个Item的时候,他的图片不能显示。
//CREATE IMAGELIST
m_images.Create(15, 15, ILC_COLOR32, 3, 3);
// Add my bitmap, make all black pixels transparent.
CBitmap bm;
bm.LoadBitmap(IDB_arrow);
m_images.Add(&bm, RGB(0, 0, 0));
开始怀疑是CBitmap为局部变量所致,但是不对。后来查看那个位图资源文件的属性发现是256色的,使用ILC_COLOR32有点不大合适,于是改成了ILC_COLOR16就好了。
3.以上是Debug下解决的问题,后来出现在debug版本中图标可以正常变换,但是Release版本中图标不能变化的问题。网上查贴,一般就是说这可能是由于变量没有初始化造成的(因为debug版本会进行一些初始化,而release则没有),经查,果然如此。
使用的是CListCtrl,在不同情况下要设置不同图片,使用SetItem( ... )方法,其参数是一个结构,虽然该结构有标志位指出要使用结构中的哪个参数来进行设置,但还是要将其他参数清零才行。就是这个结构没有初始化的毛病。
推荐阅读
-
通过删除注册表键值来解决桌面上的Word文档图标显示不正常问题
-
bootstrap3在IE8下Glyphicons图标不显示问题的解决方法
-
ie8 overflow auto 动态更改内容后不立即显示滚动条的问题_html/css_WEB-ITnose
-
VC CListCtrl 图标不显示的问题
-
bootstrap字体图标在谷歌显示正常,在火狐显示异常的问题
-
在uni-app中引用iconfont,和遇到图标引入不显示的问题记录
-
解决layui的动态图标不显示的问题
-
ie8 overflow auto 动态更改内容后不立即显示滚动条的问题_html/css_WEB-ITnose
-
IDEA中application.properties的图标显示不正常的问题及解决方法
-
firefox(ff)下无法显示bootstrap图标问题的解决方案_html/css_WEB-ITnose