Compartilhar via


CBindStatusCallback::StartAsyncDownload

Inicia que baixar dados de forma assíncrona de URL especificado.

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

Parâmetros

  • pinta
    [in] um ponteiro ao objeto que solicita a transferência de dados assíncrono.O objeto de CBindStatusCallback templatized em essa classe de objeto.

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

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

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

  • pUnkContainer
    [in] IUnknown do recipiente.NULO por padrão.

  • bRelative
    [in] de sinalizador que indica se o URL é relativo ou absoluto.Falso por padrão, significando é a URL absoluto.

Valor de retorno

Um dos valores padrão de HRESULT .

Comentários

Cada vez que os dados estão disponíveis são enviados para o objeto COM OnDataAvailable.OnDataAvailable ler os dados e chama a função apontada pelo pFunc (por exemplo, para armazenar os dados ou o para imprimir na tela).

A função apontada pelo pFunc é um membro da classe do objeto e possui a seguinte sintaxe:

void Function_Name(

CBindStatusCallback<T>* pbsc,

BYTE* pBytes,

DWORD dwSize

);

Em o exemplo (extraído do exemplo de ASYNC ), 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 de CBindStatusCallback

CBindStatusCallback::OnDataAvailable