已经设置了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;

解决方案 »

  1.   

    你没有设置返回值
    参见http://www.csdn.net/develop/read_article.asp?id=22243
      

  2.   

    我现在加了
    return CDRF_DODEFAULT;
    可是还不行,而且用ListView_SetItem(hListView,&lvi);添加的数据也不能显示出来
      

  3.   

    這樣試試:
    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;
    }
      

  4.   

    CDRF_DODEFAULT就是默认操作。如果你需要替换默认的行为,不要使用这个返回值
    ListView_SetItem并非添加数据。你可以用InsertItem或者SetItemCount来设置数据
    另外,CustomDraw需要的是LVS_OWNERDATA风格,而不是LVS_OWNERDRAWFIXED
      

  5.   

    ownerdraw的是使用:
    WM_DRAWITEM 會發送到ListCtrl的父窗口,在父窗口攔截處改變顏色,改變背景顏色 
          FillRect(lpDrawItem->hDC, &lpDrawItem->rcItem, hBrush);改變字體顏色
          SetTextColor(lpDrawItem->hDC, RGB(255,255,255));
          
    不過你是使用的並不是ownerdraw, 而是CustomDraw
      

  6.   

    设置当前风格对应的ImageList为指定大小
    参见MSDN中CListCtrl::SetImageList的文档
      

  7.   

    我的是在SDK中的,怎么设置呢
      

  8.   

    HANDLE_MSG(hWnd, WM_MEASUREITEM, OnMeasureItem);void CXWnd::OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT * lpMeasureItem)
    {
    switch(lpMeasureItem->CtlID)
    { case ID_CHANNEL_LISTVIEW:
    lpMeasureItem->itemHeight = LISTITEM_HEIGHT;
    break; default:
    break;
    }
    }