раскраска Clistctrl

Тема в разделе "MS Visual C++", создана пользователем zenia, 18 июл 2006.

Статус темы:
Закрыта.
  1. zenia

    zenia Гость

    Подскажите, плз
    Как в CListCtrl сделать, что бы текст различных записей отображался разными цветами?
     
  2. Maxx

    Maxx Гость

    для изменения цвета текста в режиме report надо обрабатывать сообщение WM_NOTIFY с кодом NM_CUSTOMDRAW, в параметре LPARAM передается указатель на структуру NMLVCUSTOMDRAW, поле dwDrawStage которой указывает стадию рисования
    кусок кода:

    Код (Text):
    LRESULT MainWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    {
    switch (message)
    {
    case WM_NOTIFY:
    {
    LPNMHDR pnmh = (LPNMHDR)lparam;
    if (pnmh->hdr.code == NM_CUSTOMDRAW)
    {
    LPNMLVCUSTOMDRAW pnmlvcd = (LPNMLVCUSTOMDRAW)lparam;
    switch (pnmlvcd->nmcd.dwDrawStage)
    {
    case CDDS_PREPAINT:
    return CDRF_NOTIFYITEMDRAW; // рисовать каждый элемент
    case CDDS_ITEMPREPAINT:
    // цвет текста для строки (номер строки в pnmlvcd->nmcd.dwItemSpec)
    pnmlvcd->clrText = RGB(...);     
    pnmlvcd->clrTextBk = RGB(...);  // цвет фона
    return CDRF_NEWFONT;
    /*
    если надо менять цвет текста для каждого subitem'а (его номер в pnmlvcd->iSubItem)
    case (CDDS_ITEMPREPAINT | CDDS_SUBITEM);
    ...
    return CDRF_NEWFONT;
    */
    }
    }
    }
    ...          // обработка остальных сообщений
    }
    }
     
  3. artiom_kh

    artiom_kh Гость

    Можно также юзать ownerdraw-отрисовку (тогда контрол должен быть создан со стилем LVS_OWNERDRAWFIXED)
     
  4. zenia

    zenia Гость

    спасибо!
     
Загрузка...
Похожие Темы - раскраска Clistctrl
  1. rabbit
    Ответов:
    0
    Просмотров:
    1.311
  2. vbs
    Ответов:
    7
    Просмотров:
    5.296
Статус темы:
Закрыта.

Поделиться этой страницей