C语言实现 IBindStatusCallBack接口, 进度下载

#include <stdio.h>
#include <urlmon.h>
#pragma comment (lib, "urlmon.lib")

HRESULT ( STDMETHODCALLTYPE QueryInterface )(
IBindStatusCallback This,
/
[in] / REFIID riid,
/ [iid_is][out] */ void **ppvObject)
{
return E_NOTIMPL;
}

ULONG ( STDMETHODCALLTYPE AddRef )(
IBindStatusCallback * This)
{
return E_NOTIMPL;
}

ULONG ( STDMETHODCALLTYPE Release )(
IBindStatusCallback * This)
{
return E_NOTIMPL;
}

HRESULT ( STDMETHODCALLTYPE OnStartBinding )(
IBindStatusCallback This,
/
[in] / DWORD dwReserved,
/ [in] */ IBinding *pib)
{
return E_NOTIMPL;
}

HRESULT ( STDMETHODCALLTYPE GetPriority )(
IBindStatusCallback This,
/
[out] */ LONG *pnPriority)
{
return E_NOTIMPL;
}

HRESULT ( STDMETHODCALLTYPE OnLowResource )(
IBindStatusCallback This,
/
[in] */ DWORD reserved)
{
return E_NOTIMPL;
}

HRESULT ( STDMETHODCALLTYPE OnProgress )(
IBindStatusCallback This,
/
[in] / ULONG ulProgress,
/ [in] / ULONG ulProgressMax,
/ [in] / ULONG ulStatusCode,
/ [in] */ LPCWSTR szStatusText)
{
if (ulProgress > 0)
{
printf(“Downloaded %d of %d bytes\n”,
ulProgress, ulProgressMax);
fflush(stdout);
}
return S_OK;
}

HRESULT ( STDMETHODCALLTYPE OnStopBinding )(
IBindStatusCallback This,
/
[in] / HRESULT hresult,
/ [unique][in] */ LPCWSTR szError)
{
return E_NOTIMPL;
}

HRESULT ( STDMETHODCALLTYPE GetBindInfo )(
IBindStatusCallback This,
/
[out] / DWORD grfBINDF,
/
[unique][out][in] / BINDINFO *pbindinfo)
{
return E_NOTIMPL;
}

HRESULT ( STDMETHODCALLTYPE OnDataAvailable )(
IBindStatusCallback This,
/
[in] / DWORD grfBSCF,
/ [in] / DWORD dwSize,
/ [in] / FORMATETC pformatetc,
/
[in] / STGMEDIUM *pstgmed)
{
return E_NOTIMPL;
}

HRESULT ( STDMETHODCALLTYPE OnObjectAvailable )(
IBindStatusCallback This,
/
[in] / REFIID riid,
/ [iid_is][in] */ IUnknown *punk)
{
return E_NOTIMPL;
}

static const IBindStatusCallbackVtbl IBindStatusCallback_Vtbl =
{
QueryInterface,
AddRef,
Release,
OnStartBinding,
GetPriority,
OnLowResource,
OnProgress,
OnStopBinding,
GetBindInfo,
OnDataAvailable,
OnObjectAvailable
};

int main(int argc, char *argv[])
{
HRESULT hr;
IBindStatusCallback MyCallback;
MyCallback.lpVtbl = (IBindStatusCallbackVtbl *)&IBindStatusCallback_Vtbl;
hr = URLDownloadToFile(NULL, “http://www.baidu.com/index.php”, “index.php”, 0, &MyCallback);
if (hr != S_OK)
{
printf(“Error: %X\n”, hr);
}
return 0;
}

女孩不哭(QQ:191035066)@2012-05-02 16:05:03 @ http://www.cnblogs.com/nbsofer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值