VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
http下载类(直接传入ProcessBarCtrl指针,用来显示进度)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

专用于下载到本地磁盘的同时显示进度条

使用本类,请先取得CHttpClient下载类


// HttpClientProcess.h: 专用于下载到本地磁盘的同时显示进度条
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_HTTPCLIENTPROCESS_H__)
#define AFX_HTTPCLIENTPROCESS_H__


#include "HttpClient.h"

class CHttpClientProcess : public CHttpClient 
{
public:
 CHttpClientProcess();
 virtual ~CHttpClientProcess();

 bool Download(char*url,char*fname,void* p);  //p为进度条控件的指针
 virtual void OnDataRecived(char* data,long datasize,int first = false );
private:
 CProgressCtrl* m_lpProcessBar;
};

#endif


//------------------------------------------------------------------
// HttpClientProcess.cpp
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "HttpClientProcess.h"


CHttpClientProcess::CHttpClientProcess()
{
 m_lpProcessBar=NULL;
}

CHttpClientProcess::~CHttpClientProcess()
{

}
void CHttpClientProcess::OnDataRecived(char* data,long datasize,int first)
{
 CHttpClient::OnDataRecived(data,datasize,first);
 if(!m_lpProcessBar)return;

 if(first)
 {
  char buf[128];
  memset(buf,0,128);
  GetHeader("Content-Length",buf);
  m_lpProcessBar->SetRange32(0,atol(buf));
  m_lpProcessBar->SetPos(datasize);
 }
 else
 {
  m_lpProcessBar->SetPos(m_lpProcessBar->GetPos()+datasize);
 }
}

bool CHttpClientProcess::Download(char *url, char *fname, void *p)
{
 m_lpProcessBar=(CProgressCtrl*)p;
  return CHttpClient::Download(url,fname);
}




相关文章

相关软件