我的列表选中项之后,一开光标就变成灰色的了。我想让光标移开之后也是蓝色的。请问下大家该怎么自绘。谢谢。
我在
void CXListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)这个函数中添加了一下代码,请帮我看下加错位置了,还是代码有问题。或者是应该在那个函数中修改。谢谢 POSITION pos = GetFirstSelectedItemPosition();
        int index = GetNextSelectedItem(pos);
if (index == nItem)//如果要刷新的项为当前选择的项,则将文字设为白色,背景色设为蓝色
        {
            pLVCD->clrText = RGB(255,255,255);        //Set the text to white
            pLVCD->clrTextBk = RGB(0,0,255);        //Set the background color to blue
        }
*pResult = CDRF_DODEFAULT;

解决方案 »

  1.   

    响应clistctrl的NM_CUSTOMDRAW消息,开始自绘,在消息响应函数里加上:(注意,给你的就是如何自绘,不是完整代码)case CDDS_ITEMPREPAINT | CDDS_SUBITEM:LVITEM   pItem;
    ZeroMemory (&pItem, sizeof(LVITEM));
    pItem.mask  = LVIF_IMAGE | LVIF_STATE | LVIF_TEXT;
    pItem.iItem = nItem;
    pItem.stateMask = LVIS_SELECTED | LVIS_FOCUSED;
    GetItem(&pItem);if (pItem.state & CDIS_SELECTED || pItem.state & CDIS_FOCUS)
    {
    lplvcd->clrTextBk  =  CDrawingManager::PixelAlpha(GetSysColor (COLOR_HIGHLIGHT), .5, .77, .87);
    lplvcd->clrText = GetSysColor ( COLOR_HIGHLIGHTTEXT );
    } pDC->SetBkMode(TRANSPARENT);
    pDC->FillSolidRect(rectLabel, lplvcd->clrTextBk);
    pDC->SetTextColor (lplvcd->clrText);