给你一个例子:
'SSSSSSSSSSS是调用较大量的计算过程
'%%%%%%%%%%%%%%%%%%%%%%是显示进度
'*****************是关键要保留处From1Option Explicit
Private WithEvents mWidget As Widget
Private mblnCancel As BooleanPrivate Sub mWidget_PercentDone(ByVal Percent As _
Single, Cancel As Boolean)
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lblPercentDone.Caption = CInt(100 * Percent) & "%"
DoEvents
If mblnCancel Then Cancel = True
End Sub
Private Sub Command2_Click()
mblnCancel = True
End Sub
Private Sub Form_Load()
Set mWidget = New Widget
End Sub' Start Task button.
Private Sub Command1_Click()
mblnCancel = False
lblPercentDone.Caption = "0%"
lblPercentDone.Refresh
'SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Call mWidget.LongTask(14.4, 0.66) If Not mblnCancel Then lblPercentDone.Caption = 100
End Sub另外还要一个类,Widget,文件名Widget.cls,Option Explicit
'***************************
Public Event PercentDone(ByVal Percent As Single, _
ByRef Cancel As Boolean)Public Sub LongTask(ByVal Duration As Single, _
ByVal MinimumInterval As Single)
Dim sngThreshold As Single
Dim sngStart As Single
Dim blnCancel As Boolean
' The Timer function returns the fractional number
' of seconds since Midnight, as a Single.
sngStart = Timer
sngThreshold = MinimumInterval
Do While Timer < (sngStart + Duration)
' In a real application, some unit of work would
' be done here each time through the loop.
If Timer > (sngStart + sngThreshold) Then
'***************************
RaiseEvent PercentDone( _
sngThreshold / Duration, blnCancel)
' Check to see if the operation was canceled.
'***************************
If blnCancel Then Exit Sub
sngThreshold = sngThreshold + MinimumInterval
End If
Loop
End Sub运行后点Command1即显示进度了!再点击Command2即可停止
'SSSSSSSSSSS是调用较大量的计算过程
'%%%%%%%%%%%%%%%%%%%%%%是显示进度
'*****************是关键要保留处From1Option Explicit
Private WithEvents mWidget As Widget
Private mblnCancel As BooleanPrivate Sub mWidget_PercentDone(ByVal Percent As _
Single, Cancel As Boolean)
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lblPercentDone.Caption = CInt(100 * Percent) & "%"
DoEvents
If mblnCancel Then Cancel = True
End Sub
Private Sub Command2_Click()
mblnCancel = True
End Sub
Private Sub Form_Load()
Set mWidget = New Widget
End Sub' Start Task button.
Private Sub Command1_Click()
mblnCancel = False
lblPercentDone.Caption = "0%"
lblPercentDone.Refresh
'SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Call mWidget.LongTask(14.4, 0.66) If Not mblnCancel Then lblPercentDone.Caption = 100
End Sub另外还要一个类,Widget,文件名Widget.cls,Option Explicit
'***************************
Public Event PercentDone(ByVal Percent As Single, _
ByRef Cancel As Boolean)Public Sub LongTask(ByVal Duration As Single, _
ByVal MinimumInterval As Single)
Dim sngThreshold As Single
Dim sngStart As Single
Dim blnCancel As Boolean
' The Timer function returns the fractional number
' of seconds since Midnight, as a Single.
sngStart = Timer
sngThreshold = MinimumInterval
Do While Timer < (sngStart + Duration)
' In a real application, some unit of work would
' be done here each time through the loop.
If Timer > (sngStart + sngThreshold) Then
'***************************
RaiseEvent PercentDone( _
sngThreshold / Duration, blnCancel)
' Check to see if the operation was canceled.
'***************************
If blnCancel Then Exit Sub
sngThreshold = sngThreshold + MinimumInterval
End If
Loop
End Sub运行后点Command1即显示进度了!再点击Command2即可停止
分 分 分
分 分 分 分
分分分分分分分分分 分分分分分分分分
分 分
分分分分分分分分分分分 分 分
分 分 分 分分分分分分分分分
分 分 分 分
分 分分 分 分分 分分分分分分分分 分
分分 分 分
分分 分
分分分分分 分分分
分 分 分
分 分 分 分
分分分分分分分分分 分分分分分分分分
分 分
分分分分分分分分分分分 分 分
分 分 分 分分分分分分分分分
分 分 分 分
分 分分 分 分分 分分分分分分分分 分
分分 分 分
分分 分
分分分分分 分分分