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]容器的 IUnknown。 NULL 默认情况下。bRelative
[in]一个URL是否的标志的相对路径或绝对路径。 FALSE 默认情况下,这意味着URL是绝对的。
返回值
一个标准 HRESULT 值。
备注
在数据可用后它发送到对象。OnDataAvailable。 OnDataAvailable 读取数据并调用函数指向由 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