已经设置了LVS_OWNERDRAWFIXED
case WM_NOTIFY:
LPNMHDR pnmh;
pnmh=(LPNMHDR)lParam;
switch(pnmh->code)
{
case NM_CUSTOMDRAW:
LPNMLVCUSTOMDRAW lnmcd;
lnmcd=(LPNMLVCUSTOMDRAW)lParam;
switch(lnmcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
if(lnmcd->nmcd.dwItemSpec==0)
{
lnmcd->clrTextBk=RGB(255,0,0);
}
else if(lnmcd->nmcd.dwItemSpec==1)
{
lnmcd->clrTextBk=RGB(0,255,0);
}
break;
}
break;
}
break;
case WM_NOTIFY:
LPNMHDR pnmh;
pnmh=(LPNMHDR)lParam;
switch(pnmh->code)
{
case NM_CUSTOMDRAW:
LPNMLVCUSTOMDRAW lnmcd;
lnmcd=(LPNMLVCUSTOMDRAW)lParam;
switch(lnmcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
if(lnmcd->nmcd.dwItemSpec==0)
{
lnmcd->clrTextBk=RGB(255,0,0);
}
else if(lnmcd->nmcd.dwItemSpec==1)
{
lnmcd->clrTextBk=RGB(0,255,0);
}
break;
}
break;
}
break;
解决方案 »
- 单文档界面问题
- 对话框之前的数据交换
- 窗口为什么无法拆分?
- 郁闷死了,谁有隐藏进程的程序(可以运行的),麻烦给我发一份,立刻给分,谢谢!
- 100分狂送。。。在线等
- 关于图像边缘的融合问题
- 调用自己写的MFC dll出错,
- 搜索了全部csdn的帖子都没发现一个好的解决办法,如何编程截取游戏中的画面?
- 求助:请大家帮忙参考一下,谢谢了
- CDockablePane 添加定时器 进入ontimer 后 窗口消失,调用ShowPane可以出现 定时时间到达后窗口又消失
- edit 的输入控制
- char* ,char array[100],CString (指向字符的指针,字符数组和字符串类)相互赋值是怎么做的?
参见http://www.csdn.net/develop/read_article.asp?id=22243
return CDRF_DODEFAULT;
可是还不行,而且用ListView_SetItem(hListView,&lvi);添加的数据也不能显示出来
switch(lnmcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
if(lnmcd->nmcd.dwItemSpec==0)
{
lnmcd->clrTextBk = RGB(255,0,0);
*pResult = CDRF_NEWFONT;
}
else if(lnmcd->nmcd.dwItemSpec==1)
{
lnmcd->clrTextBk=RGB(0,255,0);
*pResult = CDRF_NEWFONT;
}
break;
}
ListView_SetItem并非添加数据。你可以用InsertItem或者SetItemCount来设置数据
另外,CustomDraw需要的是LVS_OWNERDATA风格,而不是LVS_OWNERDRAWFIXED
WM_DRAWITEM 會發送到ListCtrl的父窗口,在父窗口攔截處改變顏色,改變背景顏色
FillRect(lpDrawItem->hDC, &lpDrawItem->rcItem, hBrush);改變字體顏色
SetTextColor(lpDrawItem->hDC, RGB(255,255,255));
不過你是使用的並不是ownerdraw, 而是CustomDraw
参见MSDN中CListCtrl::SetImageList的文档
{
switch(lpMeasureItem->CtlID)
{ case ID_CHANNEL_LISTVIEW:
lpMeasureItem->itemHeight = LISTITEM_HEIGHT;
break; default:
break;
}
}