我需要用鼠标拖动时画一个矩形,就像windows画图那样,该怎么实现.

解决方案 »

  1.   

    按时时记住开始坐标,然后在移动时用XOR的方法去掉原来的线,再用XOR的方法画新的.在松开时用COPY的方式画一个真的.
      

  2.   

    在响应的WM_MOUSEMOVE消息中,添加如下代码:
    if(鼠标左键被按下)
    {
        CClientDC dc(this);
        dc.SetROP2(R2_NOT);
        dc.Rectangle(m_ptStart.x,m_ptStart.y,m_ptEnd.x,m_ptEnd.y);
        dc.Rectangle(m_ptStart.x,m_ptStart.y,point.x,point.y);
        m_ptEnd=point;
    }
    //m_ptStart和m_ptEnd分别是起始点和终止点
      

  3.   

    楼上的 hauck(清晨气息),代码挺好使,不过我还没有完全明白,那位帮帮忙讲清楚一点,谢谢,一定给分
      

  4.   

    正如 hauck(清晨气息) 老兄所说的那样,在OnMouseMove函数中,不断的根据当前的鼠标坐标来更改图的坐标,并不不断的画图(这样看起来才连贯)if(鼠标左键被按下)
    {
        CClientDC dc(this);
        dc.SetROP2(R2_NOT);
        dc.Rectangle(m_ptStart.x,m_ptStart.y,m_ptEnd.x,m_ptEnd.y);
        dc.Rectangle(m_ptStart.x,m_ptStart.y,point.x,point.y);
        m_ptEnd=point;//用当前的鼠标坐标更新终止坐标
    }
    //m_ptStart和m_ptEnd分别是起始点和终止点
      

  5.   

    同意hauck(清晨气息) ,其中的dc.SetROP2(R2_NOT)是设置当前的绘制模式,不过具体我也不明白,
    把代码背下来先用着吧!!以后慢慢理解^_^