VC Listview 在Release版本下无法动态改变图标的解决方法
来源:互联网 发布:帮客创投网络借贷 编辑:程序博客网 时间:2024/04/25 13:05
VC Listview(list Control) 在Release版本下无法动态改变图标的解决方法
首先我们可以一个小例子说明
ImgList.Create(16, 16, ILC_COLOR24, 0, 0);
CBitmap bitmap_ok, bitmap_err;
bitmap_ok.LoadBitmap(IDB_OK);
bitmap_err.LoadBitmap(IDB_ERR);
ImgList.Add(&bitmap_ok, (CBitmap *)NULL);
ImgList.Add(&bitmap_err, (CBitmap *)NULL);
m_list.SetImageList(&ImgList, LVSIL_SMALL);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "状态", LVCFMT_CENTER, 40);
m_list.InsertItem(0, "a", 0);
这里是失败的更改代码
LVITEM item;
item.iItem=0;//测试第一行,为图标
item.mask=LVIF_IMAGE|LVIF_TEXT;
item.iImage=0;//图标索引
item.pszText="a";//测文字
if(m_list.SetItem(&item) ) //查看SetItem是否成功
{
AfxMessageBox("OK");
}
else
{
AfxMessageBox("ERROR");
}
如果这样写出来的在debug就是会变色,在release中就是无法动态改变图标,反回值是无效
测试后发现,加上memset(&item,0,sizeof(LVITEM));或item.iSubItem=0;就可以了!
LVITEM item;
//memset(&item,0,sizeof(LVITEM));
item.iItem=0;
//item.iSubItem=0;
item.mask=LVIF_IMAGE|LVIF_TEXT;
item.iImage=1;
item.pszText="b";
if(m_list.SetItem(&item) )
{
AfxMessageBox("OK");
}
else
{
AfxMessageBox("ERROR");
}
以上代码最好加上memset(&item,0,sizeof(LVITEM));,清一下结构体,然后要有指定item.iSubItem值的习惯.
在item.iItem=0;时memset(&item,0,sizeof(LVITEM))和item.iItem=0,只要其一就会正确运行了!
总结:平时我们开发时都是在debug模式下的,在debug模式下除有大量的调试信息也会对一些结构体和对象等变量等少部份进行初始化(估计是为方便调试),但在Release版本不会(估计是为优化速度),就会有一些随机数之类的潜在影响,所以在定义一些结构体和对象时最好手动做一些初始化避免不必要的麻烦!
- VC Listview 在Release版本下无法动态改变图标的解决方法
- visual c 6.0 编写串口程序release版本在非vc电脑上无法运行的解决方法
- visual c 6.0 编写串口程序release版本在非vc电脑上无法运行的解决方法
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行(转)
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行
- vc下debug 版本和release版本的区别
- vc下debug 版本和release版本的区别
- vc下debug 版本和release版本的区别
- vc在release下的调试技巧
- FlasCC编译Physx SDK库在Release下无法使用的问题及解决方法
- 解决mingw动态库在vs下调用 release版本中会出现的奇怪问题
- WIN7,WIN8系统下将软件图标锁定在任务栏上,卸载软件后图标无法删除问题的解决方法
- VC release版本下数据无法监视查看或数据莫名变化
- 如何在VC下单步调试Release版本
- VC++在release下对return的优化
- VC调试无法加断点,代码版本不一致的解决方法
- assert在release版本下也执行的问题
- JAVA程序员应掌握的基本技能
- zxv10 h608b 破解
- jQuery Ajax 调用 Asp.Net WebService 报错 (vs2005)
- Oracle 10G 新特性——ADDM和查询优化建议器
- as3声音控制
- VC Listview 在Release版本下无法动态改变图标的解决方法
- java 存取sql数据datetime
- 国内通信产业和E公司在某一个领域的比较之后的感觉
- Http和Socket连接区别
- getchar、getch区别与用法
- JS加载xml文档
- C# Delegate(委托)与多线程
- 圣诞节清单
- 引用和const引用