CBindStatusCallback::StartAsyncDownload
更新 : 2007 年 11 月
指定された URL から非同期なデータのダウンロードを開始します。
HRESULT StartAsyncDownload(
T* pT,
ATL_PDATAAVAILABLE pFunc,
BSTR bstrURL,
IUnknown* pUnkContainer = NULL,
BOOL bRelative = FALSE
);
パラメータ
pT
[入力] 非同期データ転送を要求しているオブジェクトへのポインタです。CBindStatusCallback オブジェクトは、このオブジェクトのクラスのテンプレートとなります。pFunc
[入力] 読み込むデータを受け取る関数へのポインタです。この関数は、オブジェクトの T 型のクラスのメンバです。構文と例については、「解説」を参照してください。bstrURL
[入力] データの入手先となる URL です。有効な URL またはファイル名になります。NULL は指定できません。次に例を示します。CComBSTR mybstr =_T("http://somesite/data.htm")
pUnkContainer
[入力] コンテナの IUnknown です。既定値は、NULL です。bRelative
[入力] 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!!!"));
}
}
}
必要条件
ヘッダー : atlctl.h
参照
参照
CBindStatusCallback::OnDataAvailable