Как вручную нарисовать выбранные строки элементов в Windows List-View Control - PullRequest
2 голосов
/ 05 января 2011

Я создал обработчик сообщений NM_CUSTOMDRAW для пользовательских элементов управления List-View. Это почти нормально. Тем не менее, я не могу нарисовать выбранный элемент. Мои пользовательские настройки всегда игнорируются, и по умолчанию отображается белый текст поверх синего bkColor.

Могу ли я иметь возможность рисовать выбранные предметы?

1 Ответ

1 голос
/ 06 января 2011

Я успешно записал код для пользовательского рисования выбранного элемента в этапе рисования CDDS_ITEMPREPAINT в обработчике OnCustomDraw () и возвращаю CDRF_SKIPDEFAULT после рисования выбранного элемента:

int subitemCount = GetHeaderCtrl().GetItemCount();
CRect itemRect;
for (int i = 0; i < subitemCount; i++) // Draw individual subitem
{
    if (i == 0)
    {
        // My own function
        // calculate correct rect for first(index=0) subitem
        CalculateItemRect(nIndex, itemRect);
    }
    else if (!GetSubItemRect(nIndex, i, LVIR_BOUNDS, itemRect))
    {
        return;
    }

    // Adjust text rect to avoid overlapping with vertical grid line
    itemRect.left += 6;
    dc.DrawText(GetItemText(nIndex, i), itemRect, DT_LEFT | DT_NOCLIP | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
}

Этот код пока работает хорошо. Любые предложения по улучшению приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...