void CMyStatic::OnPaint()
{
CPaintDC dc(this);
...
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(0, 0, 0));
dc.DrawText(m_text, nLen, &ClientRect, nFormat);
...
ReleaseDC(&dc);
}每次drawtext可以正常输出,但是上次的输出却不能清除
怎样才能在输出前,将背景清空?
{
CPaintDC dc(this);
...
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(0, 0, 0));
dc.DrawText(m_text, nLen, &ClientRect, nFormat);
...
ReleaseDC(&dc);
}每次drawtext可以正常输出,但是上次的输出却不能清除
怎样才能在输出前,将背景清空?
我该怎样获得背景色的brush?
RECT ClientRect;
GetClientRect(&ClientRect); InvalidateRect(&ClientRect,TRUE);
还是不能清除背景
RECT ClientRect;
GetClientRect(&ClientRect);
InvalidateRect(&ClientRect,TRUE);PaintDC dc(this);
...
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(0, 0, 0));
dc.DrawText(m_text, nLen, &ClientRect, nFormat);
...
ReleaseDC(&dc);
在文本输出时就去调用,应该能行。祝顺利
下面的代码就是例子
如果还是不行的话,我把我的demo给你void CMyStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CBrush brush;
CRect rect;
this->GetClientRect(rect);
brush.CreateSolidBrush(::GetSysColor(COLOR_3DFACE));
dc.FillRect(rect,&brush);
dc.SetTextAlign(TA_CENTER);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255,0,0));
dc.TextOut(rect.Width()/2,rect.Height()/2,m_text,m_text.GetLength()); // Do not call CStatic::OnPaint() for painting messages
}
dc.FillRect(rect,&brush);上面的代码就是用当前系统的背景色擦除当前的rect,这样也就将static 清屏了