CBindStatusCallback::StartAsyncDownload

异步下载数据从指定的URL的开头。

HRESULT StartAsyncDownload(
   T* pT,
   ATL_PDATAAVAILABLE pFunc,
   BSTR bstrURL,
   IUnknown* pUnkContainer = NULL, 
   BOOL bRelative = FALSE 
);

参数

  • pT
    [out]一个指向对象的请求的指针已发生异步数据传输。 CBindStatusCallback 对象该对象类templatized。

  • pFunc
    [out]一个指向接收读取数据的函数的指针。 该函数是类型 T您的对象类的成员。 为语法和示例 Remarks 参见。

  • bstrURL
    [in]获取数据的URL。 可以是任何有效的URL或文件名。 不能为 NULL。 例如:

    CComBSTR mybstr =_T("http://somesite/data.htm")

  • pUnkContainer
    [in]容器的 IUnknownNULL 默认情况下。

  • bRelative
    [in]一个URL是否的标志的相对路径或绝对路径。 FALSE 默认情况下,这意味着URL是绝对的。

返回值

一个标准 HRESULT 值。

备注

在数据可用后它发送到对象。OnDataAvailableOnDataAvailable 读取数据并调用函数指向由 pFunc (例如,存储数据或打印到屏幕)。

函数指向由 pFunc 是您的对象类的成员并具有以下语法:

void Function_Name(

CBindStatusCallback<T>* pbsc,

BYTE* pBytes,

DWORD dwSize

);

在下面的示例中(来自 ASYNC 示例),函数 OnData 编写收到的数据到文本框中。

示例

void OnData(CBindStatusCallback<CATLAsync>* , BYTE* pBytes, DWORD /*cBytes*/)
{
   ATLTRACE(_T("OnData called\n"));

   m_bstrText.Append((LPCSTR)pBytes);
   if (::IsWindow(m_EditCtrl.m_hWnd))
   {
      USES_CONVERSION;
      _ATLTRY {
         ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0, 
            (LPARAM)(LPCTSTR)COLE2CT((BSTR)m_bstrText));
      }
      _ATLCATCH( e ) {
         e; // unused
         // COLE2CT threw an exception!
         ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0, 
            (LPARAM)_T("Could not allocate enough memory!!!"));
      }
   }
}

要求

Header: atlctl.h

请参见

参考

CBindStatusCallback选件类

CBindStatusCallback::OnDataAvailable