我想做一个画线的程序:通过OnLButtonDown,OnMouseMove,OnLButtonUp事件可是出现的问题是:
1.如果在OnLButtonUp进行画,结果是在鼠标抬起的时候才开始画线,没有画线过程
2.如果在OnMouseMove进行画,鼠标一动就画出很多直线。如果在画线前用InvalidateRect则画不出整线来,只画出一些小线头,不知为什么;
各们大侠,不知如何解决这个问题?谢谢!!!!!
1.如果在OnLButtonUp进行画,结果是在鼠标抬起的时候才开始画线,没有画线过程
2.如果在OnMouseMove进行画,鼠标一动就画出很多直线。如果在画线前用InvalidateRect则画不出整线来,只画出一些小线头,不知为什么;
各们大侠,不知如何解决这个问题?谢谢!!!!!
CPoint srcPoint;void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
dc.SetROP2(R2_XORPEN);
dc.MoveTo(srcPoint);
dc.LineTo(oldPoint);
dc.MoveTo(srcPoint);
dc.LineTo(point);
oldPoint = point;
CView::OnMouseMove(nFlags, point);
}
{
if(nFlags&MK_LBUTTON)==MK_LBUTTON)
{
CClientDC dc(this);
dc.MoveTo(m_iPrevx,m_iPrevy);
dc.LineTo(point.x,point.y);
m_iPrevx=point.x;
m_iPrevy=point.y;
}
CDialog::OnMouseMove( nFlags, point) ;
}
void CMyview:: OnLButtonDown(UINT nFlags,CPoint point)
{
m_iPrevx=point.x;
m_iPrevy=point.y;
CDialog::OnLButtonDown(nFlags,point);
}
原点=point; //第一点为直线的起点
上一点=point; //记录本次点中点OnMouseMove(UINT nFlags, CPoint point)
SetROP2(R2_NOT):
MoveTo(原点);
LineTo(上一点); //擦除上一条线
MoveTo(原点);
LineTo(point); //画到鼠标移动点的直线
上一点=point;
OnLButtonUp(UINT nFlags, CPoint point) :
第一点=原点;
第二点=point;