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

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

On Error Resume Next
T1 = Timer * 1000
T2 = Timer * 1000
T = T1 - T2
Do Until T > WTime
T1 = Timer * 1000
If T1 < T2 Then
T = (T1 - T2) + 86400000
Else
T = T1 - T2
End If
Sleep (20)
DoEvents

Loop

End Function

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

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

了不起,透彻啊

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-14
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<T2
T = (T1 - T2) + 86400000'为T取值
Else'否则
T = T1 - T2'为T取值
End If'IF条件结束
Sleep (20)'暂停20ms(毫秒)
DoEvents'这个是VB特别用得少的地方,转让控制权给系统,以防键盘鼠标长时间没反应

Loop'DO循环结束

End Function'函数结束
第2个回答  2011-08-12
留名,关注
第3个回答  2011-08-12
..

跪求vb高手解释下面这段延迟程序~~我是一菜鸟,麻烦解释的详细些
变量T1用于记录当前的时刻(变化)T2 - T1即时刻差, 当时刻差<指定值,Sleep函数让程序不做事,但Do events确保VB仍然响应其它事件.当时刻差>指定值时,延迟结束, 这就是程序的原理.这里要注意一个重要细节: 一般情况下T1(当前时刻) > T2(最开始时刻), 但当T2是第一天,而T1是第二天时, 有可能T1 ...

请问谁能帮我解释一下下面两段vb语言的含义,小弟是菜鸟所以希望能详细...
Private Sub Command1_Click() '单击事件过程开始,command(按钮)控件的单击事件,单击时响应(private是指这个该过程为模块级过程,另有public定义过程为全局级过程 Dim entry '定义变体变量entry,变体变量是你第一次赋什么类型的值,那么它就是什么类型的变量 entry = InputBox 'InputBox是一个输入框...

VB编译错误 缺少子程序,函数或属性 下面是代码 本人是菜鸟 是按照书上...
Print "圆的周长为:": l 你打的是:(冒号),但应该是;(分号)

...VB连接access的代码啊,菜鸟一枚,最好是特别详细的,从建表开始...
具体代码比较复杂,给你一段用ADO连接SQL数据库的作参考。首先在”工程“菜单里引用ADO2.8 Dim MyConn As ADODB.Connection Dim MyRecord As ADODB.Recordset Dim Dbsource As String, DatabaseName As String, DbUserName As String, DbPassWord As String '定义数据库源,SQL服务器地址,数据库名,...

VB当中有关Drag此拖拽系统的一个问题,我很菜鸟的,求大侠帮帮忙啦_百度...
程序试了,是没有大问题的。image2的dragmode属性设置为0。第二个过程,试试这样:Private Sub Image2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)Image2.Top = Y + Image2.Top Image2.Left = X + Image2.Left Image2.Visible = True End Sub ...

VB 为什么下面一段程序中modd的输出解果不正确啊???在线等啊。。。VB...
a = InputBox("输入a")b = InputBox("输入b")c = InputBox("输入c")改成:a = Val(InputBox("输入a"))b = Val(InputBox("输入b"))c = Val(InputBox("输入c"))

你好。我是vb菜鸟,想问一下这些程序代码是放在哪里的?
要看代码内容,可放代码的地方有四种:1、窗体(form code)2、模块(Module),需要自己建。3、类模块(Class),需要自己建。4、用户控件(UserControl code)。主要是前三个,最主要的是第一个。

VB程序中循环语句1次正1次负
在这段代码中,t 在循环体中只有一次赋值,目前你是 t=-t 意为取反,则每执行一次循环体,t 的值就会发生一次正负的改变,也就是你说的,一下 +1 一下 -1 ,如果换成 t=2 则t 的值不会发生改变,因为每次执行循环体都会将 t 的值更新为 2 。

...弹出了主窗体,请问各位高手,这个代码怎么添写,我是菜鸟
注意打开主窗体和登陆窗体之间的顺序!如果你先打开主窗体,然后以模式打开登陆窗体的话,登陆这块要处理好.最好的办法是你自己按F8跟一下代码.然后修改一下.

vb编程,高手请入,帮忙解释一下这些是什么意思
定义函数的句子 定义的函数为分别为 "year""i""month""day""days"把他们定义成整型数据就是数据内容是整数 "dim"为"定义""as integer"为"作为整型数据"vb里数据要先定义要不然程序无法识别你的数据

相似回答
大家正在搜