打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
vb6实现程序延时的几种方法 | 学步园

VB6在开发发贴机时,提交数据要用到延时程序,让程延时和等待.

从网上找了三种方法,三种方法以最后一种最好用.第一种如果不DOEVENTS的话,会使人感觉程序无反应一样

有以下方法:

1.使用Windows API函数Sleep

建一个工程,添加一个TextBox控件和一个CommandButton控件,再将以下代码复制到代码窗口
'声明:
Private
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private
Sub Command1_Click()
Text1.text = "开始时延3秒"
Sleep 3000
Text1.text
= "时延3秒结束"
End Sub

2.使用Timer()函数
这是用的最多的一种方法,也是在VB
联机手册中所推荐的。添加一个CommandButton控件,再将以下代码添加到代码窗口中:

Private Sub
Command2_Click()
Dim Savetime As Single
Text1 = "Timer begin"
Savetime
= Timer '记下开始的时间
While Timer < Savetime + 5 '循环等待
DoEvents
'转让控制权,以便让操作系统处理其它的事件。 -----这个的功能差不多等于挂起,并且等待系统回应后把控制
权返还


Wend
Text1 = "Timer ok"
End Sub

这种方法虽然也很简单,但却
有有一个致命缺陷,那就是Timer函数返回的是从午夜开始到现在经过的秒数。所以Timer返回的最大值也只是60*60*24-1秒,如果从一天的
23:59:58秒开始计时等待5秒,那么程序会永远地循环下去。要进行改良,就要加上判断是否又开始了新的一天,那岂不是太麻烦.

//
上面一段是网上找的资料,其实可以不用timer函数,而是使用timer控件或者second函数,但是second函数如果是在第55秒后延长5秒的
话,也需要做到上面说的新的一分钟的判断,那也麻烦.当然,你也可以修改系统的时间,把他改在55秒前,总之还是麻烦。因此可以考虑用timer函数.创
建一个flag(标志),初始化flag为0,用timer每秒flag+1,当flag2=flag1+5的时候清零,根据条件判断执行下一命令 和
是否继续执行循环。大概的代码是:

dim flag1,flag2 as integer'该定义应该放在最最最上面,flag是全局

'
这部分可以放在command按下按扭的时候,或者onload
flag1=0
flag2=flag1+5

'timer1
部分
if flag2 <> flag1 then
flag1=flag1+1
print flag1

exit sub
else
'flag1=0
timer1.enabled=false
'先清零再做其他事情,包括中断
timer1.enabled=false等

end if
(代码可用)

上面的代码甚至可以一秒判断一次执行一个
不同的命令

if flag2 <> flag1 then
' new part
select case
flag1
case 1: 'Express 1 while the first second
case 2: 'Express 2
while the second second
case 3: 'Express 3 while the third second
case
4: 'Express 4 while the fourth second
....
end select

flag1=flag1+1
exit sub

else
'flag1=0
timer1.enabled=false
'
先清零再做其他事情,包括中断 timer1.enabled=false等

end if

3.使用
Windows API函数timeGetTime()
timeGetTime函数没有参数,返回值是从开机到现在所经历的毫秒数,这个毫秒数是
非周期性递增的,所以不会出现Timer()函数出现的问题,而且这种方法的精确性高于上一种方法。添加一个CommandButton控件,再将以下代
码添加到代码窗口中:
'声明
Private Declare Function timeGetTime Lib
"winmm.dll" () As Long

Private Sub Command3_Click()
Dim
Savetime As Double
Text1 = "timeGetTime begin"
Savetime =
timeGetTime '记下开始时的时间
While timeGetTime < Savetime + 5000 '循环等待
DoEvents
'转让控制权,以便让操作系统处理其它的事件。
Wend
Text1 = "timeGetTime end"
End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VB中实现延时(等待)的几种方法
一个非常好用的VB 延时函数
VBA延时的三个方法--以及声明之后,使用sleep报错的解决方案(declare ptrsaft)
Doevents函数详解
利用 timeGetTime 更精准地计算时间差
timeGetTime(毫秒)与Timer(秒)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服