void CLineTestView::OnMouseMove(UINT nFlags, CPoint point)
{
if(nFlags && MK_LBUTTON)
{
CClientDC dc(this);
int nDrawMode = dc.GetROP2();
dc.SetROP2(R2_NOT); // ----> 这里改为 R2_XORPEN 试试。
dc.MoveTo(beginpos.x,beginpos.y);
dc.LineTo(oldpos.x,oldpos.y);dc.MoveTo(beginpos.x,beginpos.y);
dc.LineTo(point.x,point.y);oldpos = point;
dc.SetROP2(nDrawMode);
}
CView::OnMouseMove(nFlags, point);
}
{
if(nFlags && MK_LBUTTON)
{
CClientDC dc(this);
int nDrawMode = dc.GetROP2();
dc.SetROP2(R2_NOT); // ----> 这里改为 R2_XORPEN 试试。
dc.MoveTo(beginpos.x,beginpos.y);
dc.LineTo(oldpos.x,oldpos.y);dc.MoveTo(beginpos.x,beginpos.y);
dc.LineTo(point.x,point.y);oldpos = point;
dc.SetROP2(nDrawMode);
}
CView::OnMouseMove(nFlags, point);
}
我还试过了R2_NOTXORPEN,也不行。
你直接再OnDraw一下得了
{
CPen* oldpen=dc.SelectObject(&curpen);
int drawmode;
drawmode=dc.SetROP2(R2_NOT);
if (m_mousemove)//BOOL 鼠标已经移动过
{
dc.MoveTo(prepnt);//第一点
dc.LineTo(premove);//鼠标上次在的点
}
else
m_mousemove=TRUE;
dc.MoveTo(prepnt);
dc.LineTo(point);
premove=point;
dc.SetROP2(drawmode);
dc.SelectObject(oldpen);
}
难道它每移动一步就InvalidateRect一下吗?