最近开发一个测试工具,各种测试内容在左侧的CTreeCtrl显示由MFC的MDI提供
需求如下图:

网上有不少网友提供了通过改写CViewTree类的响应NM_CUSTOMDRAW消息,自绘CTreeCtrl控件。但是在操作中还是遇到一些问题现总结如下:
void CViewTree::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
// LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
NMTVCUSTOMDRAW* pNMCD = (NMTVCUSTOMDRAW*)(pNMHDR);
if (CDDS_PREPAINT == pNMCD->nmcd.dwDrawStage)
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ((CDDS_ITEMPREPAINT) == pNMCD->nmcd.dwDrawStage)
{
&n

该博客介绍了如何在MFC应用程序中使用CViewTree类响应NM_CUSTOMDRAW消息,自定义CTreeCtrl控件的绘制,以实现根据节点状态动态改变颜色。作者通过创建HOSTRAW结构体来存储每个节点的状态,并在OnNMCustomdraw函数中遍历结构体,根据状态设置不同颜色。这种方法允许在不重新绘制所有节点的情况下,只修改特定节点的颜色。
最低0.47元/天 解锁文章
646

被折叠的 条评论
为什么被折叠?



