CComboBox::DrawItem 是 MFC 中 CComboBox 类的一个公共方法,用于在组合框中绘制单个项。这个方法通常与组合框的 Owner Draw 风格一起使用,以便自定义绘制每个项的外观。

下面是 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