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