以下是 CListBox::DrawItem 的函数签名:
void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
DrawItem 方法通过 lpDrawItemStruct 参数提供了有关要绘制项的详细信息,包括项的矩形区域、状态等。
通常,你需要在派生的类中覆盖 DrawItem 方法来实现自定义绘制。下面是一个简单的例子,演示如何使用 DrawItem 自定义绘制列表框中的项:
void CMyListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
// 检查项是否被选中
BOOL bSelected = lpDrawItemStruct->itemState & ODS_SELECTED;
// 绘制背景
CRect rect = lpDrawItemStruct->rcItem;
dc.FillSolidRect(rect, bSelected ? RGB(0, 0, 255) : RGB(255, 255, 255));
// 绘制文本
CString strText;
GetText(lpDrawItemStruct->itemID, strText);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(bSelected ? RGB(255, 255, 255) : RGB(0, 0, 0));
dc.DrawText(strText, rect, DT_SINGLELINE | DT_VCENTER);
dc.Detach();
}
在这个例子中,我们首先获取 CDC 对象,然后根据项的状态绘制背景,最后绘制文本。你可以根据自己的需求进行更复杂的自定义绘制。请确保在派生的类中正确覆盖 DrawItem 方法,并根据 lpDrawItemStruct 提供的信息进行绘制。
转载请注明出处:http://www.zyzy.cn/article/detail/18432/MFC/CListBox