var p:tpoint;   windows.getcursorpos(p);//获取
   windows.setcursorpos(p.x,p.y);//设置

解决方案 »

  1.   

    那怎么解决后面的问题?
    也就是怎样先让onMouseMove事件暂时失效?写个什么样的if语句判断?
      

  2.   

    两个办法:
    1、设置一个变量记住你是在处理OnMouseMove事件,在入口处检查,如果为真则直接退出;
    2、将OnMouseMove事件(也是属性)设为nil,等退出时再设置回原来的值
      

  3.   

    我说的意思是先判断鼠标的坐标,如果鼠标在某一个范围内不产生任何事件,若不在该范围内则发生onMouseMove事件,希望能写一个简单的示例,谢谢
      

  4.   

    If mouse in area Then
    Begin
       xxx.OnMouseMove := nil
    Else
       xxx.OnMouseMove := yourprocedure;以上语句可以放在一个定时器中
      

  5.   

    在OnMouseMove事件中判断鼠标的当前位置,如果在范围内则不执行代码,否则执行就行了。一个IF语句而已
      

  6.   

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var Point1, Point2: TPoint;
    begin
      point1.X:=Mouse.CursorPos.X;
      Point1.Y:=Mouse.CursorPos.Y;
      Point2:=SCreenToClient(Point1);
      //Point1是鼠标相对屏幕的位置
      //Point2是鼠标相对与窗口的位置
      if (Point2.x>...)and(Point2.Y>...)and(Point2.x<...)and(Point2.y<...)then
        Exit;
      //如果鼠标在指定位置则什么也不发生
      Code...
      //鼠标不在区域内将发生的代码
    end;
      

  7.   

    问题是如果mouse 在窗口以外移动,TForm1.FormMouseMove会动作吗?