Как вставить цветной текст в ListView? - PullRequest
4 голосов
/ 17 февраля 2010

У меня есть список с 3 колоннами. Первые два столбца имеют значения, а третий еще пуст. Я хочу знать, как я могу вставить цветной текст позже в третий столбец? Я не хочу раскрашивать всю строку, только третий столбец с меняющимися цветами.

Заранее спасибо!

Kampi

Ответы [ 2 ]

5 голосов
/ 17 февраля 2010

Это можно сделать с помощью обработчика CustomDraw, ссылка: MSDN Разработка пользовательских элементов управления рисованием в Visual C ++ .

В основном это довольно просто (и MSDN довольно долго), но сводится к следующему:

добавьте один из них в обычное место:

ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)

Затем добавьте этот метод в класс.

void CMyListView::OnCustomDraw(NMHDR* nmhdr, LRESULT* result)
{
    LPNMLVCUSTOMDRAW  vcd = (LPNMLVCUSTOMDRAW)nmhdr;

    switch(vcd->nmcd.dwDrawStage)
    {
        case CDDS_PREPAINT :
        {
            *result = CDRF_NOTIFYITEMDRAW;
            break;
        }

        case CDDS_ITEMPREPAINT:
        {
            vcd->clrText = RGB(255,0,255); //change the colour of the second row.
            *result = CDRF_NOTIFYSUBITEMDRAW;
            break;
        }
        default:
            *result = 0;
            break;
    }
    return;
}
0 голосов
/ 18 февраля 2010

@ Ричард Харрисон имеет правильную идею использования NM_CUSTOMDRAW.

Вместо того, чтобы заново реализовать необходимую функциональность, хотя вам следует рассмотреть возможность использования одного из свободно доступных производных типов CListView.

Вот проект , который, я думаю, удовлетворит ваши потребности.

...