我做了一个点在,让它在一定范围内移动,移动的时候没问题 但是当点移动到这个范围的边界上时,移动起来就不太平滑。这个肯定是约束条件有问题,我试了好多 都不太好使,请高数指点一下
代码如下:
void COutput2::OnMouseMove(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default CRect NewRect;//移动后得到的新矩形
CPoint OffSet;//计算移动的偏移量也就是看移动了多少
         CRgn Move_Region;//设置可移动区域
         Move_Region.CreateRectRgnIndirect(CRect(45,57,795,249)); if ((nFlags==MK_LBUTTON)&&(MouseDown_Flag==TRUE)&&(Move_Region.PtInRegion(point)))
{
OffSet=point-MousePose;//计算出鼠标移动的偏移量
NewRect=m_ellipsRect[Ellips_Flag]+(OffSet+CPoint(0,0));//得到移动后新的矩形
m_ellipsRect[Ellips_Flag]=NewRect; //更新原来矩形
MousePose=point; //记录当前的点值以计算再移动时的偏移量
InvalidateRect(CRect(30,4,820,296)); //刷新示波器显示部分
}

CDialog::OnMouseMove(nFlags, point);
}

解决方案 »

  1.   

    谢楼主通知,但是俺没看太懂题意。
      

  2.   


    楼上两位大哥谢谢你们,我的意思是这个点在这个范围内不包括边界的时候移动很正常移动很流畅,当这个点被移动到边界上的时候,被移动的点老卡,就是移动起来不顺畅。(发现就是我的点被移动到边界时点不动了,我的光标移到边界外时这个点就沿着边界走,我现在想让他当点到达边界时光标继续在边界外移动时,这个点能沿着边界移动)
    就想这张图片所指12是他的上边界,这时候这个点不能在往上走了,而这时候当点停止的时候我的光标继续再走走到12至18之间,这时我的鼠标点击还没松开在继续移动着,我想让这个点这时候也能沿着12这个边界水平移动。
      

  3.   


    向兄  你说的很对,我这样也做过是没问题但是这样移到左边界或右边界的时候就不行了。