CBindStatusCallback::StartAsyncDownload
指定した 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 の標準値の 1 つが。
解説
データは、使用できる度に 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