我使用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"选项。
答案 0 :(得分:0)
OnPaint功能必须使用CPaintDC,而不是CClientDC。 CPaintDC构造函数和析构函数执行无效区域的必要验证。