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 クラス

CBindStatusCallback::OnDataAvailable

その他の技術情報

CBindStatusCallback のメンバ