用max恢复重装系统后数据恢复的时候没有进度条

进度条中CProcessCtrl::StepIt(),SetPos()没有作用问题
[问题点数:0分]
进度条中CProcessCtrl::StepIt(),SetPos()没有作用问题
[问题点数:0分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2010年7月 荣获微软MVP称号2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2010年1月 VC/MFC大版内专家分月排行榜第一2004年4月 VC/MFC大版内专家分月排行榜第一
2010年7月 荣获微软MVP称号2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2010年1月 VC/MFC大版内专家分月排行榜第一2004年4月 VC/MFC大版内专家分月排行榜第一
2005年6月 VC/MFC大版内专家分月排行榜第一
2010年7月 荣获微软MVP称号2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2010年1月 VC/MFC大版内专家分月排行榜第一2004年4月 VC/MFC大版内专家分月排行榜第一
2006年10月 总版技术专家分月排行榜第二2006年9月 总版技术专家分月排行榜第二
2006年5月 总版技术专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。高分求解:我用API函数编写的一个下载的程序,但在下载时没有进度条提示目前下载了多少?
100lcpang]
编辑:www.fx114.net
本篇文章主要介绍了"高分求解:我用API函数编写的一个下载的程序,但在下载时没有进度条提示目前下载了多少?
100lcpang]",主要涉及到高分求解:我用API函数编写的一个下载的程序,但在下载时没有进度条提示目前下载了多少?
100lcpang]方面的内容,对于高分求解:我用API函数编写的一个下载的程序,但在下载时没有进度条提示目前下载了多少?
100lcpang]感兴趣的同学可以参考一下。
高分求解:
我用API函数编写的一个下载的程序,但在下载时没有进度条提示目前下载了多少?用哪一位大蛱知道用API函数下载有哪一个API函数可以知道目前下载了进度?自己做个进度条不就行了gz,up!
—————————————————————————————————
┏━★━━◆━━★━┓&
♂欢|◢CSDN◣|使♂&       ▲自由保存帖子,浏览,关注检测
┃迎|◥论坛助手◤|用┃&       ▲完善的CSDN客户端工具
┗━☆━━◇━━━☆┛       ▲自动添加签名......
让你更快,更爽,更方便地上CSDN...
http://www.csdn.net/expert/topic/573/573604.xml
http://www.chinaok.net/csdn/csdn.zip我是用fileSize&=&Inet1.GetHeader("Content-length")&得到要下载的文件大小的,然后你可以自己做一个进度条显示.Option&Explicit
Public&Const&MAX_PATH&=&260
Public&Const&INTERNET_FLAG_RELOAD&=&&H
Public&Const&NO_ERROR&=&0
Public&Const&FILE_ATTRIBUTE_READONLY&=&&H1
Public&Const&FILE_ATTRIBUTE_HIDDEN&=&&H2
Public&Const&FILE_ATTRIBUTE_SYSTEM&=&&H4
Public&Const&FILE_ATTRIBUTE_DIRECTORY&=&&H10
Public&Const&FILE_ATTRIBUTE_ARCHIVE&=&&H20
Public&Const&FILE_ATTRIBUTE_NORMAL&=&&H80
Public&Const&FILE_ATTRIBUTE_TEMPORARY&=&&H100
Public&Const&FILE_ATTRIBUTE_COMPRESSED&=&&H800
Public&Const&FILE_ATTRIBUTE_OFFLINE&=&&H1000
Public&Const&INTERNET_FLAG_PASSIVE&=&&H8000000
Public&Const&FORMAT_MESSAGE_FROM_HMODULE&=&&H800
Public&Const&GENERIC_READ&=&&H
Public&Const&GENERIC_WRITE&=&&H
Type&WIN32_FIND_DATA
&&&&&&&&dwFileAttributes&As&Long
&&&&&&&&ftCreationTime&As&Currency
&&&&&&&&ftLastAccessTime&As&Currency
&&&&&&&&ftLastWriteTime&As&Currency
&&&&&&&&nFileSizeHigh&As&Long
&&&&&&&&nFileSizeLow&As&Long
&&&&&&&&dwReserved0&As&Long
&&&&&&&&dwReserved1&As&Long
&&&&&&&&cFileName&As&String&*&MAX_PATH
&&&&&&&&cAlternate&As&String&*&14
Public&Const&ERROR_NO_MORE_FILES&=&18
Public&Const&INTERNET_OPEN_TYPE_PRECONFIG&=&0
Public&Const&INTERNET_INVALID_PORT_NUMBER&=&0
Public&Const&INTERNET_SERVICE_FTP&=&1
Public&Const&FTP_TRANSFER_TYPE_BINARY&=&&H2
Public&Const&FTP_TRANSFER_TYPE_ASCII&=&&H1
Declare&Function&FileTimeToLocalFileTime&Lib&"kernel32"&(lpFileTime&As&Any,&lpLocalFileTime&As&Any)&As&Long
Public&Declare&Function&FormatMessage&Lib&"kernel32"&Alias&"FormatMessageA"&(ByVal&dwFlags&As&Long,&ByVal&lpSource&As&Long,&ByVal&dwMessageId&As&Long,&ByVal&dwLanguageId&As&Long,&ByVal&lpBuffer&As&String,&ByVal&nSize&As&Long,&Arguments&As&Long)&As&Long
Public&Declare&Function&FTPGetFile&Lib&"wininet.dll"&Alias&"FtpGetFileA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszRemoteFile&As&String,&ByVal&lpszNewFile&As&String,&ByVal&fFailIfExists&As&Boolean,&ByVal&dwFlagsAndAttributes&As&Long,&ByVal&dwFlags&As&Long,&ByVal&dwContext&As&Long)&As&Boolean
Public&Declare&Function&FtpRenameFile&Lib&"wininet.dll"&Alias&"FtpRenameFileA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszOldName&As&String,&ByVal&lpszNewName&As&String)&As&Boolean
Public&Declare&Function&FtpCreateDirectory&Lib&"wininet.dll"&Alias&"FtpCreateDirectoryA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszName&As&String)&As&Boolean
Public&Declare&Function&FtpRemoveDirectory&Lib&"wininet.dll"&Alias&"FtpRemoveDirectoryA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszName&As&String)&As&Boolean
Public&Declare&Function&FtpDeleteFile&Lib&"wininet.dll"&Alias&"FtpDeleteFileA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszFileName&As&String)&As&Boolean
Public&Declare&Function&FtpOpenFile&Lib&"wininet.dll"&Alias&"FtpOpenFileA"&(ByVal&hFtpSession&As&Long,&ByVal&sBuff&As&String,&ByVal&Access&As&Long,&ByVal&Flags&As&Long,&ByVal&Context&As&Long)&As&Long
Public&Declare&Function&FTPPutFile&Lib&"wininet.dll"&Alias&"FtpPutFileA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszLocalFile&As&String,&ByVal&lpszRemoteFile&As&String,&ByVal&dwFlags&As&Long,&ByVal&dwContext&As&Long)&As&Boolean
Public&Declare&Function&FtpSetCurrentDirectory&Lib&"wininet.dll"&Alias&"FtpSetCurrentDirectoryA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszDirectory&As&String)&As&Boolean
Public&Declare&Function&FtpGetCurrentDirectory&Lib&"wininet.dll"&Alias&"FtpGetCurrentDirectoryA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszCurrentDirectory&As&String,&lpdwCurrentDirectory&As&Long)&As&Boolean
Public&Declare&Function&FtpFindFirstFile&Lib&"wininet.dll"&Alias&"FtpFindFirstFileA"&(ByVal&hFtpSession&As&Long,&ByVal&lpszSearchFile&As&String,&lpFindFileData&As&WIN32_FIND_DATA,&ByVal&dwFlags&As&Long,&ByVal&dwContent&As&Long)&As&Long
Public&Declare&Function&GetModuleHandle&Lib&"kernel32"&Alias&"GetModuleHandleA"&(ByVal&lpLibFileName&As&String)&As&Long
Public&Declare&Function&InternetFindNextFile&Lib&"wininet.dll"&Alias&"InternetFindNextFileA"&(ByVal&hFind&As&Long,&lpvFindData&As&WIN32_FIND_DATA)&As&Long
Public&Declare&Function&InternetWriteFile&Lib&"wininet.dll"&(ByVal&hFile&As&Long,&ByRef&sBuffer&As&Byte,&ByVal&lNumBytesToWrite&As&Long,&dwNumberOfBytesWritten&As&Long)&As&Integer
Public&Declare&Function&InternetReadFile&Lib&"wininet.dll"&(ByVal&hFile&As&Long,&ByRef&sBuffer&As&Byte,&ByVal&lNumBytesToRead&As&Long,&dwNumberOfBytesRead&As&Long)&As&Integer
Public&Declare&Function&InternetCloseHandle&Lib&"wininet.dll"&(ByVal&hInet&As&Long)&As&Long
Public&Declare&Function&InternetOpen&Lib&"wininet.dll"&Alias&"InternetOpenA"&(ByVal&sAgent&As&String,&ByVal&lAccessType&As&Long,&ByVal&sProxyName&As&String,&ByVal&sProxyBypass&As&String,&ByVal&lFlags&As&Long)&As&Long
Public&Declare&Function&InternetConnect&Lib&"wininet.dll"&Alias&"InternetConnectA"&(ByVal&hInternetSession&As&Long,&ByVal&sServerName&As&String,&ByVal&nServerPort&As&Integer,&ByVal&sUsername&As&String,&ByVal&sPassword&As&String,&ByVal&lService&As&Long,&ByVal&lFlags&As&Long,&ByVal&lContext&As&Long)&As&Long
Public&Declare&Function&InternetGetLastResponseInfo&Lib&"wininet.dll"&Alias&"InternetGetLastResponseInfoA"&(ByRef&lpdwError&As&Long,&ByVal&lpszErrorBuffer&As&String,&ByRef&lpdwErrorBufferLength&As&Long)&As&Boolean
Const&rDayZeroBias&As&Double&=&109205#&&&'&Abs(CDbl(#01-01-1601#))
Const&rMillisecondPerDay&As&Double&=&#&*&60#&*&60#&*&24#&/&10000#Private&Hopen&As&Long
Private&HConnection&As&Long
Private&sUser,&sPassword&As&String
Private&Const&BUFFERSIZE&=&255
Private&DB&As&New&Connection
Private&Rs_VER&As&New&Recordset&'返回服务器的版本
Private&Sub&Command1_Click()
&&&&Dim&Data(BUFFERSIZE&-&1)&As&Byte&'&array&of&100&elements&0&to&99
&&&&Dim&Written&As&Long
&&&&Dim&Size&As&Long
&&&&Dim&Sum&As&Long
&&&&Dim&lBlock&As&Long
&&&&Dim&sLocal&As&String
&&&&Dim&sRemote&As&String
&&&&sLocal&=&App.Path&+&"\升级版.exe"
&&&&sRemote&=&Rs_VER("EXEName")
&&&&Sum&=&0
&&&&lBlock&=&0
&&&&sLocal&=&Trim(sLocal)
&&&&sRemote&=&Trim(sRemote)
&&&&Pb.Max&=&100
&&&&Pb.Min&=&0
&&&&Pb.Enabled&=&True
&&&&If&sLocal&&&&""&And&sRemote&&&&""&Then
&&&&&&&&&Size&=&GetFTPFileSize(sRemote)
&&&&&&&&&&hFile&=&FtpOpenFile(HConnection,&sRemote,&GENERIC_READ,&dwType,&0)
&&&&&&&&&&If&hFile&=&0&Then
&&&&&&&&&&&&&&MsgBox&Err.Description
&&&&&&&&&&&&&&Exit&Sub
&&&&&&&&&&End&If
&&&&&&&&&&
&&&&&&&&&&Open&sLocal&For&Binary&Access&Write&As&#1
&&&&&&&&&&Seek&#1,&1
&&&&&&&&&&Sum&=&1
&&&&&&&&&&For&lBlock&=&1&To&Size&\&BUFFERSIZE
&&&&&&&&&&&&&&If&(InternetReadFile(hFile,&Data(0),&BUFFERSIZE,&Written)&=&0)&Then
&&&&&&&&&&&&&&&&&&MsgBox&"错误,不能完成升级",&vbOKOnly,&"错误"
&&&&&&&&&&&&&&&&&&End
&&&&&&&&&&&&&&&&&&Close&#1
&&&&&&&&&&&&&&&&&&Exit&Sub
&&&&&&&&&&&&&&End&If
&&&&&&&&&&&&&&Put&#1,&,&Data
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&Pb.Value&=&CSng(lBlock&*&BUFFERSIZE&/&Size)&*&100&'进度条的指
&&&&&&&&&&&&&&PbValue.Caption&=&Left(Pb.Value,&3)&+&"%"&'进度条显示的值
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&DoEvents
&&&&&&&&&&&&&&Sum&=&Sum&+&BUFFERSIZE
&&&&&&&&&&&&&&'RaiseEvent&FileTransferProgress(Sum,&Size)
&&&&&&&&&&Next&lBlock
&&&&&&&&&&
&&&&&&&&&&ReDim&Data2((Size&Mod&BUFFERSIZE)&-&1)&As&Byte
&&&&&&&&&&If&(InternetReadFile(hFile,&Data2(0),&Size&Mod&BUFFERSIZE,&Written)&=&0)&Then
&&&&&&&&&&&&&&MsgBox&Err.Description
&&&&&&&&&&&&&&Close&#1
&&&&&&&&&&&&&&Exit&Sub
&&&&&&&&&&End&If
&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&Put&#1,&,&Data2
&&&&&&&&&&
&&&&&&&&&&Sum&=&Sum&+&(Size&Mod&BUFFERSIZE)
&&&&&&&&&&Size&=&Sum
&&&&&&&&&&'RaiseEvent&FileTransferProgress(Sum,&Size)
&&&&&&&&&&Close&#1
&&&&&&&&&&
&&&&&&&&&&PbValue.Caption&=&"100%"&'下载完成
&&&&&&&&&&InternetCloseHandle&(hFile)
&&&&&End&If
Private&Sub&Form_Load()
&&&If&VER&=&False&Then
&&&&&&MsgBox&"没有最新版本,不用进行升级",&vbOKOnly,&"消息"
&&&Hopen&=&InternetOpen("eDIY&FTP&Client",&INTERNET_OPEN_TYPE_PRECONFIG,&vbNullString,&vbNullString,&0)
&&&&If&Hopen&=&0&Then
&&&&&&&&MsgBox&Err.Description
&&&&&&&&End
&&&&End&If
&&&&dwType&=&FTP_TRANSFER_TYPE_BINARY
&&&&dwSeman&=&0
&&&&HConnection&=&0
&&&&If&HConnection&&&&0&Then
&&&&&&&&InternetCloseHandle&HConnection
&&&&End&If
&&&&'INTERNET_INVALID_PORT_NUMBER&默认分配的端口号
&&&&HConnection&=&InternetConnect(Hopen,&Trim(Rs_VER("ftpserver")),&INTERNET_INVALID_PORT_NUMBER,&sUser,&sPassword,&INTERNET_SERVICE_FTP,&INTERNET_FLAG_PASSIVE,&0)
&&&&If&HConnection&=&0&Then
&&&&&&&&MsgBox&"错误,不能完成升级",&vbOKOnly,&"错误"
&&&&&&&&End
&&&&End&If
'获得文件大小
Private&Function&GetFTPFileSize(sFile&As&String)&As&Long
&&&&Dim&szDir&As&String
&&&&Dim&hFind&As&Long
&&&&Dim&nLastError&As&Long
&&&&Dim&pData&As&WIN32_FIND_DATA
&&&&hFind&=&FtpFindFirstFile(HConnection,&sFile,&pData,&0,&0)
&&&&If&hFind&=&0&Then
&&&&&&&&MsgBox&"错误,不能完成升级",&vbOKOnly,&"错误"
&&&&&&&&End
&&&&&&&&Exit&Function
&&&&End&If
&&&&&&&&&&&
&&&&GetFTPFileSize&=&pData.nFileSizeLow
&&&&InternetCloseHandle&(hFind)
End&Function
'检查是否需要升级
Private&Function&VER()&As&Boolean
&&&&Dim&B()&As&Byte&'保存文件数组
&&&&Dim&LocalVer()&As&Byte&'本地版本
&&&&Dim&SlocalVer&As&String&'本地版本字符串形式
&&&'新建版本文件,默认版本为1。0
&&&&If&Dir(App.Path&+&"\ver.dat",&vbNormal)&=&""&Then
&&&&&&&Open&App.Path&+&"\Ver.dat"&For&Binary&As&#1
&&&&&&&&&&Put&#1,&,&"1.0"
&&&&&&&Close&#1
&&&&End&If
&&&&DB.Open&"Provider=SQLOLEDB.1;Persist&Security&Info=Initial&Catalog=uid=pwd=Data&Source=cxj"
&&&&Set&Rs_VER&=&DB.Execute("select&*&from&ver")
&&&&ReDim&LocalVer(0&To&FileLen(App.Path&+&"\ver.dat"))
&&&&Open&App.Path&+&"\ver.dat"&For&Binary&As&#1
&&&&&&&&&Get&#1,&1,&LocalVer()
&&&&Close&#1
&&&&For&i&=&0&To&UBound(LocalVer)&-&1
&&&&&&&&SlocalVer&=&SlocalVer&+&Chr(LocalVer(i))
&&&&If&CSng(SlocalVer)&&&CSng(Rs_VER("VER"))&Then
&&&&&&&&VER&=&True
&&&&&&&&VER&=&False
&&&&End&If
End&Function先判断文件总大小
一定时间时
用现在以下载文件大小跟他做对比就知道了http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=71841up“先判断文件总大小
一定时间时
用现在以下载文件大小跟他做对比就知道了“
————请问:怎么获得“现在下载的文件大小“,用什么函数(winInet.dll下的)可以获得?
本文标题:
本页链接:3348人阅读
控件名称:ProgressBar
控件类型:ASP.NET2.0服务器控件
开& 发& 者:
命名空间:AntarDev
类& 名& 称:ProgressBar
当前版本:0.1.1.3()
使用该控件,需要在Web.config文件中修改HTTP Module配置节,如下所示:
&httpModules&
&add name=&AntarDevResponseModule& type=&AntarDev.ProgressBarHttpModule&/&
&/httpModules&
同时在使用PageVisit工作层次时,需要启用Session。本控件使用XMLHTTP组件在浏览器端异步请求进度条实时数据,同时由特定的Http Module进行快速处理,不会因为用户的高负载操作而轻易失去响应,或者阻塞。可以根据不同的使用场景对进度条进行适当调整以完成实时进度显示任务。
public enum ProgressBarWorkLevel 用于声明控件的工作层次
Application
控件的实例用于应用程序级别,访问该进度条的用户共享一个进度条实例。
控件的实例用于页面访问级别,每个用户独享一个进度条的实例。
进度条是否自动开始
AutoHidden
进度条自动隐藏。当没有启动之前和完成进度之后自动隐藏,只有在走进度过程中显示。
进度条背景图像(优先于背景色)
BeginFromZero
进度条在浏览器端初始值为0,不受设计时或者呈现之前Value值设置影响
BorderColor
进度条边框颜色
BorderWidth
进度条边框宽度
进度条前景图像(优先于前景色)
FullAutoComplete
进度条走完进度后停止变动,并触发onComplete事件脚本
高度(进度条提示文本高度不计算在内)
进度条更新间隔,以毫秒为单位
onComplete
进度条停止变动后执行的JavaScript
onError[修订]
进度条出现错误后执行的JavaScript,服务器返回的数据格式错误,或者根据服务器返回的错误信息进行下一步处理。在脚本内部,可以通过data.StateCode和data.Message获取错误代码以及错误消息文本。
进度条上方显示的提示文本
提示文本对齐方式
HorizontalAlign.NotSet
提示文本的颜色
进度条工作层次
ProgressBarWorkLevel.PageVisit
更新进度条状态数据的静态方法
End(string ProgressBarId,ProgressBarWorkLevel WorkLevel)
清除进度数据。当确认该进度条实例或者实例的数据已经废弃的时候,使用该方法能够立即清除进度条实例在内存中存储的数据。如果不手工清除数据,进度条控件的守护线程将按照指定的间歇清理过期数据。在对进度条生存周期不是很了解的情况下,建议让进度条自动回收而不是使用End方法手动清理过期数据。
Register(string ProgressBarId, ProgressBarWorkLevel WorkLevel)
[新增]手工注册控件。如果要在控件第一次呈现之前设置进度条进度数据,就要手工注册控件。当控件已经呈现过,应用程序中存在指定的进度条的数据时,该方法不执行任何操作。
SetStatusAbso(string ProgressBarId, ProgressBarWorkLevel WorkLevel, int value)
设置进度条实时状态数据,使用绝对数值。需要控件ID和工作层次以及相对变动值value。
SetStatusAbso(string ProgressBarId, ProgressBarWorkLevel WorkLevel, int value, string text)
设置进度条实时状态数据,使用绝对数值。需要控件ID和工作层次以及相对变动值value和提示文本。
SetStatusRela(string ProgressBarId, ProgressBarWorkLevel WorkLevel)
设置进度条实时状态数据,使用相对变动值。需要控件ID和工作层次两个参数。此时进度条Value+=1。
SetStatusRela(string ProgressBarId, ProgressBarWorkLevel WorkLevel, int value)
设置进度条实时状态数据,使用相对变动值。需要控件ID和工作层次以及相对变动值value。此时进度条Value+=value。
SetStatusRela(string ProgressBarId,ProgressBarWorkLevel WorkLevel, int value, string text)
设置进度条实时状态数据,使用相对变动值。需要控件ID和工作层次以及相对变动值value和提示文本。
说明:本示例在进度条第一次呈现后,PostBack之后进行进度条实时数据的更新。
新建网站,在Web.config文件中修改HTTP Module配置节,如下所示:
&httpModules&
&add name=&AntarDevResponseModule& type=&AntarDev.ProgressBarHttpModule&/&
&/httpModules&
新建 Default.aspx页,在工具栏中右键单击-&&选择项&,浏览文件,选择ProgressBar.dll,这样就可以在工具栏中看到进度条控件了(如果已经将ProgressBar控件添加到工具栏,此步骤省略)。在Default.aspx中加入ProgressBar控件,ID设为ProgressBar1和一个HTML控件按钮,ID设为Button1。
双击Button1,编写以下JavaScript脚本:
function Button1_onclick() {
&&& document.getElementById(&form1&).submit();&& //手动提交表单
&&& ProgressBar1.Begin();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //开始进度条刷新
4.查看Default.aspx的代码页Default.aspx.cs。修改Page_Load
&&& protected void Page_Load(object sender, EventArgs e)
&&&&&&& if (IsPostBack)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //在PostBack之后开始更新进度条实时数据
&&&&&&&&&&& for (int i = 0; i & 10; i++)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& AntarDev.ProgressBar.SetStatusRela(&ProgressBar1&, AntarDev.ProgressBarWorkLevel.PageVisit);
&&&&&&&&&&&&&&& System.Threading.Thread.Sleep(1000);
&&&&&&&&&&& }
5.生成网站,在浏览器中浏览查看效果。
说明:本示例在进度条第一次呈现前的时刻进行进度条实时数据的更新。在这种情况下有两种方法对进度条数据进行调整,一是通过进度条的value属性的设置对进度条进度进行更新,二是通过控件提供的静态方法对进度条进行更新。使用第一种方法时,必须和进度条创建的页面在同一个页面以内,同时因为受Viewstate影响,如果在Viewstate恢复之前设置value属性,在Viewstate恢复时,将覆盖用户先前的设置。所以建议使用静态方法对进度条控件进行更新。使用静态方法,可以不在创建进度条的页面执行对进度条的更新。
新建网站,在Web.config文件中修改HTTP Module配置节,如下所示:
&httpModules&
&add name=&AntarDevResponseModule& type=&AntarDev.ProgressBarHttpModule&/&
&/httpModules&
新建 Default.aspx页,在工具栏中右键单击-&&选择项&,浏览文件,选择ProgressBar.dll,这样就可以在工具栏中看到进度条控件了(如果已经将ProgressBar控件添加到工具栏,此步骤省略)。在Default.aspx中加入ProgressBar控件,ID设为ProgressBar1和一个HTML控件按钮,ID设为Button1。
设置BeginFromZero属性为False。
双击Button1,编写以下JavaScript脚本:
function Button1_onclick() {
&&& document.getElementById(&form1&).submit();&& //手动提交表单
&&& ProgressBar1.Begin();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //开始进度条刷新
4.查看Default.aspx的代码页Default.aspx.cs。修改Page_Load
&&& protected void Page_Load(object sender, EventArgs e)
//清除旧数据
AntarDev.ProgressBar.End(&ProgressBar1&, AntarDev.ProgressBarWorkLevel.PageVisit);
//注册指定的进度条控件,这样才能在进度条呈现之前开始设置进度条进度数据。
AntarDev.ProgressBar.Register(&ProgressBar1&, AntarDev.ProgressBarWorkLevel.PageVisit);
//使用SetStatusRela方法设置进度条相对增加量
AntarDev.ProgressBar.SetStatusRela(&ProgressBar1&, AntarDev.ProgressBarWorkLevel.PageVisit, 5);
5.生成网站,在浏览器中浏览查看效果。
控件下载地址:
版本号:0.1.1.3
更&&& 新:1.对onError属性的使用进行了修正,通过onError处理数据获取错误而不是通信错误。可以使用data.StateCode和data.Message获取错误代码以及错误消息文本;
2.增加了Register方法,可以在控件第一次呈现之前开始更新进度;
3.更新控件使用示例;
日&&& 期:版本号:0.1.1.1更&&& 新:修正了0.1.1.0中的设计时图片呈现问题
关于Web ProgressBar参考过的文章:
[1]Wilcob. Building an 'AJAX' ProgressBar in Atlas http://www.developerfusion.co.uk/show/5340/
说明:基于Atlas的,大体看了一下,帮助不是很大。
[2] Elvin Cheng. Real-time web-styled ProgressBar control /useritems/WebProgressBar.asp
&&&&&& 说明:基于Script Callbacks Framework,从这篇文章中吸收了onComplete和onError事件。
特此声明,并致谢。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:176121次
积分:3659
积分:3659
排名:第3155名
原创:181篇
转载:16篇
评论:54条
(1)(2)(1)(1)(2)(2)(3)(2)(3)(2)(7)(11)(11)(15)(36)(45)(31)(14)(1)(5)(2)效果图:package com.qiao.circleprogress_import android.app.Aimport android.os.Bimport android.view.Mimport android.view.MenuI/** * 主页面 * @author 有点凉了 * */public class MainActivity extends Activity { private RoundProgressBar progressBar1; private int progress = 0; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar1 = (RoundProgressBar) findViewById(R.id.progressBar1);
new Thread(new Runnable() {
public void run() {
while (progress&=59) {
progress+=1;
progressBar1.setProgress(progress);
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}).start(); } @Override public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
} @Override public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.&自定义页面package com.qiao.circleprogress_import android.content.Cimport android.content.res.TypedAimport android.graphics.Cimport android.graphics.Cimport android.graphics.Pimport android.graphics.RectF;import android.graphics.Timport android.util.AttributeSimport android.util.Limport android.view.V/** * 仿iphone带进度的进度条,线程安全的View,可直接在线程中更新进度 * @author 有点凉了 * */public class RoundProgressBar extends View { /**
* 画笔对象的引用
*/ private P
* 圆环的颜色
*/ private int roundC
* 圆环进度的颜色
*/ private int roundProgressC
* 中间进度百分比的字符串的颜色
*/ private int textC
* 中间进度百分比的字符串的字体
*/ private float textS
* 圆环的宽度
*/ private float roundW
* 最大进度
* 当前进度
* 是否显示中间的进度
*/ private boolean textIsD
* 进度的风格,实心或者空心
public static final int STROKE = 0; public static final int FILL = 1;
public RoundProgressBar(Context context) {
this(context, null); } public RoundProgressBar(Context context, AttributeSet attrs) {
this(context, attrs, 0); }
public RoundProgressBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
paint = new Paint();
TypedArray mTypedArray = context.obtainStyledAttributes(attrs,
R.styleable.RoundProgressBar);
//获取自定义属性和默认值
roundColor = mTypedArray.getColor(R.styleable.RoundProgressBar_roundColor, Color.WHITE);
roundProgressColor = mTypedArray.getColor(R.styleable.RoundProgressBar_roundProgressColor, Color.BLUE);
textColor = mTypedArray.getColor(R.styleable.RoundProgressBar_textColor, Color.BLACK);
textSize = mTypedArray.getDimension(R.styleable.RoundProgressBar_textSize, 15);
roundWidth = mTypedArray.getDimension(R.styleable.RoundProgressBar_roundWidth, 5);
max = mTypedArray.getInteger(R.styleable.RoundProgressBar_max, 100);
textIsDisplayable = mTypedArray.getBoolean(R.styleable.RoundProgressBar_textIsDisplayable, true);
style = mTypedArray.getInt(R.styleable.RoundProgressBar_style, 0);
mTypedArray.recycle(); }
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
* 画最外层的大圆环
int centre = getWidth()/2; //获取圆心的x坐标
int radius = (int) (centre - roundWidth/2); //圆环的半径
paint.setColor(roundColor); //设置圆环的颜色
paint.setStyle(Paint.Style.STROKE); //设置空心
paint.setStrokeWidth(roundWidth); //设置圆环的宽度
paint.setAntiAlias(true); //消除锯齿
canvas.drawCircle(centre, centre, radius, paint); //画出圆环
Log.e("log", centre + "");
* 画进度百分比
paint.setStrokeWidth(0);
paint.setColor(textColor);
paint.setTextSize(textSize);
paint.setTypeface(Typeface.DEFAULT_BOLD); //设置字体
int percent = (int)(((float)progress / (float)max) * 100); //中间的进度百分比,先转换成float在进行除法运算,不然都为0
float textWidth = paint.measureText(percent + "%");
//测量字体宽度,我们需要根据字体的宽度设置在圆环中间
if(textIsDisplayable && percent != 0 && style == STROKE){
canvas.drawText(percent + "%", centre - textWidth / 2, centre + textSize/2, paint); //画出进度百分比
* 画圆弧 ,画圆环的进度
//设置进度是实心还是空心
paint.setStrokeWidth(roundWidth); //设置圆环的宽度
paint.setColor(roundProgressColor); //设置进度的颜色
RectF oval = new RectF(centre - radius, centre - radius, centre
+ radius, centre + radius); //用于定义的圆弧的形状和大小的界限
switch (style) {
case STROKE:{
paint.setStyle(Paint.Style.STROKE);
canvas.drawArc(oval, 0, 360 * progress / max, false, paint); //根据进度画圆弧
case FILL:{
paint.setStyle(Paint.Style.FILL_AND_STROKE);
if(progress !=0)
canvas.drawArc(oval, 0, 360 * progress / max, true, paint); //根据进度画圆弧
public synchronized int getMax() {
* 设置进度的最大值
* @param max
*/ public synchronized void setMax(int max) {
if(max & 0){
throw new IllegalArgumentException("max not less than 0");
this.max = } /**
* 获取进度.需要同步
*/ public synchronized int getProgress() {
* 设置进度,此为线程安全控件,由于考虑多线的问题,需要同步
* 刷新界面调用postInvalidate()能在非UI线程刷新
* @param progress
*/ public synchronized void setProgress(int progress) {
if(progress & 0){
throw new IllegalArgumentException("progress not less than 0");
if(progress & max){
progress =
if(progress &= max){
this.progress =
postInvalidate();
public int getCricleColor() {
return roundC } public void setCricleColor(int cricleColor) {
this.roundColor = cricleC } public int getCricleProgressColor() {
return roundProgressC } public void setCricleProgressColor(int cricleProgressColor) {
this.roundProgressColor = cricleProgressC } public int getTextColor() {
return textC } public void setTextColor(int textColor) {
this.textColor = textC } public float getTextSize() {
return textS } public void setTextSize(float textSize) {
this.textSize = textS } public float getRoundWidth() {
return roundW } public void setRoundWidth(float roundWidth) {
this.roundWidth = roundW }}&布局:&LinearLayout &属性&?&
[操作系统]自定义环形进度条_郑少群个人自定义的环形进度条,源码和详细的注释,可以直接当做一个控件使用。... 自定义的环形进度条,源码和详细的注释,可以直接当做一个控件使用。资源积分:2分 下载次数:...自定义环形进度条 显示百分比 - 下载频道 - CSDN自定义环形进度条 显示百分比 u上传 自定义环形进度条 显示百分比资源积分:2分 下载次数:13 资源类型:代码类 资源大小:4KB 资源得分: (3位...三种方式实现自定义圆形页面加载中效果的进度条 - 意随风的日志 -...三种方式实现自定义圆形页面加载中效果的进度条,意随风的易博客,让文字 亦随风,子曰:好人啊~~【Android进度条】三种方式实现自定义圆形进度条ProgressBar_安卓...【Android进度条】三种方式实现自定义圆形进度条ProgressBar( 11:59:49) 转载▼标签: it 一、通过动画实现 定义res/anim/loading.xml如下: [html] ...自定义漂亮的圆形进度条 - HeyNine的博客 - 博客频道 - CSDN自定义圆形进度条ProgressBar的三种方式 - 柳志超博客进度条默认是不确定(indeterminate=true)Android进度条 Android进度条有4种风格可以使用。 默认值是progressBarStyle。 设置成progressBarStyleSmall后,图标变小。 ...进度条(Progress) - 移动开发 - Android, ios 源码下载 - Android...实现自定义圆形页面加载中效果的进度条实现自定义圆形页面加载中效果的进度条导读:一、通过动画实现定义res/anim/loading.xml如下:源码打印? xmlns:android=&【Android进度条】三种方式实现自定义圆形进度条ProgressBar_文档...文库首页 && 开发 && Android && 【Android进度条】三种方式实现自定义圆形进度条ProgressBar预览 收藏 举报 【Android进度条】三种方式实现自定义圆形进度条Prog...自定义Android圆形进度条:ProgressWheel - 百科教程_经验分享...android圆形进度条ProgressBar颜色设置 - 移动编程 - 学习交流 - ... 三种方式实现自定义圆形页面加载中效果的进度条: 来自:,如果容器的背景...三种方式实现自定义圆形页面加载中效果的进度条-Android技术讨论...9条回复&-&发帖时间:&日环形百分比进度条图片素材(psd分层)环形百分比进度条图片素材,环形百分比进度条,环形,百分比,进度条 ::本月下载最多:: 2013喜庆海报图片素… 春节联欢晚会图片素… 盛惠盈新春蛇年图片… 五一欢乐购...ios实现圆形/圆饼状样式的进度加载器/进度条(Progress) - 进度条 ...3条回复&-&发帖时间:&日Android进度条(ProgressBar)应用实例 - Android - 拼吾爱程序人生关于怎么制作环形进度条,用MFC实现,不要c#的搜索推荐 -MFC-TryCatch自绘完全做得了。给你看个例子 look 但要环形的进度条,不要对话框的背景,也就是对话框要和进度条的形状一样 用MFC干嘛,那你得麻烦死了,而且出来的效果很差...C#实现动态托盘图标,环形,进度条,箭头形 - C#源码世界 方框下载:类似像素块的叠加,由上到下,由多到少,可以作为下载进度使用。 环形进度条:这个比较常见了,我这里就是把一个动画效果拆开了。 环形箭头:这个可以用...经典环形进度条载入动画C#控件 展示 frmMain.Designer.cs源代码返回下载经典环形进度条载入动画C#控件: 单独下载frmMain.Designer.cs源代码 - 下载整个经典环形进度条载入动画C#控件源代码 - 类型:.cs文件 ...ProgressRoller 环形进度条控件,可用于界面美化,直接拖放使用 ...详细说明:环形进度条控件,可用于界面美化,直接拖放使用-Circular progress bar ...·C#问卷调查系统,支持自定义问题添·随机图片验证源码,C#语言,可直接·一个C#...自定义实现圆形播放进度条(android,飞一般的感觉)_文档下载_IT168...文库首页 && 开发 && Android && 自定义实现圆形播放进度条(android,飞一般的感觉)预览 收藏 举报 自定义实现圆形播放进度条(android,飞一般的感觉)...Android 环形进度条_那里的颜色最好_新浪博客 Android 环形进度条 ( 21:41:28) 转载▼ 标签: it 分类: Android XML中代码: &ProgressBar android:id=&@+id/ProgressBar02& style=&?...Android 自定义View实现圆形进度条-Android源码下载-eoe 移动开发...69条回复&-&发帖时间:&日三种方式实现自定义圆形页面加载中效果的进度条-Android新手入门-...17条回复&-&发帖时间:&日Android开发中,关于对话框中的圆形进度条和Layout的问题_百度知道1个回答 - 提问时间: 日问题1:对话框中圆形进度条的问题。程序很简单,只是在弹出的自定义的对话框中显示一个圆形进度条。程序在第一次弹出对话框时进度条显示正常,进度条转动,可是第二...环形进度条设计-界面设计-交互设计 - ...@旋转以后采集到APP UI(... 环形进度条设计-界面设计-交互设计 - 优秀作品欣赏 - 站酷(ZCOOL)... APP UI 旋转以后 关注画板 同采自 zcool该采集也在以下画板 加载...如何写一个类似圆形进度条?- CocoaChina问答中心 - CocoaChina ... 我需要写一个,类似这样的圆形进度条,可是没思路,请大大们提个意见,如果有... 参看code4app中大把的自定义prograss,肯定有你需要的Android开发系列(二十七):使用ProgressDialog创建进度对话框 - ... 在接下来的例子中,我们会看到三种:环形进度条、显示进度的长条形进度条...Android自定义对话框(Dialog)位置,大小Android对话框(Dialog)大全之建立你...mojocorp-QProgressIndicator ,基于qt实现的圆形进度条,效果不错...详细说明:QProgressIndicator,基于qt实现的圆形进度条,效果不错。-QProgress... [qt--processbar.tar.gz] - qt 特色进度条,实现自定义进度条,从frame 级别...蛮好看的---Android自定义实现圆形播放进度条 - Android实例教程 ...4条回复&-&发帖时间:&日各种样式的ProgressBar 进度条自定义的圆形进度条加载 - Android 代码下载 - Android开发论坛 -...9条回复&-&发帖时间:&日自定义圆形播放进度条(android) - 下载频道 - CSDNandroid自定义的圆形播放进度条不是系统的那种不停转动的圆形播放进度条样式哦... android自定义的圆形播放进度条不是系统的那种不停转动的圆形播放进度条样式哦...CircleProgressDemo android 自定义圆形进度条,直接可用,学习开发...详细说明:android 自定义圆形进度条,直接可用,学习开发都十分的好!-android custom circular progress bar, directly available, learning development are very good!...}

我要回帖

更多关于 好友恢复系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信