libcurl是一个很强大的开源网络处理库,支持包括HTTP、HTTPS、FTP……一系列网络协议。用它来进行HTTP的get\post 或者下载文件更是小菜一碟,chrome内核都用到了它,本文主要讲解一个使用curl下载文件的小例。
首先是去下载curl的最新源代码,然后编译成动态库或者静态库;然后把头文件和库文件拿出来加入到我们自己的工程中,引用声明:
#include "curl.h"
#ifdef _DEBUG
#pragma comment(lib, "../Debug/libcurld")
#else
#pragma comment(lib, "../Release/libcurl")
#endif
特意在原有代码上加了一些注释,希望可以更好理解,上代码:
<pre name="code" class="cpp">// UseLibCurl.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
#include <CommCtrl.h>
#include "resource.h"
#include "curl.h"
#ifdef _DEBUG
#pragma comment(lib, "../Debug/libcurld")
#else
#pragma comment(lib, "../Release/libcurl")
#endif
//这个用来保存对话框的窗口句柄,因为后面要向这个窗口发消息,必须知道其窗口句柄
HWND g_hDlgWnd = NULL;
//提供给CURL下载进度回调的函数,用于保存下载的数据到文件
static size_t DownloadCallback(void* pBuffer, size_t nSize, size_t nMemByte, void* pParam);
//提供给CURL下载进度回调的函数,用于计算下载进度通知界面
static int ProgressCallback(vo