Public Event FileProgress(ByVal sngPercentage As Single)
Private mbCancel As Boolean
Public Sub DoCopy(ByVal strSourFile As String, ByVal strDestFile As String, Optional ByVal lngBufferSize As Long = 32768)
On Error GoTo errHande
ReDim abytBuffer(lngBufferSize - 1) As Byte
Dim lngFileSize As Long, lngRemain As Long '文件长度字节数,剩余的字节数
Open strSourFile For Binary Access Read As #1
Open strDestFile For Binary Access Write As #2
lngFileSize = LOF(1)
lngRemain = lngFileSize
While lngRemain > 0
If lngRemain < lngBufferSize Then
lngBufferSize = lngRemain
ReDim abytBuffer(lngBufferSize - 1)
End If
Get #1, , abytBuffer
Put #2, , abytBuffer
lngRemain = lngRemain - lngBufferSize
RaiseEvent FileProgress((lngFileSize - lngRemain) / lngFileSize)
DoEvents
If mbCancel Then
Err.Raise vbObjectError + 513, "CopyFile", "用户取消操作"
End If
Wend
Close #1
Close #2
Erase abytBuffer
RaiseEvent FileProgress(1)
Exit Sub
errHande:
MsgBox Err.Description & ",文件复制没有完成"
Close #1
Close #2
Erase abytBuffer
If Len(Dir(strDestFile)) > 0 And Len(strDestFile) > 0 Then Kill strDestFile
End Sub
Private Sub Cmdload_Click()
CommonDialog1.Filter = "Picture Files (*.jpg;*.gif;*.bmp;*.ico)|*.jpg;*.gif;*.bmp;*.ico|JPEG image(*.jpg,*.jpeg)|*.jpg;*.jpeg|Window bitmap(*.bmp)|*.bmp|GIF image(*.gif)|*.gif|其他(*.*)|*.*"
CommonDialog1.CancelError = True
On Error GoTo Cancel
CommonDialog1.ShowOpen
ReDim Preserve Pic(UBound(Pic) + 1)
Set Pic(UBound(Pic)) = LoadPicture(CommonDialog1.FileName)
Exit Sub
Cancel:
Exit Sub
End Sub
'还原图片:
Private Sub ShowPic(i As Integer)
Set Picture1.Picture = Pic(i)
End Sub