在画直线时,当鼠标down 然后 move 时,move的过程中产生了临时直线并且显示了出来。看起来就像阴影一样。参考了别人的代码后,书写如下。可是编译他的代码后这种问题消失了,注释掉他的如下两行同样也产生临时线。可我无论是添加这两行代码还是不添加都有临时线。奇怪~~顺便说下以下代码是加在动作mouse move和Lbutton up里的。dc.MoveTo( m_ptStart ); //这两行代码擦除从起点(鼠标按下点)到
dc.LineTo( m_ptOld ); //上次鼠标移动到的位置之间的临时线
dc.SelectObject(&pen);
dc.MoveTo( m_ptStart ); //这两行代码从起点到鼠标当前位置画线
dc.LineTo( point ); // 请高人指点如何去临时线

解决方案 »

  1.   

    上面的代码可以去除临时线的啊。
    你是不是在WM_MOUSEMOVE消息响应函数中调用?还有一种低效的去除临时线的方法。InvalidateRect
      

  2.   

    其实你只要在mouse move中处理就行了,
    void OnMouseMove( UINT nFlags,CPoint point )
    {
    if(nFlags ==MK_LBUTTON)
    {
    //绘线代码
    }
    }
      

  3.   

    画临时的时候用反色 pDC->SetROP2(R2_XORPEN);
      

  4.   

    按楼上说的 SetROP2(R2_XORPEN);先把原来的线画一次,再画新的线
      

  5.   

    没错,SetROP2(R2_XORPEN)可以实现这个效果,第一次画,第二次擦。
    记着画正常线时设置回原来的模式。
      

  6.   

    dc.SetROP2(R2_XORPEN /*R2_NOTXORPEN*/);
    画一次显示,再画一次擦除