作者:magictong
日期:2018/04/09
资源下载
https://download.csdn.net/download/magictong/10370195
主要目的
1、下载文件到内存。
2、下载分片Range文件(譬如下载某个资源文件的第100字节到第150字节的内容)。
3、不需要回调线程是UI线程(有消息循环)。
适用场景
1、小文件全量下载(注:暂未支持断点续传)。
2、分片文件下载(注:下载某个文件中的一段内容)。
3、支持https协议(仅支持只需要验证服务器端的情况)。
适用系统
受限于WinHttp的支持,本库需要Windows XP SP1以上或者Windows 2000 SP3以上才能使用。
头文件介绍
1、QMTINYDL::IQMTinyDLSink接口
使用类需要从QMTINYDL::IQMTinyDLSink接口进行继承,实现它的三个虚函数(OnTinyDLComplete,OnTinyDLProgress,OnTinyDLError),OnTinyDLComplete必须实现,其它两个可以按需要实现,这个接口主要用于下载完成,下载失败,下载出错,下载进度的回调,使用者只有通过此接口的回调感知下载库的工作进度。回调函数参数说明参考下面的注释。
//-------------------------------------------------------------------------
// 类名 : IQMTinyDLSink
// 功能 : QMTinyDL下载回调接口
// 附注 :使用IQMTinyDLMgr接口进行下载的类需要继承本接口
// -------------------------------------------------------------------------
class IQMTinyDLSink
{
public:
virtual ~IQMTinyDLSink() {}
//-------------------------------------------------------------------------
// 函数 :OnTinyDLComplete
// 功能 :下载结束回调(dwErr==0表示下载成功)
// 返回值 : virtualvoid
// 参数 : LONGlTaskID任务id
// 参数 : void*pBuffer如果是下载到内存需求,则指向该内存,如果是下载到文件,则指向(wchar*)文件路径
// 参数 : DWORDdwSize下载总长度
// 参数 : DWORDdwErr错误码
// 参数 : PVOIDpContext上下文参数
// 附注 :必须实现
//-------------------------------------------------------------------------
virtual void OnTinyDLComplete(LONG lTaskID, void* pBuffer, DWORD dwSize,DWORD dwErr, PVOID pContext) = 0;
//-------------------------------------------------------------------------
// 函数 :OnTinyDLProgress
// 功能 :下载进度回调
// 返回值 : virtualvoid
// 参数 : LONGlTaskID任务id
// 参数 : DWORDdwLen当前下载长度
// 参数 : DWORDdwTotalLen需要下载总长度
// 参数 : PVOIDpContext上下文参数
// 附注 :可选实现
//-------------------------------------------------------------------------
virtual void OnTinyDLProgress(LONG lTaskID, DWORD dwLen, DWORDdwTotalLen, PVOID pContext) {}
//-------------------------------------------------------------------------
// 函数 :OnTinyDLError
// 功能 :