久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

vb6實(shí)現(xiàn)程序延時(shí)的幾種方法 | 學(xué)步園

 hdzgx 2019-12-19

VB6在開(kāi)發(fā)發(fā)貼機(jī)時(shí),提交數(shù)據(jù)要用到延時(shí)程序,讓程延時(shí)和等待.

從網(wǎng)上找了三種方法,三種方法以最后一種最好用.第一種如果不DOEVENTS的話,會(huì)使人感覺(jué)程序無(wú)反應(yīng)一樣

有以下方法:

1.使用Windows API函數(shù)Sleep

建一個(gè)工程,添加一個(gè)TextBox控件和一個(gè)CommandButton控件,再將以下代碼復(fù)制到代碼窗口
'聲明:
Private
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private
Sub Command1_Click()
Text1.text = "開(kāi)始時(shí)延3秒"
Sleep 3000
Text1.text
= "時(shí)延3秒結(jié)束"
End Sub

2.使用Timer()函數(shù)
這是用的最多的一種方法,也是在VB
聯(lián)機(jī)手冊(cè)中所推薦的,。添加一個(gè)CommandButton控件,再將以下代碼添加到代碼窗口中:

Private Sub
Command2_Click()
Dim Savetime As Single
Text1 = "Timer begin"
Savetime
= Timer '記下開(kāi)始的時(shí)間
While Timer < Savetime + 5 '循環(huán)等待
DoEvents
'轉(zhuǎn)讓控制權(quán),以便讓操作系統(tǒng)處理其它的事件。 -----這個(gè)的功能差不多等于掛起,并且等待系統(tǒng)回應(yīng)后把控制
權(quán)返還


Wend
Text1 = "Timer ok"
End Sub

這種方法雖然也很簡(jiǎn)單,但卻
有有一個(gè)致命缺陷,那就是Timer函數(shù)返回的是從午夜開(kāi)始到現(xiàn)在經(jīng)過(guò)的秒數(shù),。所以Timer返回的最大值也只是60*60*24-1秒,如果從一天的
23:59:58秒開(kāi)始計(jì)時(shí)等待5秒,那么程序會(huì)永遠(yuǎn)地循環(huán)下去,。要進(jìn)行改良,就要加上判斷是否又開(kāi)始了新的一天,那豈不是太麻煩.

//
上面一段是網(wǎng)上找的資料,其實(shí)可以不用timer函數(shù),,而是使用timer控件或者second函數(shù),,但是second函數(shù)如果是在第55秒后延長(zhǎng)5秒的
話,也需要做到上面說(shuō)的新的一分鐘的判斷,,那也麻煩.當(dāng)然,,你也可以修改系統(tǒng)的時(shí)間,把他改在55秒前,,總之還是麻煩,。因此可以考慮用timer函數(shù).創(chuàng)
建一個(gè)flag(標(biāo)志),初始化flag為0,,用timer每秒flag+1,,當(dāng)flag2=flag1+5的時(shí)候清零,根據(jù)條件判斷執(zhí)行下一命令 和
是否繼續(xù)執(zhí)行循環(huán),。大概的代碼是:

dim flag1,flag2 as integer'該定義應(yīng)該放在最最最上面,,flag是全局

'
這部分可以放在command按下按扭的時(shí)候,或者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
(代碼可用)

上面的代碼甚至可以一秒判斷一次執(zhí)行一個(gè)
不同的命令

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函數(shù)timeGetTime()
timeGetTime函數(shù)沒(méi)有參數(shù),返回值是從開(kāi)機(jī)到現(xiàn)在所經(jīng)歷的毫秒數(shù),這個(gè)毫秒數(shù)是
非周期性遞增的,所以不會(huì)出現(xiàn)Timer()函數(shù)出現(xiàn)的問(wèn)題,而且這種方法的精確性高于上一種方法。添加一個(gè)CommandButton控件,再將以下代
碼添加到代碼窗口中:
'聲明
Private Declare Function timeGetTime Lib
"winmm.dll" () As Long

Private Sub Command3_Click()
Dim
Savetime As Double
Text1 = "timeGetTime begin"
Savetime =
timeGetTime '記下開(kāi)始時(shí)的時(shí)間
While timeGetTime < Savetime + 5000 '循環(huán)等待
DoEvents
'轉(zhuǎn)讓控制權(quán),,以便讓操作系統(tǒng)處理其它的事件,。
Wend
Text1 = "timeGetTime end"
End Sub

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多