我在对话框上有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/