织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>VC(MFC)>

使用URLDownloadToFile下载文件,有进度

jackyhwei 发布于 2011-08-08 09:10 点击:次 
使用URLDownloadToFile下载文件的源代码,有进度
TAG:

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)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201108/14808.html]
本文出处:blog.csdn.net/shuizhiyun 作者:shuizhiyun
顶一下
(1)
33.3%
踩一下
(2)
66.7%
------分隔线----------------------------
相关文章
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容