CTreeCtrl设置不同节点不同颜色

1. 右键CTreeCtrl资源添加消息

CTreeCtrl设置不同节点不同颜色_第1张图片

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(pNMHDR);
    LPNMTVCUSTOMDRAW pNMCD = reinterpret_cast(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;
}

CTreeCtrl设置不同节点不同颜色_第2张图片

你可能感兴趣的:(CTreeCtrl设置不同节点不同颜色)