我正在尝试为派生的ComboBox类列表的rect
上色。在OnCtlColor
中,我使用FillSolidRect
绘制矩形,但是当我将鼠标放在列表上时,它将丢失所有文本(仅保留一个选中的文本)。这是我的代码:
HBRUSH CColoredComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_LISTBOX || nCtlColor == CTLCOLOR_EDIT || nCtlColor == CTLCOLOR_MSGBOX)
{
CRect rect;
pDC->GetClipBox(&rect);
// fill the rectangular area with the color
pDC->FillSolidRect(&rect, RGB(255, 0, 255));
hbr = m_brBkgnd;
pDC->SetTextColor(RGB(0, 255, 0));
pDC->SetBkColor(RGB(255, 0, 255));
}
return hbr;
}
我想我需要DrawText
回信,有人知道吗?
我已经看到有些人将CEdit
和CListCtrl
分为子类,我应该尝试吗?
Thx:)
答案 0 :(得分:0)
我在SetBkColor
int numItems = GetCount();
char text[1024];
int height = GetItemHeight(0);
for (int i = 0; i < numItems; i++)
{
GetLBText(i, text);
CRect pos(rect.left + 2, rect.top + (height * i), rect.right, rect.bottom);
DrawText(pDC->GetSafeHdc(), text, -1, &pos, DT_SINGLELINE);
}
这就是我解决问题的方式! :)