不可能!你的问题我刚问过。就是用ClipCursor就可以了呀?
你在什么时候执行ClipCursor(@R)?

解决方案 »

  1.   

    var
      btform:  TRect;  
    begin  
      btform  :=  Rect(0,  0,  form1.Width,  form1.Height);  
      ClipCursor(@btform);  
    end;
      

  2.   

    我不太知道,但我知道如果调用api可以。
      

  3.   

    窗体上放一个按纽,在其单击事件里写
    var
      rtbutton : Trect;begin
      rbButton := form1.boundsrect;
      mapwindowpoints(handle,0,rtbutton,2);
      ClipCursor(@rtbutton);
    end;
    放开用
    rtscreen := rect(0,0,screen.width,screen.height);
    ClipCursor(@Rtscreen);
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
          rtButton2: TRect;
      begin
          rtButton2 := Button2.BoundsRect;
          MapWindowPoints(handle, 0, rtButton2, 2); // 座标换算
          ClipCursor(@rtButton2); // 限制鼠标移动区域
      end;procedure TForm1.Button2Click(Sender: TObject);
    var
          rtScreen: TRect;
      begin
          rtScreen := Rect(0, 0, Screen.Width, Screen.Height);
          ClipCursor(@rtScreen);
      end; 
    end.
      

  5.   

    锁定
    procedure TForm1.Button1Click(Sender: TObject);
    var
      rtButton : TRect;
    begin
      rtButton := Form1.BoundsRect;
      MapWindowPoints(Handle,0,rtButton,2);
      ClipCursor(@rtButton);
    end;
    放开
    procedure TForm1.Button2Click(Sender: TObject);
    var
      rtScreen : TRect;
    begin
      rtScreen := Rect(0,0,Screen.Width,Screen.Height);
      ClipCursor(@rtScreen);
    end;
      

  6.   

    lock:
    var
      r:Trect;
    begin
      getwindowrect(handle,r);
    //客户区区域的话用getclientrect,但是需要转换坐标系,你一试便知
      clipcursor(@r);
    end;free;
     clipcursor(nil)即可
      

  7.   

    还有一点,clipcursor函数在别的窗口获得焦点后自动失效,也就是说按一下alt-tab就没用了
      

  8.   

    呵呵,是啊 alt+ctrl+del也可以去掉它的限制的。
    全考虑的话,就不那么简单了。