如何锁定鼠标?

解决方案 »

  1.   

    把鼠标锁定在Panel中:
    var
      Rct:TRect;
    begin
      Rct:=Panel1.BoundsRect;
      MapWindowPoints(Handle,0,Rct,2);
      ClipCursor(@Rct);
    end;
      

  2.   

    有时需要将鼠标的移动范围限制在屏幕上一定的区域,可以通过Windows API函数
    ClipCursor实现。函数原形如下:
    BOOL ClipCursor( CONST RECT *lpRect ) ;
    其中参数RECT为指向一个矩形区域的指针,坐标为屏幕坐标。如果设置为0 ,则鼠标可以
    在整个屏幕中自由移动。
    窗体中有两个按钮,当按下第一个按钮后,鼠标限制在第二个按钮上
    移动;当按下第二个按钮后,鼠标可以在屏幕上自由移动。
    两个按钮的OnClick 事件的处理过程如下:
    procedure TForm1.Button1Click(Sender: TObject) ;
    var
     rtButton2: TRect;
    begin
     //获取Button2组件的坐标
     rtButton2 := Button2.BoundsRect;
     //将坐标转换为屏幕坐标
     MapWindowPoints(handle, 0, rtButton2, 2);
     //将鼠标移动的范围限制在Button2组件上
     ClipCursor(@rtButton2);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     //取消鼠标移动范围的限制
     ClipCursor(0);
    end;
      

  3.   

    解锁:
    var
      Rct:TRect;
    begin
      Rct:=Rect(0,0,Screen.Width,Screen.Height);
      MapWindowPoints(Handle,0,Rct,2);
      ClipCursor(@Rct);
    end;