背景擦除。。
在Doc类中添加CRectTracker m_recTk;
在View类中添加
bool m_btnPressed;
CPoint m_endP;
CPoint m_startP;
然后:
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_startP = point ;
m_btnPressed = true ;
CView::OnLButtonDown(nFlags, point);
}
void CTestView::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_btnPressed)
{
CDC *pDC = GetDC() ;
CTestDoc *pDoc = GetDocument() ;
ASSERT_VALID(pDoc) ;
CRect rect ;
m_endP = point ;
rect.SetRect(m_startP,m_endP) ;
pDoc->m_recTk.DrawTrackerRect(&rect,AfxGetMainWnd(),pDC,AfxGetMainWnd()) ;
ReleaseDC(pDC) ;
}
CView::OnMouseMove(nFlags, point);
}
void CTestView::OnLButtonUp(UINT nFlags, CPoint point)
{
m_endP = point ;
m_btnPressed = false;
CView::OnLButtonUp(nFlags, point);
}
这是拖动虚线框的绘制方法。
现在唯一的问题是,当再拖动绘制过程,你将被绘制的文档最小化,然后最大化,再在上面拖动时,上次产生的虚框没有被擦除,DrawTrackerRect不是在绘图的时候自动擦除的吗??
麻烦给出解决的方法。