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

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


但是正如您所看到的,它忽略了编辑控件的某些空白区域。

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

最佳答案

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

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

关于c++ - 如何在没有未覆盖区域的情况下绘制CEdit控件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26685432/

10-15 04:52