как изменить цвет подсветки в списке управления в MFC - PullRequest
3 голосов
/ 03 сентября 2010

как изменить цвет выделения в элементе управления списком в MFC. я не нашел API в Clistctrl. я переопределил NM_CUSTOMDRAW, как описано в msdn но когда я нажал на любой элемент в списке, он показывал наполовину синий цвет и наполовину черный цвет почему синий идет?

Ответы [ 2 ]

4 голосов
/ 03 сентября 2010

Вам необходимо переопределить обработчик NM_CUSTOMDRAW .Проверьте этот образец .

0 голосов
/ 21 мая 2015

Мне удалось изменить цвет выбранного элемента на основе ответа Кирилла Лядвинского.

Мой класс диалога содержит CTreeCtrl член, который использует идентификатор ресурса IDC_TEST_DEF_TREE.
МетодOnNMCustomdraw устанавливает цвет выбранного элемента.Обработчик сообщений регистрируется в карте сообщений следующим образом:

ON_NOTIFY(NM_CUSTOMDRAW, IDC_TEST_DEF_TREE, OnNMCustomdraw)

Реализация метода:

void CSelectTestDefinitionDlg::OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMLVCUSTOMDRAW lpLVCustomDraw = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);
    switch (lpLVCustomDraw->nmcd.dwDrawStage)
    {
    case CDDS_ITEMPREPAINT:
    case CDDS_SUBITEM:
        if (lpLVCustomDraw->nmcd.uItemState & CDIS_SELECTED)
        {
            // Your color definitions here:
            lpLVCustomDraw->clrText = RGB(255, 255, 255);
            lpLVCustomDraw->clrTextBk = RGB(0, 70, 60);
        }
        break;

    default:
        break;
    }

    *pResult = 0;
    *pResult |= CDRF_NOTIFYPOSTPAINT;
    *pResult |= CDRF_NOTIFYITEMDRAW;
    *pResult |= CDRF_NOTIFYSUBITEMDRAW;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...