如何在子窗口的成员函数中使用Invalidate()?

时间:2017-12-07 08:09:19

标签: mfc onpaint

更新:感谢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()并没有达到我的预期。如何删除以前的绘图?谢谢!

0 个答案:

没有答案