Partilhar via


CBindStatusCallback::StartAsyncDownload

Começa a fazer download de dados assíncrona da URL especificada.

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

Parâmetros

  • pT
    [in] Um ponteiro para o objeto solicitando a transferência de dados assíncrono.The CBindStatusCallback objeto é templatized na classe do objeto.

  • pFunc
    [in] Um ponteiro para a função que recebe os dados que está sendo lidos.A função é um membro da classe do seu objeto do tipo T. See Comentários para obter a sintaxe e um exemplo.

  • bstrURL
    [in] A URL para obter dados.Pode ser qualquer nome válido de URL ou arquivo.Não pode ser NULO.Por exemplo:

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

  • pUnkContainer
    [in] The IUnknown do contêiner.NULO por padrão.

  • bRelative
    [in] Um sinalizar que indica se a URL é relativo ou absoluto.FALSE por padrão, o que significa que a URL é absoluto.

Valor de retorno

Um do padrão HRESULT valores.

Comentários

Sempre que há dados disponível são enviados para o objeto por meio de OnDataAvailable. OnDataAvailable lê os dados e chama a função apontada por pFunc (por exemplo, para armazenar os dados ou imprimi-lo na tela).

A função apontada por pFunc é um membro da classe do seu objeto e tem a seguinte sintaxe:

void Function_Name(

CBindStatusCallback<T>* pbsc,

BYTE* pBytes,

DWORD dwSize

);

No exemplo a seguir (extraído o ASSÍNCRONO amostra de ), a função OnData grava os dados recebidos em uma caixa de texto.

Exemplo

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!!!"));
      }
   }
}

Requisitos

Cabeçalho: atlctl.h

Consulte também

Referência

Classe CBindStatusCallback

CBindStatusCallback::OnDataAvailable

Outros recursos

CBindStatusCallback membros