プロパティでオーナー描画を「固定」もしくは「可変」にします。
「文字列あり」を必要に応じてチェックします。
void CTest0037Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{//WM_DRAWITEM
// TODO:この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
if(nIDCtl==IDC_LIST1)
{
BYTE r,g,b;
COLORREF rgb;
CString csb;
CListBox *clb=(CListBox *)GetDlgItem(nIDCtl);
CDC *cdc=CDC::FromHandle(lpDrawItemStruct->hDC);
CRect crt=lpDrawItemStruct->rcItem;
r=g=b=0x00;
if(lpDrawItemStruct->itemID & 1) r=0xff;
if(lpDrawItemStruct->itemID & 2) g=0xff;
if(lpDrawItemStruct->itemID & 4) b=0xff;
if(lpDrawItemStruct->itemState & ODS_SELECTED)
r=r/3*2,g=g/3*2,b=b/3*2;
/* rgb=::GetSysColor(COLOR_HIGHLIGHT);
else rgb=::GetSysColor(COLOR_WINDOW);*/
rgb=RGB(r,g,b);
cdc->FillSolidRect(&crt,rgb);
// if(lpDrawItemStruct->itemState & ODS_FOCUS) cdc->DrawFocusRect(&crt);
clb->GetText(lpDrawItemStruct->itemID,csb);
cdc->SetTextColor(RGB(0xff-r,0xff-g,0xff-b));
cdc->DrawText(csb,&crt,
DT_LEFT|DT_WORDBREAK|DT_EXPANDTABS|DT_CALCRECT);
cdc->DrawText(csb,&crt,DT_LEFT|DT_WORDBREAK|DT_EXPANDTABS);
}
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
※OnMeasureItem(WM_MEASUREITEM)で高さを指定できます。
※「可変」を指定した場合はOnMeasureItemがアイテムごとに呼ばれます。