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