当我点击屏幕上的任意位置时,希望form也移动到该位置。
   程序如下:只能在form范围内点击可以
 var
 myrect:trect;
 mypoint:tpoint;  procedure TForm1.FormMouseDown(Sender: TObject; Button:TMouseButton;
  Shift: TShiftState; X, Y: Integer);
   begin
   SetWindowPos(form1.Handle,hwnd_topmost,mypoint.X,MyPoint.Y,MyRect.Right-MyRect.left, MyRect.Bottom-myrect.Top,swp_showwindow);;
 end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  GetWindowRect(Form1.Handle, MyRect);
  GetCursorPos(MyPoint);
end;

解决方案 »

  1.   

    补充
    var
     myrect:trect;
     mypoint:tpoint;
    procedure TForm1.FormMouseDown(Sender: TObject; Button:TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var Screen: TScreen;
    m:tmouse;
    begin
     SetWindowPos(form1.Handle,hwnd_topmost,mypoint.X,MyPoint.Y,MyRect.Right-MyRect.left, MyRect.Bottom-myrect.Top,swp_showwindow);;
     end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
     GetWindowRect(Form1.Handle, MyRect);
     GetCursorPos(MyPoint);
    end;
      

  2.   

    GetCursorPos()可以得到鼠标的位置你在别的地方点击当然就切换到别的地方去了.也不会触发FormMouseMOve事件了
      

  3.   

    你可以写一个Hook程序来捕获mouse事件,无论是在自己窗口上还是在其他地方,都可以把你的程序窗口移动到指定的xy位置
      

  4.   

    chaosbird(canan) ,原因我当然知道,我想知道解决办法shuyi(舒易) 请问HOOK程序该如何写,或者怎样学习,网上有其学习资料吗?
      

  5.   

    1。你在任何地方都可以调用GetCursorPos()得到鼠标的位置
    2。在mousemove事件中系统直接给你了mouse的位置