1楼的都说完了 下面有一小段代码,你看看吧 Private Sub Form_Load() Timer1.Interval = 3500 Screen.MousePointer = 11 End SubPrivate Sub Timer1_Timer() FormMain.Show Screen.MousePointer = 1 Unload Me End Sub
可惜无法用多线程做,用Delphi能做到,但是做普通的封面Delphi比VB麻烦多了。
你可以在timer事件里这样做 timer.enable=false '只进入一次 frmmain.load '执行frmmain.form_load过程 unload me '关闭本页面 frmmain.show '将frmmain显示出来
封面的设计 一、封面的设计是这样的,先出现一窗体,上面为你喜欢的图案。然后出现一艘从左向右行驶着的船。屏幕上方从两侧分别移动出“欢迎”两个字。具体的制作方法是:把预先选好的背景图案装入封面窗体中,窗体命名为CAI。再分别在三个图像控件(image)中装入预先制作好的位图“欢”、“迎”和船型图案。然后把三个image放置在初始位置(即图案刚在窗体出现时的位置),并把它们的可视属性都设置为“false”。程序如下:Sub Form_load() cai.Show ′显示封面窗体 Dim i ′定义变量 image3.visible=True ′船型图像控件出现 a1: If image3.Left < 6120 Then ′6120为船移动到屏幕右边的坐标,此值可以随需要选取 image3.Move image3.Left+50 ′移动此图像控件如嫌移动慢,可改变移动值 Goto a1 End If image1.visible=True ′“欢”字出现 a2: If image1.Left < 2120 Then ′2120为“欢”字移动到屏幕中间的位置 image1.Move image1.Left+50 ′移动此图像控件 Goto a2 End If image2.visible=True ′“迎”字出现 a3: If image2.Left > 5420 Then ′5420为“迎”字移动到屏幕中间的位置 image2.Move image2.Left-50 ′移动此图像控件 Goto a3 End If For i=1 To 10000 ′使窗体暂停一段时间时间长短可通过改变循环次数实现 Next i menul.Show ′显示程序主窗体 Unload cai ′卸载封面窗体 End Sub二、简单的“动画” 点击一3D按钮后,屏幕表现光线平行进入一玻璃管,在管中有一散射中心,有的光线射到此中心后反射到管的初始端。程序如下:Sub Command3Dl_Click() Dim i, j, k, m, n ′定义变量 For i=2080 To 5520 ′显示出三条线,直到图像中的散射中心处,颜色为黑色 Line(2080,2760)-(i,2760),RGB(0, 0, 0) Line(2080,2860)-(i,2860),RGB(0, 0, 0) Line(2080,2660)-(i,2660),RGB(0, 0, 0) Next i For j=5520 To 4800 Step-1 ′反射光线第一次射到管壁上 Line(5520,2760)-(j,2760-(5520-j)*.33333333),RGB (255, 0, 0) ′反射光线,颜色为红色 Line(5520,2660)-(5520+(5520-j),2660),RGB(0, 0, 0) Line(5520,2860)-(5520+(5520-j),2860),RGB(0, 0, 0) ′没有遇到散射中心的两条光线,为黑色,继续前进 Next j For k=4800 To 3360 Step-1 ′反射光线第二次射到管壁上 Line(4800,2520)-(k,2520+(4800-k)*.33333333), RGB(255, 0, 0) ′反射光线,颜色为红色 Line(6240,2660)-(6240+(4800-k),2660),RGB(0,0,0) Line(6240,2860)-(6240+(4800-k),2860),RGB(0,0,0) ′没有遇到散射中心的两条光线,颜色为黑色 Next k For m=3360 To 2080 Step-1 ′反射光线第三次射到管壁上 Line(3360,3000)-(m,3000-(3360-m)*.33333333), RGB(255, 0, 0) ′反射光线,颜色为红色 Next m End Sub三、封底 封底的设计是:先出现全黑的屏幕,然后从上至下逐渐拉出白底红字的“再见”的字样。先按要求在画板中做一个BMP图,上面写着“再见”。然后在一名为BYE的窗体中加入一个全屏大的Picturel,将BMP图装入。程序如下:Sub Form_Load() Dim i ′定义变量 bye.Show ′封底出现 Unload menu1 ′卸载主菜单 al: If picture1.Height < 7130 Then ′7130为图的高度 picturel.Height=picture1.Height+50 ′下拉屏幕 GoTo al End If For i=1 To 20000 ′使窗体暂停一段时间 Next i End ′结束所有操作 End Sub 利用Visual Basic让命令行软件全面转向Windows众所周知,Windows以其优美的图形界面,方便快捷的操作环境,已成为当今的主流操作系统,但由于其程序编写过于复杂,有很多用户常用的工具和小程序仍然只能运行于DOS环境下,造成Windows和DOS的频繁切换、使工作缺乏连续性和效率低下。有什么方法可以解决这一问题呢?等待For Windows版本的面市,但仍会造成重复投资。据笔者观察发现,常用工具中有一部分为命令行软件,这些软件完全可以利用VB改编成For Windows版本的。首先由于VB的简单易用,使Windows的界面设计变得异常简单直观。所以可轻而易举的将命令选项、开关等转化为对应的图形界面(如复选钮等)。其次由于VB为用户提供了Shell函数,也使得命令调用非常简单。通过Shell其实你只做了个界面,核心还是DOS下的原来工具。其函数格式如下:Shell(命令字符串<,窗口类型>)命令字符串即具体执行的命令(如字符串“arj e a:user.arj c:\user ”)有关字符串的操作可查阅有关书籍。至于窗口型类型缺省即可。最后只须注意,在Shell执行函数之前,有必要对命令行中有可能引发错误的参数进行检测,如在执行前检查用户给的源文件是否存在等,以保证达到预期结果。笔者用VB改编的Arj for Windows版本,其结果出乎想象。希望大家能自己动手全面转向Windows。
我认为使用SetWindowPos让封面居最前不是很专业,因为它的最前是系统级的,而一般软件的封面居最前是应用系统级的,包括MS的。就是说程序启动时,标准的封面并不遮盖其它应用程序的界面。(可能是我的SetWindowPos参数不对?希望有人指点!) 我的实现方法,在frmSplash加一个timer控件(1500,即1.5妙),一个bCanUnload布尔型Public变量。然后用API将他的父窗口设为主窗口Public bCanUnload As Boolean Dim lRet As LongPrivate Sub Form_Load() Dim strPath As String, i As Integer strPath = App.Path if right$(strPath,1)<>"\" then strPath = strPath & "\" strPath = strPath & "sysdata\cover.cvr"
If Dir(strPath) = "" Then '处理图片没找到的问题 Else Me.Picture = LoadPicture(strt) End If
lRet = SetWindowLong(Me.hWnd, GWL_HWNDPARENT, FrmMagiCost.hWnd) bCanUnload = False Left = (Screen.Width - Width) / 2 Top = (Screen.Height - Height) / 2 End SubPrivate Sub Form_Unload(Cancel As Integer) SetWindowLong Me.hWnd, GWL_HWNDPARENT, -lRet End SubPrivate Sub Timer1_Timer() bCanUnload = True End Sub主窗口(也是启动窗口)程序: Private Sub MDIForm_Load() dim mSplash as frmSplash
me.Enable=false Set mSplash=new frmSplah mSplash.show doevents '……其它初始化工作 While Not mSplash.bCanUnload '检查时间是否超过1.5秒 DoEvents Wend
'close the mSplash window Unload mSplash Set mSplash = Nothing
me.enable=true End Sub这个封面的图像是以外部文件存在的,可以解决exe过大的问题,但也不安全了,可以自己斟酌,可以放在资源文件或直接放在窗体上(为了节约,不赞成使用picture或imag)。它并不遮盖其它程序的界面,但对于自己的程序,它最前。它存在的时间是1.5秒或更长,处决于初始化的过程。
Timer1.Interval = 3000 '封面存在时间为3秒
Timer1.Enabled = True '打开定时器
End Sub
'载入封面的代码放在主窗体的Load事件中,可以改变鼠标形状以示用户等待。首先在通用过程中声明常量:
Sub MDIForm_Load()
MDIForm1.WindowState = 2 '启动时窗体最大化
Screen.MousePointer = 11 '鼠标呈沙漏状
frmSplash.Show '显示封面
'程序中使用SetWindowPos 函数实现浮动效果:
SetWindowPos frmSplash.hwnd, -1, 0, 0, 0, 0, 3
End Sub
'定时器时间到后关闭定时器,同时卸载封面窗体,使用户可以继续操作主窗体。程序如下:
Sub Timer1_Timer()
Timer1.Enabled = False '关闭定时器
Unload frmSplash '卸载封面
Screen.MousePointer = 0 '鼠标恢复原样
End Sub
下面有一小段代码,你看看吧
Private Sub Form_Load()
Timer1.Interval = 3500
Screen.MousePointer = 11
End SubPrivate Sub Timer1_Timer()
FormMain.Show
Screen.MousePointer = 1
Unload Me
End Sub
timer.enable=false '只进入一次
frmmain.load '执行frmmain.form_load过程
unload me '关闭本页面
frmmain.show '将frmmain显示出来
一、封面的设计是这样的,先出现一窗体,上面为你喜欢的图案。然后出现一艘从左向右行驶着的船。屏幕上方从两侧分别移动出“欢迎”两个字。具体的制作方法是:把预先选好的背景图案装入封面窗体中,窗体命名为CAI。再分别在三个图像控件(image)中装入预先制作好的位图“欢”、“迎”和船型图案。然后把三个image放置在初始位置(即图案刚在窗体出现时的位置),并把它们的可视属性都设置为“false”。程序如下:Sub Form_load()
cai.Show ′显示封面窗体
Dim i ′定义变量
image3.visible=True ′船型图像控件出现
a1: If image3.Left < 6120 Then
′6120为船移动到屏幕右边的坐标,此值可以随需要选取
image3.Move image3.Left+50
′移动此图像控件如嫌移动慢,可改变移动值
Goto a1
End If
image1.visible=True ′“欢”字出现
a2: If image1.Left < 2120 Then
′2120为“欢”字移动到屏幕中间的位置
image1.Move image1.Left+50 ′移动此图像控件
Goto a2
End If
image2.visible=True ′“迎”字出现
a3: If image2.Left > 5420 Then
′5420为“迎”字移动到屏幕中间的位置
image2.Move image2.Left-50 ′移动此图像控件
Goto a3
End If
For i=1 To 10000
′使窗体暂停一段时间时间长短可通过改变循环次数实现
Next i
menul.Show ′显示程序主窗体
Unload cai ′卸载封面窗体
End Sub二、简单的“动画”
点击一3D按钮后,屏幕表现光线平行进入一玻璃管,在管中有一散射中心,有的光线射到此中心后反射到管的初始端。程序如下:Sub Command3Dl_Click()
Dim i, j, k, m, n ′定义变量
For i=2080 To 5520
′显示出三条线,直到图像中的散射中心处,颜色为黑色
Line(2080,2760)-(i,2760),RGB(0, 0, 0)
Line(2080,2860)-(i,2860),RGB(0, 0, 0)
Line(2080,2660)-(i,2660),RGB(0, 0, 0)
Next i
For j=5520 To 4800 Step-1 ′反射光线第一次射到管壁上
Line(5520,2760)-(j,2760-(5520-j)*.33333333),RGB
(255, 0, 0) ′反射光线,颜色为红色
Line(5520,2660)-(5520+(5520-j),2660),RGB(0, 0, 0)
Line(5520,2860)-(5520+(5520-j),2860),RGB(0, 0, 0)
′没有遇到散射中心的两条光线,为黑色,继续前进
Next j
For k=4800 To 3360 Step-1 ′反射光线第二次射到管壁上
Line(4800,2520)-(k,2520+(4800-k)*.33333333),
RGB(255, 0, 0) ′反射光线,颜色为红色
Line(6240,2660)-(6240+(4800-k),2660),RGB(0,0,0)
Line(6240,2860)-(6240+(4800-k),2860),RGB(0,0,0)
′没有遇到散射中心的两条光线,颜色为黑色
Next k
For m=3360 To 2080 Step-1 ′反射光线第三次射到管壁上
Line(3360,3000)-(m,3000-(3360-m)*.33333333),
RGB(255, 0, 0) ′反射光线,颜色为红色
Next m
End Sub三、封底
封底的设计是:先出现全黑的屏幕,然后从上至下逐渐拉出白底红字的“再见”的字样。先按要求在画板中做一个BMP图,上面写着“再见”。然后在一名为BYE的窗体中加入一个全屏大的Picturel,将BMP图装入。程序如下:Sub Form_Load()
Dim i ′定义变量
bye.Show ′封底出现
Unload menu1 ′卸载主菜单
al: If picture1.Height < 7130 Then ′7130为图的高度
picturel.Height=picture1.Height+50 ′下拉屏幕
GoTo al
End If
For i=1 To 20000 ′使窗体暂停一段时间
Next i
End ′结束所有操作
End Sub
利用Visual Basic让命令行软件全面转向Windows众所周知,Windows以其优美的图形界面,方便快捷的操作环境,已成为当今的主流操作系统,但由于其程序编写过于复杂,有很多用户常用的工具和小程序仍然只能运行于DOS环境下,造成Windows和DOS的频繁切换、使工作缺乏连续性和效率低下。有什么方法可以解决这一问题呢?等待For Windows版本的面市,但仍会造成重复投资。据笔者观察发现,常用工具中有一部分为命令行软件,这些软件完全可以利用VB改编成For Windows版本的。首先由于VB的简单易用,使Windows的界面设计变得异常简单直观。所以可轻而易举的将命令选项、开关等转化为对应的图形界面(如复选钮等)。其次由于VB为用户提供了Shell函数,也使得命令调用非常简单。通过Shell其实你只做了个界面,核心还是DOS下的原来工具。其函数格式如下:Shell(命令字符串<,窗口类型>)命令字符串即具体执行的命令(如字符串“arj e a:user.arj c:\user ”)有关字符串的操作可查阅有关书籍。至于窗口型类型缺省即可。最后只须注意,在Shell执行函数之前,有必要对命令行中有可能引发错误的参数进行检测,如在执行前检查用户给的源文件是否存在等,以保证达到预期结果。笔者用VB改编的Arj for Windows版本,其结果出乎想象。希望大家能自己动手全面转向Windows。
我的实现方法,在frmSplash加一个timer控件(1500,即1.5妙),一个bCanUnload布尔型Public变量。然后用API将他的父窗口设为主窗口Public bCanUnload As Boolean
Dim lRet As LongPrivate Sub Form_Load()
Dim strPath As String, i As Integer
strPath = App.Path
if right$(strPath,1)<>"\" then strPath = strPath & "\"
strPath = strPath & "sysdata\cover.cvr"
If Dir(strPath) = "" Then
'处理图片没找到的问题
Else
Me.Picture = LoadPicture(strt)
End If
lRet = SetWindowLong(Me.hWnd, GWL_HWNDPARENT, FrmMagiCost.hWnd)
bCanUnload = False
Left = (Screen.Width - Width) / 2
Top = (Screen.Height - Height) / 2
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_HWNDPARENT, -lRet
End SubPrivate Sub Timer1_Timer()
bCanUnload = True
End Sub主窗口(也是启动窗口)程序:
Private Sub MDIForm_Load()
dim mSplash as frmSplash
me.Enable=false Set mSplash=new frmSplah
mSplash.show
doevents '……其它初始化工作 While Not mSplash.bCanUnload
'检查时间是否超过1.5秒
DoEvents
Wend
'close the mSplash window
Unload mSplash
Set mSplash = Nothing
me.enable=true
End Sub这个封面的图像是以外部文件存在的,可以解决exe过大的问题,但也不安全了,可以自己斟酌,可以放在资源文件或直接放在窗体上(为了节约,不赞成使用picture或imag)。它并不遮盖其它程序的界面,但对于自己的程序,它最前。它存在的时间是1.5秒或更长,处决于初始化的过程。