这里所谓的单独封面,是只独立应用程序窗口本身的一个窗口,这个窗口在程序运行时首先弹出屏幕,用于装饰程序本身,或简单的演示一下程序的优越性。这样的封面在很多专业的WINDOWS程序中均存在,在VB中可有两种简单的方法实现这一功能。
此方法是通常采用的方法,即在程序中创建两个或两个以上的Form窗体,把其中的一个作为专门的程序封面制作场所,具体方法:
1、创建一个新项目Form1,并在此窗体内安放Command1命令按钮,在Command1-Click()事件中输入结束程序代码“END”。
PrivateSubForm-Load()’隐藏主窗口
Form1.Visible=0’窗口2最大模式
Form2.WindowState=2’显示窗口2
Form2.Show
EndSub
Dimstrr1AsString
DimiAsInteger
PrivateSubForm-Load()
Form2.Picture=LoadPicture("c:\windows\setup.bmp")
Timer1.Interval=10
i=0
EndSub
PrivateSubTimer1-Timer()
Strr1="程序封面演示“
WithForm2
.Font.Transparent=True’透明显示字符
.Font.Size=Rnd*30 10’随机变化字号
.Font.Italic=True’斜体有效
.ForeColor=RGB(Rnd*256,Rnd*256,Rnd*256)’随机变化前景
.FontName=Screen.Fonts(Rnd*7 14)’随机变化字体
EndWith
hh=Form2.TextHehght(strr1)’取字符串高度
ww=Form2.TextWidth(strr1)’取字符串宽度
x=Rnd*(Form2.ScaleWidth-ww)’随机改变坐标
y=Rnd*(Form2.ScaleHeight-hh)
Form2.CurrentX=x
Form2.CurrentY=y
Form2.Printstrr1’显示字符
i=i 1’计数
Ifi>30Then
UnloadMe’关闭封面
Form1.Show’调入主窗口
Timer1.Enabled=False’关闭时间控件
EndIf
EndSub
8、为了能够人为地控制程序封面的停留时间,可在窗体Form2鼠标单击事件中安放退出封面代码:
PrivateSubForm-Click()
UnloadMe
Form1.Show
Timer1.Enabled=False’关闭时间控件
EndIf
EndSub
至此工作全部完成,当运行程序时,首先弹出程序封面,封面上显示一幅。BMP图像,之后在此图像上进行随机字符串的显示,字符串的位置、字体、字号、前景色等值都是随机变化的,显示30次后自动关闭封面返回主窗口,演示过程中用鼠标单击窗口也会返回主窗口,在主窗口中按下结束按钮退出程序。具体操作时还有很多其它技巧,比如可以置第二个窗体为主窗体,这样运行时可自动先弹出程序封面,可省略隐藏窗体和调入窗体的过程,另外第二窗体也可以在程序运行时由代码动态生成,这样编程时复杂一些,但有利于程序代码的管理;程序封面的具体制作过程,有许多动态图像控制方法可以使用,只要灵活动用VB的作图方法,再加上一些必要的API函数的配合,会制作出理想的程序封面。
多窗口编程存在着一定的复杂性,需要对多个窗体的·Frm文件进行管理,编码时还需要频繁地在多个窗口间进行转换。实际上通过一个窗体也可以编制出类似的封面效果。基本原理就是在程序运行时首先通过VISIBLE属性隐藏全部控件,然后在主窗体内进行程序封面设计和演示,延时一定时间再恢复所有控件的显示,即达到了独立程序封面的制作过程。由于窗体内的控件很多,逐一隐藏或显示非常繁琐,可采用容器控件简化操作过程,即把控件全部放到Frame1等控件上,这样只要执行Frame1.Visible=0,即可使其上面的所有控件隐藏起来。
Dimi,jAsInteger
’退出程序按钮
PrivateSubCommand1-Click()
End
EndSub
PrivateSubForm-Click()
Frame1.Visible=1’恢复容器控件
timer1.Enabled=False’关闭时间控件
Form1.WindowState=0’恢复缺省窗口模式
EndSub
PrivateSubForm-Load()
Form1.WindowState=2’窗口最大化
Frame1.Width=Form1.Width’调整容器控件尺寸
Frame1.Height=Form1.Height
Frame1.Top=0’调整容器控件位置
Frame1.Left=0
Frame1.Visible=0’隐藏容器控件
timer1.Interval=10’置时间频率
Form1.Picture=LoadPicture("c:\windows\setup.bmp")’装入图像
Form1.ScaleMode=3’置坐标刻度
Form1.FontName=“黑体”’置字体名称
EndSub
PrivateSubtimer1-Timer()
Strr="程序封面演示"
WithForm1’透明显示
.Font.Transparent=True
.Font.Size=i 1’放大字号
.Font.Italic=True’斜体有效
.ForeColor=RGB(i*3,56,256-i*3)’平滑变化颜色
EndWith
string=strr
Form1.CurrentX=i’连续改变坐标
Form1.CurrentY=i
Form1.Printstringg’显示字符串
i=i 1
Ifi>72Then’放大到72号字
j=j 1’循环计数
i=0
Form1.CurrentX=72
Form1.CurrentY=72
Form1.ForeColor=RGB(255,56,0)’重新显示一次字符
Form1.Printstringg
EndIf
Ifj=5Then’动画计数
Frame1.Visible=1’显示容器控件
timer1.Enabled=False’关闭时间控件
Form1.WindowState=0’恢复窗口模式
EndIf
EndSub->