http下载类(直接传入ProcessBarCtrl指针,用来显示进度)

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

使用本类,请先取得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);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航