CMultiLinesListBox::DrawItem関数内の処理を記述する。
void CMultiLinesListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 指定されたアイテムを描画するためのコードを追加してください
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CString str;
CRect rect;
// 項目の文字列と外接四角形の取得
// オーナー描画の場合、GetTextはLBS_HASSTRINGS属性が有効な場合のみ使用可
GetText(lpDrawItemStruct->itemID, str);
rect = lpDrawItemStruct->rcItem;
// 背景色の描画
// 選択項目の場合は選択色で描く
if( lpDrawItemStruct->itemState & ODS_SELECTED )
{
pDC->FillSolidRect(&rect, ::GetSysColor(COLOR_HIGHLIGHT));
}
else
{
pDC->FillSolidRect(&rect, ::GetSysColor(COLOR_WINDOW));
}
// フォーカスがある場合にはフォーカス四角形を描く
if( lpDrawItemStruct->itemState & ODS_FOCUS )
pDC->DrawFocusRect(&rect);
// 文字列の描画
// DrawTextにDT_CALCRECT属性をつけるとCRectの高さを複数行の文字列に
// 合わせて変更する(描画はおこなわない)
rect.InflateRect(-1, -1);
pDC->DrawText(str, &rect, DT_LEFT | DT_WORDBREAK | DT_CALCRECT);
pDC->DrawText(str, &rect, DT_LEFT | DT_WORDBREAK);
}