左键单击,开始绘制矩形,随着鼠标的移动,矩形大小也相应变化,并用虚线实时显示出来,最后在通过右键来确定矩形大小,请问该如何实现?
主要问题是关于鼠标移动时矩形的擦除与重画,以及矩形的线条为虚线。

解决方案 »

  1.   

    在mousemove且lbuttondown已经按下的时候画矩形.SetROP2(m_dcScreen,R2_NOTXORPEN);
    Rectangle(m_dcScreen,m_ptLeftTop.x,m_ptLeftTop.y,m_ptLastPos.x,m_ptLastPos.y);
    m_ptLastPos = point;
    SetROP2(m_dcScreen,R2_NOTXORPEN);
    Rectangle(m_dcScreen,m_ptLeftTop.x,m_ptLeftTop.y,point.x,point.y);
      

  2.   

    你可以用CDC::DrawDragRect(LPCRECT lpRect, SIZE size, LPCRECT lpRectLast, SIZE sizeLast, CBrush* pBrush = NULL, CBrush* pBrushLast = NUL) 参数前两个是标志目前要画的框,后两个是要擦掉的框(也就是鼠标拖曳中上个位置的框)