【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“在VB中实现延时程序 - 编程语言”一文,供大家参考学习!
在
VB中实现延时等待的几种方法 在程序流程中经常要延时一段时间后再继续往下执行在
VB中
常用的有以下几种方法因为Timer控件打乱了程序的流程所以一般不用它 1.使用Windows API函数Sleep 新建一个工程添加一个TextBox控件和一个CommandButton控件再将以下
代码复制到
代码窗口 Private Declare Sub Sleep Lib kernel32 ByVal dwMilliseconds As Long Private Sub Command1_Click Text1 sleep begin Sleep 3000 Text1 sleep end End Sub 按F5执行按下Command1按钮程序停止执行3秒钟内不对用户的操作做出反应并且Text1里的内容并没有发生改变。
这是怎么回事呢原来Sleep函数功能是将调用它的进程挂起dwMilliseconds毫秒时间在这段时间内此进程不对用户操作做出反应
程序中虽然将Text1的Text属性改成Sleep begin但还没等完成对屏幕的更新进程就被挂起了对用户来说程序象是死机一样。
所以这种方法虽然简单但并不适用。
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返回的最大值也只是606024-1秒如果从一天的23:59:58秒开始计时等待5秒那么程序会永远地循环下去。
要进行改良就要加上判断是否又开始了新的一天那岂不是太麻烦。
下面给大家推荐另一个Windows API函数。
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 按F5执行程序按这几个按钮您可以感受一下这几种方法的优劣。