次の方法で共有


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

参照

関連項目

CBindStatusCallback クラス

CBindStatusCallback::OnDataAvailable