CBindStatusCallback::StartAsyncDownload
Spuštěn asynchronně stahování dat z určité adresy URL.
HRESULT StartAsyncDownload(
T* pT,
ATL_PDATAAVAILABLE pFunc,
BSTR bstrURL,
IUnknown* pUnkContainer = NULL,
BOOL bRelative = FALSE
);
Parametry
pT
[v] Ukazatel na objekt požadavku přenosu dat asynchronní. CBindStatusCallback Je tento objekt třídy templatized objektu.pFunc
[v] Ukazatel na funkci, která přijímá data čte.Funkce je členem třídu typu T .Viz poznámky syntaxe a příklad.bstrURL
[v] Získání dat z URL.Může být libovolný platný název souboru nebo adresa URL.Nemůže být NULL.Příklad:CComBSTR mybstr =_T("http://somesite/data.htm")
pUnkContainer
[v] IUnknown kontejneru.NULL ve výchozím nastavení.bRelative
[v] Příznak označující, zda adresa URL je relativní nebo absolutní.FALSE výchozí znamená, že adresa URL je absolutní.
Vrácená hodnota
Jeden standard HRESULT hodnoty.
Poznámky
Pokaždé, když je k dispozici dat je odeslán k objektu prostřednictvím OnDataAvailable .OnDataAvailablenačte data a volá funkci odkazuje pFunc (například data uložit nebo vytisknout na obrazovku).
Funkce odkazuje pFunc je členem třídy do objektu a má následující syntaxi:
void Function_Name(
CBindStatusCallback<T>* pbsc,
BYTE* pBytes,
DWORD dwSize
);
V následujícím příkladu (z ASYNCHRONNÍ vzorku), funkce OnData zapíše přijatá data do textového pole.
Příklad
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!!!"));
}
}
}
Požadavky
Záhlaví: atlctl.h