跪求vb高手解释下面这段延迟程序~~我是一菜鸟,麻烦解释的详细些

2024-11-28 20:47:46
推荐回答(4个)
回答(1):

基本的知识就不罗唆了
Timer是记录当前时刻的函数, Timer X 1000就是毫秒数.
变量T2用于记录程序运行最开始的时刻(固定不变)
变量T1用于记录当前的时刻(变化)
T2 - T1即时刻差, 当时刻差<指定值,Sleep函数让程序不做事,但Do events确保VB仍然响应其它事件.
当时刻差>指定值时,延迟结束, 这就是程序的原理.

这里要注意一个重要细节: 一般情况下T1(当前时刻) > T2(最开始时刻), 但当T2是第一天,而T1是第二天时, 有可能T1 < T2, 因为Timer函数返回的是当前时刻距离当天零点的间隔时长. 因此代码中作了判断:加上一个周期的毫秒数(1天即86400000毫秒)

回答(2):

Public Function Wait(WTime As Long) Dim T1 As Long, T2 As Long, T As Long'函数

On Error Resume Next '如果出错则跳过,永不提示出错
T1 = Timer * 1000'申明变量T1,但不知你的Timer是是个全局变量还是常量
T2 = Timer * 1000''申明变量T2
T = T1 - T2'函数传入参数T取值=T1-T2
'下面7行用DO循环加IF条件进行对T取值(do  until 循环用法是执行一次后后再判断条件)
Do Until T > WTime
T1 = Timer * 1000
If T1 < T2 Then'如果T1 T = (T1 - T2) + 86400000'为T取值
Else'否则
T = T1 - T2'为T取值
End If'IF条件结束
Sleep (20)'暂停20ms(毫秒)
DoEvents'这个是VB特别用得少的地方,转让控制权给系统,以防键盘鼠标长时间没反应

Loop'DO循环结束

End Function'函数结束

回答(3):

留名,关注

回答(4):

..