カスタムドローを使用することで任意行の背景色を変更することができます。
void CHogeTreeCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
// LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
NMTVCUSTOMDRAW* pTvcd = reinterpret_cast<NMTVCUSTOMDRAW*>pNMHDR;
//==== 描画ステージ判定 ====//
switch(pTvcd->nmcd.dwDrawStage)
{
//== 描画サイクル開始 ==//
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
return;
//== アイテム描画 ==//
case CDDS_ITEMPREPAINT:
//==== 選択判定 ====//
if(pTvcd->nmcd.uItemState & CDIS_SELECTED)
{
//-==- 選択状態 -==-//
if(::GetFocus() == m_hWnd)
{
//-==- フォーカスを持っている -==-//
pTvcd->clrTextBk = BKCOLOR_SEL;
}
else
{
//-==- フォーカスを持っていない -==-//
pTvcd->clrTextBk = BKCOLOR_SEL_LOSTFOCUS;
}
}
else
{
//-==- 非選択状態 -==-//
pTvcd->clrTextBk = BKCOLOR_NORMAL;
}
*pResult = CDRF_DODEFAULT;
break;
//== その他 ==//
default:
*pResult = CDRF_DODEFAULT;
}
}