下面是 CComboBox::DrawItem 的简要说明:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
该方法接受一个 LPDRAWITEMSTRUCT 结构体指针,该结构体包含有关要绘制的项的信息。你可以在这个方法中使用 GDI 函数(如 CDC 类的成员函数)来自定义项的外观。
以下是一个简单的示例,展示如何在 CComboBox::DrawItem 中绘制项:
void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
// 绘制选中项的背景
if (lpDrawItemStruct->itemState & ODS_SELECTED)
{
dc.FillSolidRect(&lpDrawItemStruct->rcItem, RGB(0, 0, 255)); // 蓝色背景
}
else
{
dc.FillSolidRect(&lpDrawItemStruct->rcItem, RGB(255, 255, 255)); // 白色背景
}
// 绘制文本
CString strText;
GetLBText(lpDrawItemStruct->itemID, strText);
dc.TextOut(lpDrawItemStruct->rcItem.left + 5, lpDrawItemStruct->rcItem.top + 3, strText);
dc.Detach();
}
这个例子简单地根据项的选中状态为其绘制不同的背景色,并在项的左上角显示文本。你可以根据需要修改这个方法以满足你的自定义绘制需求。
转载请注明出处:http://www.zyzy.cn/article/detail/15927/MFC/CComboBox