ツリーコントロール

任意行の背景色変更

カスタムドローを使用することで任意行の背景色を変更することができます。

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;
	}
}