(VS2008, MFC, Feature-Pack)
Используя CTreeCtrl, мне нужно выделить выделенный элемент «лучше», когда элемент управления теряет фокус.
Мое дерево создается с помощью опции "TVS_SHOWSELALWAYS" в редакторе ресурсов, но цвет недостаточно виден.
У меня уже есть код для изменения цвета элементов с помощью настраиваемого сообщения рисования (NM_CUSTOMDRAW), например:
void MyTree::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
NMTVCUSTOMDRAW *pcd = (NMTVCUSTOMDRAW *)pNMHDR;
switch ( pcd->nmcd.dwDrawStage )
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT :
{
HTREEITEM hItem = (HTREEITEM)pcd->nmcd.dwItemSpec;
if ( this->IsSelected(hItem ))
{
pcd->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT);
pcd->clrTextBk = GetSysColor(COLOR_HIGHLIGHT);
}
*pResult = CDRF_DODEFAULT;// do not set *pResult = CDRF_SKIPDEFAULT
break;
}
}
}
Это работает, но, кажется, это излишне для такой простой задачи.
Я думаю, что, должно быть, я упускаю что-то очевидное, чтобы сделать это без необходимости делать это.
Что-нибудь попроще?
Спасибо.