首页 > 学院 > 开发设计 > 正文

List Control里插入ICO图标及行背景色交替改变

2019-11-08 03:01:46
字体:
来源:转载
供稿:网友

http://blog.csdn.net/sunnyloves/article/details/5707783 来自上面链接

CImageList il; // 定义为成员变量,或者最后加上il.Detach();这句

il.Detach();

恩,多谢楼上的各位.就是问题。 我想到了,,

这是局部成员变量,OnInitDialog()结束后会释放内存,或者可以把CImageList定义为类的成员变量。 在孙鑫的VC++深入详解里面有的,楼上的一点拨,我记得了。

再次感谢,就此结贴。

很多网上的文章 都没仔细说怎么插入ico

今天摸索了下 果然还是很简单的 要用到LVITEM这个结构体,就是具体的项

首先是资源里添加ico 然后.h文件里写全局变量

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

CImageList m_ImageList;

然后cpp代码里

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

<PRe name="code" class="cpp">m_ImageList.Create(32,32, ILC_COLOR32, 2,2); //貌似32位的不会有黑色的阴影 m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_RIGHTICON)); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_WORNGICON)); m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES); m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL); m_ListCtrl.InsertColumn(0,m_ColLableStr[0],LVCFMT_CENTER,100); m_ListCtrl.InsertColumn(1,m_ColLableStr[1],LVCFMT_CENTER,100); LVITEM lvItem; lvItem.mask = LVIF_IMAGE | LVIF_TEXT; lvItem.iImage = 0; lvItem.iItem = 0; lvItem.iSubItem = 0; lvItem.pszText = _T("第0列"); m_ListCtrl.InsertItem(&lvItem); lvItem.iImage = 1; lvItem.iItem = 1; lvItem.pszText = _T("第1列"); m_ListCtrl.InsertItem(&lvItem);

============================================

背景交替显示不同颜色可以起到很好的显示效果

代码也很简单

1、派生CListCtrl或者CMFCListCtrl;

2、用类向导实现虚函数OnNMCustomdraw;

3、虚函数里写入下面代码

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

<pre name="code" class="cpp">LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); // TODO: Add your control notification handler code here NMLVCUSTOMDRAW * lplvdr=(NMLVCUSTOMDRAW*)pNMHDR; if (pNMCD->dwDrawStage == CDDS_PREPAINT) { *pResult = CDRF_NOTIFYITEMDRAW; } else if (pNMCD->dwDrawStage == CDDS_ITEMPREPAINT) { //基数行 if ((pNMCD->dwItemSpec % 2)) { lplvdr->clrTextBk = CHARTBACKCOLOR; } *pResult = CDRF_DODEFAULT; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表