国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何在VB中使用回調(CallBack)過程

2019-11-18 17:34:22
字體:
來源:轉載
供稿:網友
----回調(CallBack)過程是應用程序內部的、Windows系統可以調用的過程。在windows編程中,回調過程的使用是很普遍的,最明顯的例子是窗口過程本身就是一個回調過程,應用程序窗口對事件的捕獲就是由windows調用相應的窗口過程實現的。用過C編程的人都知道函數名本身就是這個函數的指針,調用它其實就是調用了函數體。但在VB中沒有指針這個概念,如果想在VB中使用回調過程可得費一番周折,幸好在VB5中新增了AddressOf運算符,用它可以得到過程的地址,這樣就大大簡化了在VB中使用回調過程的難度。下面就用一個例子來具體說明如何實現:

----Windows提供了定時器這種輸入設備,它可以周期性地在指定間隔的時間過去時通知應用程序,VB中的Timer控件就是經過封裝的定時器。SetTimer函數用來分配定時器,它有四個參數:hwndAsLong是接收WM_TIMER消息的窗口的句柄;nIDEventAsLong定時器的ID,它是一個非0數;uElapseAsLong是指定的一個時間間隔,以毫秒為單位;lpTimerFuncAsLong定時器函數的過程實例地址,在這里是回調過程的地址。KillTimer函數用來清除定時器:hwndAsLong與定時器相關的窗口;nIDEventAsLong定時器的ID。我們用AddressOf操作符建立回調過程,用來接收定時器的通知,需要注意的是回調過程必須建立在標準模塊中,并且一定要具有正確的語法,由于VB不提供語法檢查,也不對錯誤進行通知,因此在回調過程中使用錯誤的語法將會導致致命的錯誤,而使程序崩潰。

----創建一新的EXE項目,在窗體上放置一EndSub
Updateprogressbar過程用來更新進程條的顯示。
PublicSubupdateprogressbar()
DimpercentdoneAsInteger
percentdone=Form1.ProgressBar1.Value inc_step
Ifpercentdone>100Then
Form1.ProgressBar1.Value=100
endtimer
Else
Form1.ProgressBar1.Value=percentdone
EndIf
EndSub

----建立回調過程,這里回調過程只是調用updateprogressbar過程來更新顯示。
PublicSubTimerProc()
updateprogressbar
EndSub
PrivateSubCommand1_Click()
Ifid_timer>0Then
endtimer
Else
starttimer
EndIf
EndSub

----保存并測試該應用程序,Start鈕激活定時器,系統開始周期性地調用回調函數,定時器被連續激活(進程條不斷更新),到100或按Stop后定時器被清除,顯示終止。以上代碼在VB5專業版,Pwin98
操作系統下運行通過。
----何如在VB中使用回調(CallBack)過程->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 菏泽市| 长宁区| 洛南县| 柘城县| 马公市| 客服| 钟祥市| 泰和县| 墨玉县| 边坝县| 康定县| 尚义县| 三亚市| 凉山| 崇礼县| 马龙县| 威信县| 景泰县| 讷河市| 威信县| 金溪县| 仙居县| 朝阳县| 河西区| 文登市| 沽源县| 富宁县| 游戏| 德阳市| 依兰县| 米易县| 扶绥县| 延安市| 徐州市| 绍兴市| 淮北市| 庆城县| 鄂托克旗| 昌江| 合川市| 新宾|