アニメーション コントロールについて

アニメーションコントロールは、Audio-Video Interleaved(AVI)クリップを表示するウィンドウです。 AVIクリップは、映画のようなビットマップフレームのシリーズです。 アニメーションコントロールに表示できるのは、オーディオを含まないAVIクリップだけです。

アニメーションコントロールの一般的な用途の1つは、長時間操作中のシステムアクティビティを示すことです。 これは、AVIクリップが表示されている間に操作スレッドが実行され続けるためです。 たとえば、Windows Explorerの「検索」ダイアログボックスには、ファイルを検索するときに移動する拡大鏡が表示されます。

Note

ComCtl32.dllバージョン6を使用している場合、スレッドはサポートされていません。アプリケーションがUIをブロックしないか、さもなければアニメーションが発生しないことを確認してください。

 

アニメーションコントロールは、非圧縮AVIファイルまたはランレングス(BI_RLE8)エンコーディングで圧縮されたAVIファイルから作成されたAVIクリップを表示できます。 AVIリソースとしてアプリケーションにAVIクリップを追加することも、別のAVIファイルとしてアプリケーションに付随することもできます。

Note

AVIファイルまたはリソースには、サウンドチャネルが必要ありません。 アニメーションコントロールの機能は非常に制限されており、変更される可能性があります。 アプリケーションにマルチメディア再生および録音機能を提供するコントロールが必要な場合は、MCIWnd コントロールを使用できます。 詳細については、MCIWndウィンドウクラスを参照してください。

 

このセクションでは、次のトピックについて説明します。

アニメーションコントロールの作成

アニメーションコントロールはANIMATE_CLASSウィンドウクラスに属します。 アニメーションコントロールを作成するには、CreateWindowまたはCreateWindowEx関数またはAnimate_Createマクロを使用します。 マクロはアニメーションコントロールを親ウィンドウの左上隅に配置し、ACS_CENTERスタイルが指定されていない場合は、AVIクリップ内のフレームの寸法に基づいてコントロールの幅と高さを設定します。 ACS_CENTERが指定されている場合、Animate_Createはコントロールの幅と高さをゼロに設定します。 SetWindowPos関数を使用して、コントロールの位置とサイズを設定できます。

ダイアログボックス内またはダイアログボックスリソースからアニメーションコントロールを作成すると、ユーザーがダイアログボックスを閉じると自動的に制御が破棄されます。 ウィンドウ内でアニメーションコントロールを作成する場合は、そのコントロールを明示的に破棄する必要があります。

アニメーションコントロールメッセージについて

アプリケーションはアニメーション制御にメッセージを送信し、対応するAVIクリップを開き、再生、停止、および閉じます。 各メッセージには、メッセージを明示的に送信する代わりに使用できるマクロが1つ以上あります。

アニメーションコントロールの作成後、アプリケーションはACM_OPENメッセージを送信してAVIクリップを開いてメモリにロードします。 メッセージには、AVIファイルのパスまたはAVIリソースの名前が指定されます。 アニメーションコントロールを作成したモジュールからAVIリソースがロードされます。

アニメーションコントロールにACS_AUTOPLAYスタイルがある場合、AVIファイルまたはAVIリソースが開いた直後に、コントロールはAVIクリップの再生を開始します。 それ以外の場合、アプリケーションはACM_PLAYメッセージを使用してAVIクリップを開始できます。 アプリケーションは、ACM_STOPメッセージを送信することにより、いつでもクリップを停止できます。 最後に再生されたフレームは、コントロールがAVIクリップの再生を終了したとき、またはACM_STOPが送信されたときに表示されたままです。

アニメーションコントロールは、親ウィンドウに次の2つの通知コードを送信できます。ACN_STARTおよびACN_STOP。 ほとんどのアプリケーションはどちらの通知も処理しません。

AVIファイルまたはAVIリソースを閉じてメモリから削除するには、Animate_Closeマクロを使用します。このマクロでは、ファイル名またはリソース名がNULLに設定されたACM_OPENが送信されます。

デフォルトのメッセージ処理

ここでは、ANIMATE_CLASSウィンドウクラスのウィンドウ手順で処理されるウィンドウメッセージについて説明します。

メッセージ 処理の実行
WM_CLOSE アニメーションコントロールに関連付けられたAVIファイルまたは AVI リソースを解放します。
WM_DESTROY AVIファイルまたはAVIリソースを解放し、内部データ構造を解放してからDefWindowProc関数を呼び出します。
WM_ERASEBKGND スタティックコントロールの現在の背景色を使用して、ウィンドウの背景を消去します。
WM_NCCREATE 内部データ構造を割り当てて初期化し、DefWindowProcを呼び出します。
WM_NCHITTEST HTTRANSPARENTヒットテスト値を返します。
WM_PAINT アニメーションコントロールにAVIフレームを描画します。
WM_SIZE コントロールにACS_CENTERスタイルがあるかどうかを確認します。 コントロールがそうでない場合は、DefWindowProcを呼び出します。 それ以外の場合は、アニメーションをコントロールに集中させ、コントロールを無効にしてDefWindowProcを呼び出します。