我正在使用 Windows API 编写一个应用程序,我想知道如何使用包含多色文本的子项制作一个列表视图。
澄清一下,这是一张在 API Monitor 中如何实现的图片:
请注意,在“API”列中,文本有多种颜色,例如富文本或其他内容。我想知道我将如何做到这一点。
有人告诉我用定制绘图做一些事情,但他不确定。我调查了一下,我处理了NM_CUSTOMDRAW
。这是我的测试结果:
这是代码:
inline LRESULT HandleWM_NOTIFY(LPARAM lParam)
{
switch (((LPNMHDR)lParam)->code)
{
case NM_CUSTOMDRAW:
{
switch (((LPNMHDR)lParam)->idFrom)
{
case ID_LISTVIEW1:
{
LPNMLVCUSTOMDRAW lpNMLVCD = (LPNMLVCUSTOMDRAW)lParam;
if (lpNMLVCD->nmcd.dwDrawStage == CDDS_PREPAINT)
{
return CDRF_NOTIFYITEMDRAW;
}
else if (lpNMLVCD->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
{
COLORREF crText;
switch (lpNMLVCD->nmcd.dwItemSpec % 3)
{
case 0:
crText = RGB(255, 0, 0);
break;
case 1:
crText = RGB(0, 255, 0);
break;
case 2:
crText = RGB(0, 0, 255);
break;
}
lpNMLVCD->clrText = crText;
lpNMLVCD->
}
return CDRF_DODEFAULT;
}
default: break;
}
break;
}
default: break;
}
return 0;
}
使用该NM_CUSTOMDRAW
方法,我无法修改单个字符的字体颜色;我只能修改子项中所有内容的字体颜色,这不是我想要的。
如何实现 API 监视器的功能?我觉得这将非常困难,但欢迎提出任何建议。