我目前正在尝试更改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;
}
}
这很好用,我可以将颜色设置为我想要的颜色, 但是,当我发送消息时,我还没有找到将颜色作为参数传递的方法。 毕竟,当我只能指定一个恒定或随机的颜色时,自定义绘制对我来说是无用的。
感谢您提供任何帮助!
答案 0 :(得分:2)
将项目添加到列表中时,您可以通过设置LVIF_PARAM
标记并填写lParam
结构的LVITEM
成员来传递您自己的数据。然后以NMCUSTOMDRAW::lItemlParam
传递给您。
不要对lParam
消息本身附带的WM_NOTIFY
感到困惑,这是一个不同的lParam
:)
答案 1 :(得分:0)
我认为(确切)答案就在这里:Using Custom Draw。