【问题标题】:How can I paint CEdit Control without uncovered area?如何在没有未覆盖区域的情况下绘制 CEdit 控件?
【发布时间】:2014-12-28 09:48:31
【问题描述】:

我在对话框中有 CDialg 和 CEdit 控件。因此,要绘制 CEdit 控件而不使用子类 CEdit 类,我使用了 CDialog::OnCtlColor 像这样。

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

但正如您所见,它省略了编辑控件的一些边距区域。

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

【问题讨论】:

  • 该死~这个网站对新手太苛刻了。 :p 我什至不能张贴图片?
  • 太多新手巨魔发布了不适当的材料(请记住,这是工作时经常访问的网站)。
  • 我了解迈克尔。 :)

标签: c++ mfc cedit


【解决方案1】:

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

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

【讨论】:

  • 这就像一场梦。谢谢爱德华。我试图通过对话框绘制函数上的 FillSolidRect() 绘制编辑控件。 ::GetDc() 获取编辑控件的 DC 并绘制它。但这非常简单和优雅。谢谢。
  • 如果您对答案感到满意,请接受和/或投票支持答案——请参阅stackoverflow.com/help/someone-answers
猜你喜欢
  • 2019-06-29
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多