如何在没有覆盖区域的情况下绘制CEdit Control?

时间:2014-11-01 01:23:02

标签: c++ mfc cedit

我在对话框上有CDialg和CEdit Control。因此,为了绘制CEdit控件而不对CEdit类进行子类化,我使用了这样的CDialog::OnCtlColor

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

但正如您所看到的,它省略了编辑控制的一些边缘区域。

如何在整个窗口绘制CEdit的Rect?

Image

1 个答案:

答案 0 :(得分:2)

您还需要返回具有正确颜色的画笔,因此请在对话框构造函数中创建画笔

#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;