[返回]
中国计算机报1999年第95期

如何用Delphi实现鼠标隐藏

李 其

  本文介绍了如何实现隐藏和重现鼠标的方法,可以广泛的应用于制作屏幕保护程序。 您看了本文,可以在程序中随心所欲地控制鼠标了!它能干些什么呢?实现著名的“超级解霸”5.5版中的自动隐藏鼠标功能!

  我们知道, 鼠标是我们使用得很多的输入工具,它可帮了我们不少忙,尤其在Windows里就更是这样了。但有些时候,我们总是要想方设法将它(准确一点应该是鼠标的光标)隐藏起来。比如,绝大多数的游戏开场动画在播放时都隐藏了鼠标。再有,当我们欣赏VCD时,屏幕中的鼠标常常会影响观赏效果,比如“超级解霸”。

  其实呢,隐藏鼠标并不难。实际上就是要设计一个很小的像屏幕程序保护那样的程序。在一段时间以内,如果用户没有任何输入动作,它就会自动隐藏鼠标,一旦用户进行任何输入,它就立即重新显示出来。下面给出用Delphi实现这一功能的方法。

  请先添加一个Timer组件,再设置Timer组件的Interval属性为2000(即延时2秒钟),然后编写如下的程序段:

  unit Unit1;

  interface

  uses

   Windows, Messages, SysUtils, Classes, Graphics,

   Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

  type

   TForm1 = class(TForm)

  Timer1: TTimer;

   procedure FormMouseDown

  (Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

  procedure FormMouseMove

  (Sender: TObject;

   Shift: TShiftState; X, Y: Integer);

  procedure FormKeyDown(Sender: TObject;

  var Key: Word; Shift: TShiftState);

  procedure FormCreate(Sender: TObject);

  procedure Timer1Timer(Sender: TObject);

   private

  { Private declarations }

   public

  { Public declarations }

   end;

  var

   Form1: TForm1;

   MouseHide: Boolean;

  implementation

  {$R *.DFM}

  procedure DoMouse;

  begin

   if MouseHide then

   begin

   Screen.Cursor:=crDefault;

  { 恢复鼠标 }

   MouseHide:=False;

  end

  else Form1.Timer1.Enabled:=True;

  end;

  procedure TForm1.FormMouseDown

   (Sender: TObject;

   Button: TMouseButton;

   Shift: TShiftState; X, Y: Integer);

  begin

   DoMouse;

  end;

  procedure TForm1.FormMouseMove

   (Sender: TObject;

   Shift: TShiftState; X, Y: Integer);

  begin

   DoMouse;

  end;

  procedure TForm1.FormKeyDown

  (Sender: TObject;

   var Key: Word; Shift: TShiftState);

  begin

   DoMouse;

  end;

  procedure TForm1.FormCreate

   (Sender: TObject);

  begin

   MouseHide:=True; { 初始化 }

  end;

  procedure TForm1.Timer1Timer(Sender: TObject);

  begin

   MouseHide:=True;

   Screen.Cursor:=crNone; { 隐藏鼠标 }

   { 以下这一行可以不要,但会使程序效率降低 }

   Timer1.Enabled:=False;

  end;

  end.

  上面的程序会像屏幕保护程序一样,在鼠标移动、按下或键盘有键按下时,系统立即恢复鼠标的显示。有兴趣的朋友可以自己修改一下,就可以实现很多常见的鼠标隐藏和恢复的应用,没准儿,您因此有兴趣设计一个自己的“超级解霸”呢!