我想给RichEdit控件绘制边界,在OnPaint()函数里加入如下代码:CPaintDC dc(this); // device context for painting CRect rect;
   ::GetWindowRect(this->m_hWnd,&rect);
   ScreenToClient(&rect);
   CPen pen,*oldpen;
   pen.CreatePen(PS_SOLID,1,RGB(0,0,0));
         oldpen=dc.SelectObject(&pen);
dc.MoveTo(rect.left-1,rect.top-1);
   dc.LineTo(rect.right+1,rect.top-1);
   dc.LineTo(rect.right+1,rect.bottom+1);
  dc.LineTo(rect.left-1,rect.bottom+1);
dc.LineTo(rect.left-1,rect.top-1);
  dc.SelectObject(oldpen);
边界出来了,但是输入区域是灰色的,并且输入的内容是一道道的竖杠(|||||),该怎么才可以正确的绘制呢?

解决方案 »

  1.   

    让控件自己绘制一些它需要的东西,然后你再绘制:void CMyRichEditCtrl::OnPaint();
    {
        CRichEditCtrl::OnPaint();
        CClientDC  dc(this);  // 注意不要用PaintDC.     CRect rect;
        GetClientRect(&rect);
        CPen pen,*oldpen;
        pen.CreatePen(PS_SOLID,1,RGB(0,0,0));
        oldpen=dc.SelectObject(&pen);
        dc.MoveTo(rect.left-1,rect.top-1);
        dc.LineTo(rect.right+1,rect.top-1);
        dc.LineTo(rect.right+1,rect.bottom+1);
        dc.LineTo(rect.left-1,rect.bottom+1);
        dc.LineTo(rect.left-1,rect.top-1);
        dc.SelectObject(oldpen);
    }