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 报告视图中没有颜色的主要内容,如果未能解决你的问题,请参考以下文章