• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

利用VB6.0设计屏幕保护程序

发布: 2007-6-21 21:57 | 作者:   | 来源: 天极网  | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网

   

    屏幕保护程序可以保护显示屏不被损坏,同时节约能源。作为屏幕保护程序,应该具有如下特性:

    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的系统下即可。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网