c语言实现接口,用C语言实现IBindStatusCallback接口

/***********************************

Author : Demon

Website : http://demon.tw

E-mail : 380401911@qq.com

***********************************/

#include

#include

#pragmacomment (lib,"urlmon.lib")

HRESULT ( STDMETHODCALLTYPE QueryInterface )(

IBindStatusCallback * This,

/* [in] */REFIID riid,

/* [iid_is][out] */void**ppvObject)

{

returnE_NOTIMPL;

}

ULONG ( STDMETHODCALLTYPE AddRef )(

IBindStatusCallback * This)

{

returnE_NOTIMPL;

}

ULONG ( STDMETHODCALLTYPE Release )(

IBindStatusCallback * This)

{

returnE_NOTIMPL;

}

HRESULT ( STDMETHODCALLTYPE OnStartBinding )(

IBindStatusCallback * This,

/* [in] */DWORD dwReserved,

/* [in] */IBinding *pib)

{

returnE_NOTIMPL;

}

HRESULT ( STDMETHODCALLTYPE GetPriority )(

IBindStatusCallback * This,

/* [out] */LONG *pnPriority)

{

returnE_NOTIMPL;

}

HRESULT ( STDMETHODCALLTYPE OnLowResource )(

IBindStatusCallback * This,

/* [in] */DWORD reserved)

{

returnE_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);

}

returnS_OK;

}

HRESULT ( STDMETHODCALLTYPE OnStopBinding )(

IBindStatusCallback * This,

/* [in] */HRESULT hresult,

/* [unique][in] */LPCWSTR szError)

{

returnE_NOTIMPL;

}

HRESULT ( STDMETHODCALLTYPE GetBindInfo )(

IBindStatusCallback * This,

/* [out] */DWORD *grfBINDF,

/* [unique][out][in] */BINDINFO *pbindinfo)

{

returnE_NOTIMPL;

}

HRESULT ( STDMETHODCALLTYPE OnDataAvailable )(

IBindStatusCallback * This,

/* [in] */DWORD grfBSCF,

/* [in] */DWORD dwSize,

/* [in] */FORMATETC *pformatetc,

/* [in] */STGMEDIUM *pstgmed)

{

returnE_NOTIMPL;

}

HRESULT ( STDMETHODCALLTYPE OnObjectAvailable )(

IBindStatusCallback * This,

/* [in] */REFIID riid,

/* [iid_is][in] */IUnknown *punk)

{

returnE_NOTIMPL;

}

static constIBindStatusCallbackVtbl IBindStatusCallback_Vtbl =

{

QueryInterface,

AddRef,

Release,

OnStartBinding,

GetPriority,

OnLowResource,

OnProgress,

OnStopBinding,

GetBindInfo,

OnDataAvailable,

OnObjectAvailable

};

intmain(intargc,char*argv[])

{

HRESULT hr;

IBindStatusCallback MyCallback;

MyCallback.lpVtbl = (IBindStatusCallbackVtbl *)&IBindStatusCallback_Vtbl;

hr = URLDownloadToFile(NULL,

"http://demon.tw/download/VbsEdit.zip","VbsEdit.zip",0, &MyCallback);

if(FAILED(hr))

{

printf("Error: %X\n", hr);

}

return0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值