我之前已经做过,但是令我惊讶的是CListCtrl不会以彩色显示文本。我在对话框上有列表视图控件。我正在使用VS2010,是否还需要其他一些东西?

void CGameView::OnCustomdrawListBatsmen(NMHDR *pNMHDR, LRESULT *pResult)
{
    //LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);

    LPNMLVCUSTOMDRAW pNMLVCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);
    *pResult = CDRF_DODEFAULT;

    switch( pNMLVCD->nmcd.dwDrawStage )
    {
    case CDDS_PREPAINT:
        *pResult = CDRF_NOTIFYITEMDRAW;
        break;

    case CDDS_ITEMPREPAINT:
        pNMLVCD->clrTextBk = RGB(255,0,0);
        pNMLVCD->clrText = RGB(255, 0, 0 );
        *pResult = CDRF_NOTIFYSUBITEMDRAW;
        break;

    case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
    //  if( pNMLVCD->iSubItem == 1 )
            pNMLVCD->clrTextBk = RGB(0,255,0);
            pNMLVCD->clrText = RGB(255, 0, 0 );
        break;
    }
    *pResult = 0;
}


当我调试它时,该控件甚至永远不会通过第一种情况!我不知道吗我是否需要在资源视图中设置列表控件属性?

最佳答案

我解决了这个问题,这是最后一行:

 *pResult = 0;


需要删除它,因为它正在重置开关盒中设置的任何值。

08-06 03:38