本文介绍了如何实现隐藏和重现鼠标的方法,可以广泛的应用于制作屏幕保护程序。另外,此方法还可以实现著名的“超级解霸”5.5版中的自动隐藏鼠标功能。
鼠标是我们使用得很多的输入工具,它帮了我们不少忙。但有些时候,我们总是要想方设法将它隐藏起来。比如,绝大多数的游戏开场动画在播放时都隐藏了鼠标。另一个例子是,当我们欣赏VCD时,屏幕中的鼠标常常会影响观赏效果。
其实,隐藏鼠标并不难。实际上就是要设计一个很小的像屏幕程序保护那样的程序。当一段时间内,用户没有任何输入的情况下就自动隐藏鼠标,一旦用户进行任何输入立即重新显示出鼠标即可。著名的“超级解霸”5.5版中的自动隐藏鼠标功能其实就是这样实现的。下面给出用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.
以上程序会像屏幕保护程序一样在鼠标移动、按下或键盘有键按下的情况下立即恢复鼠标的显示。有兴趣的朋友可以自己修改一下,就可以实现很多常见的鼠标隐藏和恢复的应用。比如,当我们用小屏幕来玩《真侍魂 2》时,鼠标的隐藏实际是用键盘是否有键按下来激活的。
|