1

我目前正在尝试更改 TreeView 项目的背景颜色。因此,我使用此消息来创建项目:

    SendMessage(ListView, LVM_INSERTITEM, 0, (LPARAM)&lvI);

此外,我正在处理这样的自定义绘图消息:

        case WM_NOTIFY:
        {
            LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;
            if (pnm->hdr.code == NM_CUSTOMDRAW)
            {
                LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
                switch (lplvcd->nmcd.dwDrawStage)
                {
                    case CDDS_PREPAINT :
                        return CDRF_NOTIFYITEMDRAW;
                    case CDDS_ITEMPREPAINT:
                        lplvcd->clrTextBk = ???;

                        return CDRF_NEWFONT;
                }
            }

这很好用,我可以将颜色设置为任何我想要的颜色,但是,我还没有找到一种方法在我发送消息时将颜色作为参数传递。毕竟,当我只能分配恒定或随机颜色时,自定义绘制对我来说毫无用处。

感谢您提供任何帮助!

4

2 回答 2

2

当您将项目添加到列表中时,您可以通过设置LVIF_PARAM标志并填写结构lParam成员来传递您自己的数据LVITEM。然后将其作为NMCUSTOMDRAW::lItemlParam.

不要对消息本身lParam附带的内容感到困惑,那是不同的:)WM_NOTIFYlParam

于 2013-05-30T12:50:02.913 回答
0

我认为(确切的)答案就在这里:Using Custom Draw

于 2013-05-30T09:36:01.850 回答