CListCtrl 报告视图中没有颜色

Posted

技术标签:

【中文标题】CListCtrl 报告视图中没有颜色【英文标题】:No color in CListCtrl report view 【发布时间】:2014-07-08 22:00:04 【问题描述】:

我以前做过,但令我惊讶的是 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;

当我调试它时,控件甚至从未通过第一个案例!我不知道是这样吗?我需要在资源视图中设置列表控件属性吗?

【问题讨论】:

修改颜色后将CDRF_NEWFONT添加到pResult 【参考方案1】:

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

 *pResult = 0;

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

【讨论】:

【参考方案2】:

也许, 在 CGameView 中,添加:

1.

ON_NOTIFY(LVN_GETDISPINFO, IDC_LIST_Batsmen, GetDispInfo)

2.

void CGameView::GetDispInfo(NMHDR* pNMHDR, LRESULT* pResult)

在您的 CListCtrl 类中,添加:

ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomdrawListBatsmen)

【讨论】:

以上是关于CListCtrl 报告视图中没有颜色的主要内容,如果未能解决你的问题,请参考以下文章

单击或选择 Clistctrl 子项(报告视图)

如何处理 CListCtrl 中的属性键?

如何防止用户调整 clistctrl(报告视图)的列宽?

使用 CListCtrl,如何使选择颜色整行?

在 MFC 中更改 CListCtrl 整列的背景颜色

VC改变CListCtrl 表格中文字颜色,和背景颜色。