如何实现像Windows中的拷贝进度的效果

nj_tanghua 2006-02-23 01:33:26
如题
想做一个显示进度的窗口,像Windows中拷贝文件那样的效果
如何做了,Windows中有没有这样的控件,怎么用
...全文
242 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nj_tanghua 2006-02-27
  • 打赏
  • 举报
回复
tanghua1972@126.com ,谢谢你了visualbear(void)
visualbear 2006-02-26
  • 打赏
  • 举报
回复
//我不要拷贝文件,只要那个进度条,带文件件夹飘浮动画效果的。
谁能解?

可以用Animation控件,想播什么就播什么,呵呵。。。
那个.AVI文件我好像有现成的,
留个mail吧~~传给你
NewPeople 2006-02-24
  • 打赏
  • 举报
回复
你可以在SHELL32.DLL文件中找到该资源,是一个AVI文件
nj_tanghua 2006-02-24
  • 打赏
  • 举报
回复
这个问题就没人知道吗?我记得以前有过这样的问题的
nj_tanghua 2006-02-23
  • 打赏
  • 举报
回复
我不要拷贝文件,只要那个进度条,带文件件夹飘浮动画效果的。
谁能解?
lxcc 2006-02-23
  • 打赏
  • 举报
回复
'http://www.china-askpro.com/msg8/qa86.shtml 这里有更详细的解释
Private Const FO_MOVE As Long = &H1
Private Const FO_COPY As Long = &H2
Private Const FO_DELETE As Long = &H3
Private Const FO_RENAME As Long = &H4
Private Const FOF_MULTIDESTFILES As Long = &H1
Private Const FOF_CONFIRMMOUSE As Long = &H2
Private Const FOF_SILENT As Long = &H4
Private Const FOF_RENAMEONCOLLISION As Long = &H8
Private Const FOF_NOCONFIRMATION As Long = &H10
Private Const FOF_WANTMAPPINGHANDLE As Long = &H20
Private Const FOF_CREATEPROGRESSDLG As Long = &H0
Private Const FOF_ALLOWUNDO As Long = &H40
Private Const FOF_FILESONLY As Long = &H80
Private Const FOF_SIMPLEPROGRESS As Long = &H100
Private Const FOF_NOCONFIRMMKDIR As Long = &H200

Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type

Private Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private Sub Command1_Click()
Dim result As Long
Dim fileop As SHFILEOPSTRUCT
With fileop
.hwnd = Me.hwnd
.wFunc = FO_COPY
.pFrom = "C:\PROGRAM FILES\MICROSOFT VISUAL BASIC\VB.HLP" & vbNullChar & "C:\PROGRAM FILES\MICROSOFT VISUAL BASIC\README.HLP" & vbNullChar & vbNullChar
.pFrom = "C:\*.txt" & vbNullChar & vbNullChar
.pTo = "C:\testfolder" & vbNullChar & vbNullChar
.fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With
result = SHFileOperation(fileop)
If result <> 0 Then
' Operation failed
MsgBox Err.LastDllError
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "Operation Failed"
End If
End If
End Sub
唐古拉山 2006-02-23
  • 打赏
  • 举报
回复

完全可以自己写一个通用的啊

太容易了

faysky2 2006-02-23
  • 打赏
  • 举报
回复
拷贝文件带进度条
http://community.csdn.net/Expert/topic/4550/4550323.xml?temp=.7952234
northwolves 2006-02-23
  • 打赏
  • 举报
回复
我机子上的文件,不记得何时就有了

Public sub CopyFile(Src As String, Dst As String) As Single
Dim BTest!, FSize!
Dim F1%, F2%
Dim sArray() As Byte
Dim buff As Integer

Const BUFSIZE = 1024

buff = 1024

F1 = FreeFile
Open Src For Binary As F1
F2 = FreeFile
Open Dst For Binary As F2

FSize = LOF(F1)
BTest = FSize - LOF(F2)
ReDim sArray(BUFSIZE) As Byte

Do
If BTest < BUFSIZE Then
buff = BTest
ReDim sArray(buff) As Byte
End If

Get F1, , sArray
Put F2, , sArray

BTest = FSize - LOF(F2)
If BTest < 0 Then
ProgressBar.Value = 100
Else
ProgressBar.Value = (100 - Int(100 * BTest / FSize))
End If
Loop Until BTest <= 0

Close F1
Close F2
CopyFile = FSize

End sub
nj_tanghua 2006-02-23
  • 打赏
  • 举报
回复
自己顶下

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧