インターネット上の非同期モニカ

更新 : 2007 年 11 月

インターネットはネットワーク アクセスが遅いため、アプリケーションのデザインに工夫が必要です。つまり、アプリケーションからネットワークに非同期でアクセスして、ユーザー インターフェイスの機能が停止しないようにアプリケーションをデザインします。MFC の CAsyncMonikerFile クラスを使用すると、ファイルを非同期でダウンロードできます。

非同期モニカを使用すると、COM アプリケーションを拡張してインターネットを通じてデータを非同期的にダウンロードし、ビットマップや VRML オブジェクトなどの大きなオブジェクトを少しずつ描画できます。また、ユーザー インターフェイスの応答を中断することなく、インターネット上の ActiveX コントロール プロパティまたはファイルをダウンロードできます。

非同期モニカの利点

非同期モニカの利点は、次のとおりです。

  • ユーザー インターフェイスを妨げることなく、コードやファイルをダウンロードできます。

  • ユーザー インターフェイスを妨げることなく、ActiveX コントロールのプロパティをダウンロードできます。

  • ダウンロードの進行状況に関する通知を受け取ることができます。

  • 進行状況および準備状況の情報を追跡できます。

  • 進行状況のステータスをユーザーに提供できます。

  • ユーザーはダウンロードをいつでもキャンセルできます。

非同期モニカの MFC クラス

CAsyncMonikerFile は、CMonikerFile の派生クラスであり、CMonikerFileCOleStreamFile の派生クラスです。COleStreamFile オブジェクトは、データのストリームを表します。CMonikerFile オブジェクトは、IMoniker を使用してデータを取得します。CAsyncMonikerFile オブジェクトは、IMoniker を使用して非同期でデータを取得できます。

通常、インターネット対応のアプリケーションおよび ActiveX コントロールでは、非同期モニカを使用して、ファイル転送中でもユーザー インターフェイスが応答できるようにします。主な例として、CDataPathProperty を使用した ActiveX コントロールの非同期プロパティが用意されています。

ActiveX コントロールのデータ パスを表す MFC クラス

MFC の CDataPathProperty クラスおよび CCachedDataPathProperty クラスは、非同期で読み込むことができる ActiveX コントロールのプロパティを実装します。非同期プロパティは、同期インターフェイスの初期手順終了後に読み込まれます。非同期の ActiveX コントロールは、長いプロパティの交換中にコールバックを繰り返し呼び出すことによって、新しいデータが取得できたことを示します。

CDataPathPropertyCAsyncMonikerFile の派生クラスです。CCachedDataPathPropertyCDataPathProperty の派生クラスです。ActiveX コントロールに非同期プロパティを実装するには、CDataPathProperty または CCachedDataPathProperty からクラスを派生し、OnDataAvailable およびほかの受け取りたい通知をオーバーライドします。

非同期モニカを使用してファイルをダウンロードするには

  1. CAsyncMonikerFile の派生クラスを宣言します。

  2. OnDataAvailable をオーバーライドしてデータを表示します。

  3. OnProgressOnStartBindingOnStopBinding など、その他のメンバ関数をオーバーライドします。

  4. このクラスのインスタンスを宣言し、そのインスタンスで URL を開きます。

ActiveX コントロールでの非同期的なダウンロードの詳細については、「インターネット上の ActiveX コントロール」を参照してください。

参照

概念

MFC インターネット プログラミングの作業

MFC インターネット プログラミングの基礎