リストコントロールアイテムのカスタムドロー
NM_CUSTOMDRAWのイベントハンドラに下記のように記述する。
アイテムの設定を変更するとそれ以降のアイテムに影響するので
デフォルト設定をしておかなければならない
void CnmCustomDrawTestDlg::OnNMCustomdrawListNum(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLVCUSTOMDRAW pNMLVCD = reinterpret_cast(pNMHDR); if (!pNMLVCD) { *pResult = 0; return; } switch(pNMLVCD->nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult = CDRF_NOTIFYSUBITEMDRAW; break; case CDDS_ITEMPREPAINT: //アイテム単位で処理 *pResult = CDRF_NOTIFYSUBITEMDRAW; break; case CDDS_ITEMPREPAINT | CDDS_SUBITEM: *pResult = CDRF_DODEFAULT; switch (pNMLVCD->iSubItem) { case 1: pNMLVCD->clrText = RGB(0xFF, 0x00, 0x00); *pResult = CDRF_NEWFONT; break; case 2: pNMLVCD->clrText = RGB(0x00, 0xFF, 0x00); *pResult = CDRF_NEWFONT; break; default: // cade1やcase2で色が変わってしまうので設定する必要がある pNMLVCD->clrText = ::GetSysColor(COLOR_WINDOWTEXT); *pResult = CDRF_NEWFONT; break; } break; default: *pResult = CDRF_DODEFAULT; break; } }
参照
http://www24.cds.ne.jp/~neg/pro/piyo1/clc/custom.html
http://homepage1.nifty.com/MADIA/vc/vc_bbs/200709/200709_07090039.html