最小化窗口时,客户区变为黑色

时间:2014-11-26 12:08:40

标签: c++ mfc

我使用MFC来创建像Paint这样的应用程序。我的程序有一个问题,当我最小化它并再次最大化时,所有客户区域变成黑色并且客户区域上的每个形状或图片都被擦除。我不知道为什么以及如何处理这个错误(我在OnPaint()函数中绘制所有东西)。我需要一些帮助。谢谢大家! 编辑:我的OnPaint()的一部分:

else if(state == 2 && openPen == 1)
{
    CClientDC dc(this);
    CRgn ellipse;
    ellipse.CreateEllipticRgn(pPen.x, pPen.y, pPen.x + 5, pPen.y + 5);
    myBrush.CreateStockObject(BLACK_BRUSH);
    CBrush* oldBrush =  (CBrush*)dc.SelectObject(&myBrush);
    dc.FillRgn(&ellipse, &myBrush);
    dc.SelectObject(oldBrush);
    myBrush.DeleteObject();
}

state和openPen是标志,它们显示用户选择" Pen"选项。

1 个答案:

答案 0 :(得分:0)

OnPaint功能必须使用CPaintDC,而不是CClientDC。 CPaintDC构造函数和析构函数执行无效区域的必要验证。