原创 在Lazarus中获取鼠标绝对位置

2010-4-14 15:57 2827 8 6 分类: 软件与OS
在Delphi中,可以用GetCursorPos这个Windows的API来获取鼠标的绝对位置,而在Lazarus(FPC)中,没有GetCursorPos这个函数,需要使用另外的方法。

在FPC的lcl的controls.pp中定义了TMouse类,通过它就可以获取鼠标的位置。

先建立一个空白的程序,然后添加主窗体的FormMouseMove事件,在事件中获取鼠标的位置。演示代码如下:

unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs; 

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 
  myMouse: TMouse;

implementation

{ TForm1 }

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  mp: TPoint;
begin
  mp := myMouse.CursorPos;
  Caption := IntToStr(mp.x)+', '+IntToStr(mp.y);
end;

initialization
  {$I unit1.lrs}

end

如果想修改鼠标的位置也很简单,直接对myMouse.CursorPos赋值。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条