又是我,有没有人用过URLDownloadToFile来控制下载进度条?

Ronagon 2008-07-24 10:46:26
这个问题我是在搜索了各大论坛,看到了无数版本的代码。实际上都是要我解决好URLDownloadToFile中的第五个参数,一个IBindStatusCallback类型实例的指针。我首先写了一个类,从IBindStatusCallback继承,然后重载了其中的OnProgress函数。按照msdn上的说法,urldownloadtofile函数在收到数据包的时候会调用OnProgress函数。(需要说明的是,我的窗口是一个主线程。下载是在另外一个线程中进行的)我单步执行,发现程序可以进入OnProgress函数中去,但是进去之后的函数似乎没有任何反应——比如我再OnProgress中写一个ShowMessage(“调试”),也不会弹出对话框。这是为什么呢?如何做到正确的让URLDownloadTofile跟进度条结合在一起?
把我重新写的类贴出来给大家看看。

class CBindCBHttpCallback : public IBindStatusCallback
{
public:

CBindCBHttpCallback(){};
~CBindCBHttpCallback(){};


STDMETHOD(OnStartBinding)(
DWORD dwReserved,
IBinding __RPC_FAR *pib)
{ return E_NOTIMPL; }

STDMETHOD(GetPriority)(
LONG __RPC_FAR *pnPriority)
{ return E_NOTIMPL; }

STDMETHOD(OnLowResource)(
DWORD reserved)
{ return E_NOTIMPL; }

STDMETHOD(OnProgress)(
ULONG ulProgress,
ULONG ulProgressMax,
ULONG ulStatusCode,
LPCWSTR szStatusText)
{
return S_OK;
}

STDMETHOD(OnStopBinding)(
HRESULT hresult,
LPCWSTR szError)
{ return E_NOTIMPL; }

STDMETHOD(GetBindInfo)(
DWORD __RPC_FAR *grfBINDF,
BINDINFO __RPC_FAR *pbindinfo)
{ return E_NOTIMPL; }

STDMETHOD(OnDataAvailable)(
DWORD grfBSCF,
DWORD dwSize,
FORMATETC __RPC_FAR *pformatetc,
STGMEDIUM __RPC_FAR *pstgmed)
{ return E_NOTIMPL; }

STDMETHOD(OnObjectAvailable)(
REFIID riid,
IUnknown __RPC_FAR *punk)
{ return E_NOTIMPL; }

STDMETHOD_(ULONG,AddRef)()
{ return 0; }

STDMETHOD_(ULONG,Release)()
{ return 0; }

STDMETHOD(QueryInterface)(
REFIID riid,
void __RPC_FAR *__RPC_FAR *ppvObject)
{ return E_NOTIMPL; }

};


请高人指点。
...全文
181 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ronagon 2008-07-25
  • 打赏
  • 举报
回复
好像不行。
Ronagon 2008-07-25
  • 打赏
  • 举报
回复
你又来接分啊。欢迎欢迎。我去试试看。
loveshell 2008-07-24
  • 打赏
  • 举报
回复
半夜啦!没搞过这个,不过线程里面ShowMessage是显示不错来的。可以用Application->messagebox
Ronagon 2008-07-24
  • 打赏
  • 举报
回复
每次都是我的问题没有人回。表达的不清楚吗?

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧