NM_CUSTOMDRAW CDDS_ITEMPREPAINT时 isubitem 值一直为0

woshi_hujunjun 2017-08-10 03:08:18
问题如题:
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
NMLVCUSTOMDRAW * lplvdr = (NMLVCUSTOMDRAW*)pNMHDR;
switch (lplvdr->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
return;
case CDDS_ITEMPREPAINT:
{
//lplvdr->iSubItem
int a = _ttoi(GetItemText(pNMCD->dwItemSpec, 1));
if (a == 1)
{
lplvdr->clrText = RGB(255, 0, 0);
//lplvdr->clrTextBk = ;
}
}
*pResult = CDRF_DODEFAULT;
...全文
219 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshi_hujunjun 2017-08-14
  • 打赏
  • 举报
回复
引用 4 楼 schlafenhamster 的回复:
注意 CDRF_NOTIFYSUBITEMDRAW;
原来要这样,谢谢!
schlafenhamster 2017-08-11
  • 打赏
  • 举报
回复
注意 CDRF_NOTIFYSUBITEMDRAW;
schlafenhamster 2017-08-11
  • 打赏
  • 举报
回复

void CReportCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;

	if (lplvcd->nmcd.dwDrawStage == CDDS_PREPAINT)
	{
	    *pResult = CDRF_NOTIFYITEMDRAW;
	}
    else if (lplvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
	{
	    *pResult = CDRF_NOTIFYSUBITEMDRAW;
	}
    else if (lplvcd->nmcd.dwDrawStage == (CDDS_ITEMPREPAINT | CDDS_SUBITEM))
    {
		CItemData* p = (CItemData*)(CListCtrl::GetItemData(lplvcd->nmcd.dwItemSpec));
		ASSERT(p != NULL);
		ASSERT(lplvcd->iSubItem >= 0 && lplvcd->iSubItem < p->aTextColors.GetSize());
		lplvcd->clrText = p->aTextColors[lplvcd->iSubItem];
		lplvcd->clrTextBk = p->aBkColors[lplvcd->iSubItem];
		*pResult = CDRF_DODEFAULT;
	}
}
woshi_hujunjun 2017-08-11
  • 打赏
  • 举报
回复
woshi_hujunjun 2017-08-11
  • 打赏
  • 举报
回复
自己顶一顶,顶一顶

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧