CTreeCtrl设置不同节点不同颜色
1. 右键CTreeCtrl资源添加消息
2. 修改OnNMCustomdrawTreeTaskList即可
afx_msg void OnNMCustomdrawTreeTaskList(NMHDR *pNMHDR, LRESULT *pResult);
ON_NOTIFY(NM_CUSTOMDRAW, IDC_TREE_TASK_LIST, &CDialTaskTree::OnNMCustomdrawTreeTaskList)
void CDialTaskTree::OnNMCustomdrawTreeTaskList(NMHDR *pNMHDR, LRESULT *pResult)
{
//LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
LPNMTVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMTVCUSTOMDRAW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
switch (pNMCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
return;
case CDDS_ITEMPREPAINT:
{
// 这里做判断
CString s = m_treeTask.GetItemText((HTREEITEM)pNMCD->nmcd.dwItemSpec);
STTaskListItem* pTaskItem = NULL;
pTaskItem = (STTaskListItem*)m_treeTask.GetItemData((HTREEITEM)pNMCD->nmcd.dwItemSpec);
if (pTaskItem == NULL)
return;
//测试中
if (10 <= pTaskItem->byTestStatus && pTaskItem->byTestStatus < 20)
{
pNMCD->clrText = RGB(0, 0, 255); // 文字颜色
}
//测试失败
else if (30 <= pTaskItem->byTestStatus && pTaskItem->byTestStatus < 40)
{
pNMCD->clrText = RGB(255, 0, 0); // 文字颜色
}
}
break;
default:
break;
}
*pResult = 0;
}