窥天地之奥 达造化之极
全部博文(105)
分类:
2006-04-24 08:03:05
用VB制作精典屏保的思想方法 |
利用Visual Basic 制作屏幕保护非常容易。本文将详细给大家介绍制作屏幕保护的方法。 ---- 一. 基本编程思路 ---- 大家都知道屏幕保护就是利用变换的颜色或图形以防止不变化的屏幕像素被损伤。所以,屏幕保护就是显示不断变化或移动的图形,并且当有鼠标移动或按键时能够终止的。 ---- 1. 编制屏幕保护图形 ---- 2. 隐藏鼠标 ---- 用ShowCursor Windows API 函数我们可以实现隐藏鼠标。 ---- 3. 检测鼠标和按键行为 ---- 检测上述行为以便退出屏幕保护 ---- 4. Windows 调用屏幕保护的参数命令 ---- /a 在显示器属性对话框中单击了改变口令按钮。 ---- /p 每当选中显示器属性对话框中屏幕保护标签时,在对话框显示预览效果。 ---- /c 在显示器属性对话框中单击了设置按钮。 ---- /s 在显示器属性对话框中单击了预览按钮或屏幕保护被正常调用。 ---- 5. 编译屏幕保护 ---- 其实任何应用都可作为屏幕保护来运行,但为了被Windows 95 所调用,需要将它作为屏幕保护来编译。首先进入5编程环境,编好后选择/File/Make project菜单项,然后在File Name文本框中将后缀名EXE改为SCR。最后单击OK按钮,将生成的SCR拷到Windows目录下,就完成了屏幕保护的创建。 ---- 二. 实例 ---- 下面就用一个实例给大家详细说明屏幕保护的制作。 Option Explicit Dim quitflag As Boolean ‘声明终止标志变量 Dim lleft ‘声明隐藏或显示鼠标的API函数 Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long ‘检测鼠标单击或移动 Private Sub Form_Click() quitflag = True End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Static xlast, ylast Dim xnow As Single Dim ynow As Single xnow = X ynow = Y If xlast = 0 And ylast = 0 Then xlast = xnow ylast = ynow Exit Sub End If If xnow < > xlast Or ynow < > ylast Then quitflag = True End If End Sub ‘检测按键 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) quitflag = True End Sub Private Sub Form_Load() Dim X As Long lleft = 0 ‘横向滚动文字的起始X坐标 If App.PrevInstance = True Then ‘用APP对象的PrevInstance属性 Unload Me ‘防止同时运行屏幕保护的两个实例 Exit Sub End If Select Case Ucase$(Left$(Command$, 2)) ‘装载命令行参数 Case "/S" ‘在显示器属性对话框中单击了 预览按钮或屏幕保护被正常调用。 Show ‘全屏显示Form1窗体 Randomize ‘初始化随机数生成器 X = ShowCursor(False) ‘隐藏鼠标 BackColor = vbBlack Do Timer2.Enabled = True ‘启动Timer2 ,显示屏幕保护滚动文字 DoEvents ‘转让控制权,以便检测鼠标和按键行为 Loop Until quitflag = True ‘运行屏幕保护滚动文字直至有鼠标和按键行为 Timer2.Enabled = False ‘终止滚动文字 Timer1.Enabled = True ‘启动Timer1,退出屏幕保护 Case Else Unload Me Exit Sub End Select End Sub Private Sub Form_Unload(Cancel As Integer) Dim X X = ShowCursor(True) ‘显示鼠标 End Sub Private Sub Timer1_Timer() Unload Me ‘退出屏幕保护 End Sub Private Sub Timer2_Timer() 显示横向滚动文字 lleft = lleft + 100 If lleft >= 11810 Then lleft = 0 Lab1.Top = Int(Rnd * 7000) End If Lab1.Left = lleft Timer2.Enabled = False End Sub |