更新:感谢IInspectable的回复。我编辑了我的问题。
我正在编写一个基于对话框的应用程序,它具有静态控件。
该应用根据OnLButtonDown()
和OnLButtonUp()
抓取的点数绘制一条线。
我创建了一个派生自CCanvasStatic
的类CStatic
,静态控件变量的类型为CCanvasStatic
。我将OnPaint()
,OnLButtonDown()
和OnLButtonUp()
添加到课程CCanvasStatic
。
我的OnLButtonDown()
和OnLButtonUp()
就像这样:
void CCanvasStatic::OnLButtonDown(UINT nFlags, CPoint point)
{
SetCapture ();
if (this == GetCapture ())
(*m_pBGDlg->m_Shape).m_ptStart = point;
CStatic::OnLButtonDown(nFlags, point);
}
void CCanvasStatic::OnLButtonUp(UINT nFlags, CPoint point)
{
if (some expression)
{
(*m_pBGDlg->m_Shape).m_ptEnd = point;
Invalidate ();
UpdateWindow ();
}
ReleaseCapture ();
CStatic::OnLButtonUp(nFlags, point);
}
我希望Invalidate()
删除上一个绘图,这样每次绘制一个新行时,我绘制的所有行都会被重绘(我想要这个因为我使用数组来记录所有行并在{中使用一个循环) {1}}处理重绘问题)。
但是OnPaint()
并没有达到我的预期。如何删除以前的绘图?谢谢!