屏幕保护程序可以保护显示屏不被损坏,同时节约能源。作为屏幕保护程序,应该具有如下特性:
1)屏幕保护程序运行时,鼠标光标被自动隐藏,在程序结束时,光标显示。2)当单击、移动鼠标或按下键盘时,屏幕保护结束,回到正常操作状态。为了实现这些特性,在编写VB应用程序时,可以采用如下方法:
1、改变窗体属性通常VB应用程序的窗体都采用有边框的窗体外观,但作为屏幕保护程序,应设置窗体为无边框,且为最大化。
2、隐藏及显示鼠标光标在Visual Basic应用程序中隐藏及显示鼠标光标需要运用Windows的API函数,该函数名为ShowCursor.当用参数值True调用时显示鼠标光标,当用参数值False调用时,鼠标光标自动隐藏。
3、检测鼠标移动VB中有一个检测鼠标移动的对象事件MouseMove事件。MouseMove事件通常在应用程序启动时就会触发,有时在鼠标并未移动的情况下,MouseMove事件仍有可能被触发。因此如果在程序中直接用MouseMove事件检测鼠标是否发生了移动,并不能正确反映鼠标的移动状况。应该在MouseMove事件中编写代码加以控制。
为了正确反映鼠标的移动,先用变量记录下程序运行时的鼠标当前位置,然后用另外一组变量记录鼠标移动后的位置,当鼠标移动前后的位置差大于一定范围时,触发MouseMove事件。编写代码如下:
Private Sub Form-MouseMove(Button As Integer,shift As Inteqer,X As Single,Y As Single)
Static currentX,currentY As Single
Dim orignX,orignY As Single
‘把当前的鼠标值赋给orignX和orignY
orignX=X
orignY=Y
‘初始化currentX和currentY
if currentX=0 and currentY=0 Then
currentX=orignX
currentY=orignY
Exit Sub
Endif
‘当鼠标移动大于一个象素时,显示鼠标光标并退出程序
If Abs(oriqnX-currentX)>1 or Abs(orignY-currentY)>1Then
X=ShowCursor(True)
End
Endif
EndSub
4、检测鼠标单击在Visual Basic中,单击事件是由“Click”触发的。当屏幕保护程序运行时遇到单击事件,则程序运行终止。代码编辑如下:
Private Sub Form-Click()
X=ShowCursor(True)
End
EndSub
注意在结束之前先设光标的显示为真,以免在程序结束后丢失光标。
5、检测键盘上各按键的状态Visual Basic中的键盘活动由KeyDown触发。代码与单击事件的代码一样。
Private Sub Form-KeyDown(KeyCode As Integer,Shift As Integer)
X=ShowCursor(True)
End
EndSub
下面我们将设计一个简单的屏幕保护程序,该程序运行时,从左至右显示一张图片,图片从屏幕左边出现,至屏幕右面消失,象拉幕一样,且重不停复该过程。假设图片文件名为PIC.BMP,并存放在Windows文件夹中。实际操作如下:
创建一新工程,在窗体中添加一图片框和一个Timer控件。设置它们的属性如下:
Form
BackColor=&H80000007&
BorderStyle=0 ‘None
MaxButton=False
MinButton=False
Windowstate=2 ‘Maximized
Timer
Intelval=5
PictureBox
BackColor=&H80000007&
BorderStyle=0 ‘None
AutoSize=Ture
输入代码如下:
‘在窗体的声明部分声明ShowCursor函数。
Private Declare Function ShowCursor Lib“user32”(By Val bShow As Long) As Long
‘在窗体上单击鼠标时退出程序
Private Sub Form-Click()
X=ShowCursor(True)
End
EndSub
‘在窗体上按下按键时退出程序
Private Sub Form-KeyDown(KeyCode As Integer,Shift As Integer) X=ShowCursor(True)
End
EndSub
‘加载窗体时隐藏鼠标
Private Sub Form-Load()
Dim X As Long
X=ShowCursor(False)
Picture1.Visible=False
Picture1.PICTure=LoadPICTure(“C://windows//PIC.BMP”)
Picture1.Left=-Picture1.Width
EndSub
‘在窗体上移动鼠标时退出程序
Private Sub Form-MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)
Static currentX,currentY As Single
Dim orignX,orignY As Single
‘把当前的鼠标值赋给orignX和orignY
orignX=X
orignY=Y
‘初始化currentX和currentY
If currentX=0 And currentY=0 Then
currentX=orignX
currentY=orignY
ExitSub
EndIf
If Abs(orignX-currentX)>1 Or Abs(orignY-currentY)>1
Then X=ShowCursor(True)
End
EndIf
EndSub
Private Sub Picture1-Click()
X=ShowCursor(True)
End
EndSub
Private Sub Picture1-KeyDown(KeyCode As Integer,Shift As Integer)
X=ShowCursor(True)
End
EndSub
Private Sub Picture1-MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)
Static Xlast,Ylast As Single
Dim Xnow,Ynow As Single
Xnow=X
Ynow=Y
If Xlast=0 And Ylast=0 Then
Xlast=Xnow
Ylast=Ynow
ExitSub
EndIf
If Abs(Xnow-Xlast)>1 Or Abs(Ynow-Ylast)>1 Then
X=ShowCursor(True)
End
EndIf
EndSub
Private Sub Timer1-Timer()
Picture1.Visible=True
Picture1.Top=(Form1.Height-Picture1.Height)/2
Picture1.Left=Picture1.Left+50
If Picture1.Left>Form1.Width Then
Picture1.Left=-Picture1.Width
EndIf
EndSub
将以上代码编译生成可执行文件,在保存文件对话窗中输入文件名称时把扩展名改为“SCR”,最后将生成的屏幕保护程序添加到Windows的系统下即可。
- 推荐阅讯
- Visual Basic通用报表设计小结
- VB COM基础讲座之编译的实例选项
- VB表格控件总览与例程分析
- 在VB中用DAO实现数据库编程
- VBScript教程第五课 VBScript常数
- 用VB备份和恢复SQL Server数据库的方法
- Visual Basic编程映射/中断网络磁盘
- VB6.0数据库访问技术与例程解析
- 用VB2005构建反应灵敏的应用程序
- 基于VB的流媒体解码与播放技术
- 阅读排行
- 1.通过实例学VB—创建简单的个人通讯录
- 2.如何编写高质量的VB代码
- 3.在VB的ListView控件中动态加载记录
- 4.用VB备份和恢复SQL Server数据库的方法
- 5.利用VB学做“黑客”程序
- 6.掌握VB中的ADO数据对象编程
- 7.将程序加入启动组
- 8.VB程序中用ADO对象动态创建数据库和表
- 9.VB与Excel2000实现复杂报表打印
- 10.六天学会Visual Basic数据库编程
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
