Я писал приложение с использованием 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-монитор? Я чувствую, что это будет очень сложно, но любые предложения приветствуются.