class DownloadDelegate: public IBindStatusCallback
{
public:
HWND m_hMainWnd;
DownloadDelegate(HWND hWnd) : m_hMainWnd(hWnd) {}
STDMETHOD(OnProgress)(ULONG ulProgress, ULONG ulProgressMax,
ULONG ulStatusCode, LPCWSTR szStatusText)
{
if (ulProgressMax == 0) ulProgressMax = 1;
_stprintf(szTipInfo, _T("正在下载文件...%d%%"), ulProgress * 100 / ulProgressMax);
SendMessage(m_hMainWnd, SHOW_SUBTITLE_OWN_TYPE_MSG, (WPARAM)-2, (LPARAM)szTipInfo);
return S_OK;
}
STDMETHOD(OnStartBinding)(
/* [in] */ DWORD dwReserved,
/* [in] */ IBinding __RPC_FAR *pib)
{ return E_NOTIMPL; }
STDMETHOD(GetPriority)(
/* [out] */ LONG __RPC_FAR *pnPriority)
{ return E_NOTIMPL; }
STDMETHOD(OnLowResource)(
/* [in] */ DWORD reserved)
{ return E_NOTIMPL; }
// STDMETHOD(OnProgress)(
// /* [in] */ ULONG ulProgress,
// /* [in] */ ULONG ulProgressMax,
// /* [in] */ ULONG ulStatusCode,
// /* [in] */ LPCWSTR wszStatusText);
STDMETHOD(OnStopBinding)(
/* [in] */ HRESULT hresult,
/* [unique][in] */ LPCWSTR szError)
{ return E_NOTIMPL; }
STDMETHOD(GetBindInfo)(
/* [out] */ DWORD __RPC_FAR *grfBINDF,
/* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo)
{ return E_NOTIMPL; }
STDMETHOD(OnDataAvailable)(
/* [in] */ DWORD grfBSCF,
/* [in] */ DWORD dwSize,
/* [in] */ FORMATETC __RPC_FAR *pformatetc,
/* [in] */ STGMEDIUM __RPC_FAR *pstgmed)
{ return E_NOTIMPL; }
STDMETHOD(OnObjectAvailable)(
/* [in] */ REFIID riid,
/* [iid_is][in] */ IUnknown __RPC_FAR *punk)
{ return E_NOTIMPL; }
// IUnknown methods. Note that IE never calls any of these methods, since
// the caller owns the IBindStatusCallback interface, so the methods all
// return zero/E_NOTIMPL.
STDMETHOD_(ULONG,AddRef)()
{ return 0; }
STDMETHOD_(ULONG,Release)()
{ return 0; }
STDMETHOD(QueryInterface)(
/* [in] */ REFIID riid,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
{ return E_NOTIMPL; }
};
DownloadDelegate DLStatus(m_hMainWnd);
if (S_OK != URLDownloadToFile(NULL, str_temp_url.c_str(), strProfileFolder, 0, &DLStatus))
return FALSE;
(shuizhiyun) |