ASYNC サンプル : データの非同期ダウンロード

更新 : 2007 年 11 月

ASYNC サンプルでは、URL からデータを非同期にダウンロードするコントロールを作成します。このコントロールは IBindStatusCallback インターフェイスを実装します。通常は、大きなバイナリ オブジェクトやプロパティをダウンロードするときに、非同期ダウンロードを使用します。非同期ダウンロードでは、ネットワーク操作に時間がかかる可能性がある場合でも、コントロールのユーザー インターフェイスがブロックされません。また、ユーザーがダウンロードを中止することもできます。ATL では、WinInet 関数を内部的に使用して、非同期のダウンロードを実装します。

ASYNC 属性サンプル : データを非同期にダウンロードは、このサンプルの属性付きバージョンです。

df8t23cc.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

サンプルとそのインストール手順を取得するには

  • Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。

    詳細については、「サンプル ファイルの格納場所」を参照してください。

  • 使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。

  • サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。

サンプルのビルドと実行

このサンプルをビルドして実行するには

  1. ソリューション ファイル async.sln を開きます。

  2. [ビルド] メニューの [ソリューションのビルド] をクリックします。

  3. サンプルをビルドしたら、Web ブラウザで ATLAsync.htm を開き、表示される指示に従います。これで、ASYNC コントロールの URL プロパティが設定され、ダウンロードが開始されます。ダウンロードされたデータは、ASYNC コントロールに表示されます。

ActiveX コントロール テスト コンテナでコントロールをテストできます。テスト コンテナにアクセスしてコントロールをテストする方法の詳細については、「テスト コンテナでのプロパティとイベントのテスト」を参照してください。

サンプルの動作

ASYNC は、URL という 1 つのプロパティを持つ、サブクラス化されたエディット コントロールを作成します。URL プロパティは BSTR であり、データを指す URL を表します。ASYNC サンプルでは、ATL CBindStatusCallback クラスを使用して非同期のダウンロードを実装します。コントロールのユーザーが URL プロパティを設定すると、ASYNC は CBindStatusCallback オブジェクトを作成します。次に、CBindStatusCallback::StartAsyncDownload メソッドが呼び出され、URL とコールバック関数へのポインタが渡されます。この CAtlAsync::OnData 関数は、CBindStatusCallback オブジェクトによって呼び出されます。また、URL から受信したバイナリ データが渡されます。CAtlAsync::OnData は、受信したデータをサブクラス化されたエディット コントロールに送信します。このエディット コントロールにデータが表示されます。

ATL を使用して Windows コントロールをスーパークラス化する方法の例については、ATL SubEdit サンプルに関するトピックを参照してください。

キーワード

このサンプルでは、次のキーワードを使用します。

ALT_MSG_MAP; ATLTRACE ; BEGIN_COM_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; BEGIN_PROPERTY_MAP; CBindStatusCallback::Download; CComBSTR::Append; CComCoClass; CComControl; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; DECLARE_REGISTRY_RESOURCEID; DisableThreadLibraryCalls; DLL_PROCESS_ATTACH; DLL_PROCESS_DETACH; DllMain; END_COM_MAP; END_MSG_MAP; END_OBJECT_MAP; END_PROPERTY_MAP; IDataObjectImpl; IDispatchImpl; IObjectSafetyImpl; IOleControlImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceObjectWindowlessImpl; IOleInPlaceObjectWindowlessImpl::SetObjectRects; IOleObjectImpl; IPerPropertyBrowsingImpl; IPersistPropertyBagImpl; IPersistStorageImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IQuickActivateImpl; IsWindow; IViewObjectExImpl; MESSAGE_HANDLER; OBJECT_ENTRY; PROP_ENTRY; SendMessage; USES_CONVERSION

参照

その他の技術情報

ATL サンプル