次の方法で共有


ASYNC 属性サンプル:データを非同期にダウンロードします。

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

ASYNC サンプルは、このサンプルの属性なしバージョンです。

セキュリティに関するメモセキュリティに関するメモ

このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

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

Visual Studio のサンプルにアクセスするには

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

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MSDN Web サイト上で Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

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

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

  2. From the Build menu, click Build Solution.

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

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

サンプルの動作

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

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

属性

このサンプルでは次の属性を使用します。

coclass , default, dual, helpstring, id, implements_category, in, module, object, out, pointer_default, progid, propget, propput, registration_script, retval, threading, uuid, version, vi_progid

Keywords

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

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

注意

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

参照

その他の技術情報

ATL 属性のサンプル