Как мне покрасить CEdit Control без открытой области?

У меня есть CDialg и CEdit Control в диалоге. Итак, для рисования элемента управления CEdit без подкласса CEdit Class я использовал CDialog::OnCtlColor как это.

if( nCtlColor == CTLCOLOR_EDIT )
{
pDC->SetBkColor(RGB(200, 255, 200));
}

Но, как вы можете видеть, он пропускает некоторую область поля для редактирования.

Как я могу нарисовать это целое окно Rect of CEdit?

Образ

0

Решение

Вам также необходимо вернуть кисть правильного цвета, поэтому создайте кисть в конструкторе диалогов

#define EDITCOLOR RGB(200, 255, 200)
m_brEdit.CreateSolidBrush(EDITCOLOR);

и в OnCtlColor() функция,

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_EDIT)
{   pDC->SetBkColor(EDITCOLOR);
hbr = m_brEdit;
}
return hbr;
2

Другие решения