MFC Class WizardからはNM_CUSTOMDRAWが選択できないようなので自分で記述します。
〜.h:
// 生成されたメッセージ マップ関数
//{{AFX_MSG(CTest0031Dlg)
|
//}}AFX_MSG
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
DECLARE_MESSAGE_MAP()
〜.cpp:
BEGIN_MESSAGE_MAP(CTest0031Dlg, CDialog)
//{{AFX_MSG_MAP(CTest0031Dlg)
//}}AFX_MSG_MAP
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomDraw)
END_MESSAGE_MAP()
void CTest0031Dlg::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{//NM_CUSTOMDRAW
LPNMLVCUSTOMDRAW lcd=(LPNMLVCUSTOMDRAW)pNMHDR;
switch(lcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult=CDRF_NOTIFYSUBITEMDRAW;//サブアイテムを処理します。
break;
case CDDS_ITEMPREPAINT://アイテム単位で処理します。
/* lcd->clrText=RGB(0xff,0xff,0xff);
lcd->clrTextBk=RGB(0xff,0x00,0x00);
*pResult=CDRF_NEWFONT;*/
*pResult=CDRF_NOTIFYSUBITEMDRAW;//サブアイテムを処理します。
break;
case CDDS_ITEMPREPAINT|CDDS_SUBITEM:
*pResult=CDRF_DODEFAULT;
if(lcd->nmcd.dwItemSpec==1)
{//特定のアイテムの色を指定します。
lcd->clrText=RGB(0xff,0xff,0xff);
lcd->clrTextBk=RGB(0x00,0x00,0xff);
*pResult=CDRF_NEWFONT;
}
if(lcd->iSubItem==1)
{//特定のサブアイテムの色を指定します。
lcd->clrText=RGB(0xff,0xff,0xff);
lcd->clrTextBk=RGB(0x00,0xff,0x00);
*pResult=CDRF_NEWFONT;
}
if(lcd->iSubItem>1)
{//サブアイテムの色を指定すると、以降の色が変わってしまうので、、、
lcd->clrTextBk=GetSysColor(COLOR_WINDOW);
lcd->clrText=GetSysColor(COLOR_WINDOWTEXT);
*pResult=CDRF_NEWFONT;
}
default:
*pResult=CDRF_DODEFAULT;
break;
}
}
※「SelectObject(lcd->nmcd.hdc,GetStockObject(ANSI_FIXED_FONT));」などによりフォントも変更できます。
※単に太字にするのならFW_BOLDを使う手もあります。