CAnimateCtrl クラス

Windows コモン アニメーション コントロールの機能が用意されています。

構文

class CAnimateCtrl : public CWnd

メンバー

パブリック コンストラクター

名前 説明
CAnimateCtrl::CAnimateCtrl CAnimateCtrl オブジェクトを構築します。

パブリック メソッド

名前 説明
CAnimateCtrl::Close AVI クリップを閉じます。
CAnimateCtrl::Create アニメーション コントロールを作成し、オブジェクトに CAnimateCtrl アタッチします。
CAnimateCtrl::CreateEx 指定した Windows 拡張スタイルを使用してアニメーション コントロールを作成し、オブジェクトに CAnimateCtrl アタッチします。
CAnimateCtrl::IsPlaying オーディオ ビデオ インターリーブ (AVI) クリップが再生されているかどうかを示します。
CAnimateCtrl::Open ファイルまたはリソースから AVI クリップを開き、最初のフレームを表示します。
CAnimateCtrl::P lay 音なしでAVIクリップを再生します。
CAnimateCtrl::Seek AVI クリップの選択した単一フレームを表示します。
CAnimateCtrl::Stop AVI クリップの再生を停止します。

解説

このコントロール (したがって CAnimateCtrl 、クラス) は、Windows 95、Windows 98、および Windows NT バージョン 3.51 以降で実行されているプログラムでのみ使用できます。

アニメーション コントロールは、AVI (Audio Video Interleaved) 形式 (標準の Windows ビデオ/オーディオ形式) でクリップを表示する四角形のウィンドウです。 AVI クリップは、ムービーのような一連のビットマップ フレームです。

アニメーション コントロールは、単純な AVI クリップのみを再生できます。 具体的には、アニメーション コントロールによって再生されるクリップは、次の要件を満たしている必要があります。

  • ビデオ ストリームは 1 つだけ必要であり、少なくとも 1 つのフレームが必要です。

  • ファイルには最大で 2 つのストリームを含めることができます (通常、もう一方のストリームが存在する場合はオーディオ ストリームですが、アニメーション コントロールはオーディオ情報を無視します)。

  • クリップは、圧縮されていないか、RLE8 圧縮で圧縮する必要があります。

  • ビデオ ストリームではパレットの変更は許可されません。

AVI クリップを AVI リソースとしてアプリケーションに追加することも、別の AVI ファイルとしてアプリケーションに添付することもできます。

AVI クリップが表示されている間もスレッドの実行が継続されるため、アニメーション コントロールの一般的な用途の 1 つは、長時間の操作中にシステム アクティビティを示す方法です。 たとえば、エクスプローラーの [検索] ダイアログ ボックスには、システムがファイルを検索する際に、動く虫眼鏡が表示されます。

ダイアログ ボックス内またはダイアログ エディターを CAnimateCtrl 使用してダイアログ リソースからオブジェクトを作成した場合、ユーザーがダイアログ ボックスを閉じると、オブジェクトは自動的に破棄されます。

ウィンドウ内にオブジェクトを CAnimateCtrl 作成する場合は、オブジェクトを破棄する必要があります。 スタック上にオブジェクトを CAnimateCtrl 作成すると、自動的に破棄されます。 関数を CAnimateCtrl 使用してヒープ上にオブジェクトを作成する new 場合は、オブジェクトを呼び出 delete して破棄する必要があります。 新しいクラスを派生させ、そのクラス CAnimateCtrl 内のメモリを割り当てる場合は、デストラクターを CAnimateCtrl オーバーライドして割り当てを破棄します。

使用CAnimateCtrlの詳細については、「コントロールと CAnimateCtrl の使用」を参照してください

継承階層

CObject

CCmdTarget

CWnd

CAnimateCtrl

必要条件

ヘッダー: afxcmn.h

CAnimateCtrl::CAnimateCtrl

CAnimateCtrl オブジェクトを構築します。

CAnimateCtrl();

解説

作成するオブジェクトに対して他の操作を実行する前に、Create メンバー関数を呼び出す必要があります。

// This example creates a secondary thread that implements
// the methods of CAnimateCtrl. The procedure of the thread
// is MyClipThreadProc and the thread was created with the
// code AfxBeginThread( MyClipThreadProc, (LPVOID) pParentWnd).
// The example code creates and initializes an animation control,
// then proceeds to pump messages from the queue until one the
// private messages WM_STOPCLIP, WM_PLAYCLIP, WM_SHOWFIRSTFRAME or
// WM_SHOWLASTFRAME is received. The appropriate action is done for
// these messages. The thread ends when the WM_STOPCLIP is received.
// NOTE: the thread parameter, pParam, is a pointer to a CWnd object
// that will be the parent of the animation control.

#define WM_STOPCLIP WM_USER + 1
#define WM_PLAYCLIP WM_USER + 2
#define WM_SHOWFIRSTFRAME WM_USER + 3
#define WM_SHOWLASTFRAME WM_USER + 4

UINT MyClipThreadProc(LPVOID pParam)
{
   // NOTE: pParentWnd is the parent window of the animation control.
   CWnd *pParentWnd = (CWnd *)pParam;
   CAnimateCtrl cAnimCtrl;

   // Create the animation control.
   if (!cAnimCtrl.Create(WS_CHILD | WS_VISIBLE | ACS_CENTER,
                         CRect(10, 10, 100, 100), pParentWnd, 1))
   {
      return false;
   }

   // Open the AVI file.
   if (!cAnimCtrl.Open(_T("MyAvi.avi")))
   {
      return false;
   }

   // Pump message from the queue until the stop play message is received.
   MSG msg;
   while (GetMessage(&msg, NULL, 0, 0) && (msg.message != WM_STOPCLIP))
   {
      switch (msg.message)
      {
         // Start playing from the first frame to the last,
         // continuously repeating.
      case WM_PLAYCLIP:
         if (!cAnimCtrl.Play(0, (UINT)-1, (UINT)-1))
            return false;
         break;

         // Show the first frame.
      case WM_SHOWFIRSTFRAME:
         if (!cAnimCtrl.Seek(0))
            return false;
         cAnimCtrl.RedrawWindow();
         break;

         // Show the last frame.
      case WM_SHOWLASTFRAME:
         if (!cAnimCtrl.Seek((UINT)-1))
            return false;
         cAnimCtrl.RedrawWindow();
         break;
      }

      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   cAnimCtrl.Stop();
   cAnimCtrl.Close();

   return true;
}

CAnimateCtrl::Close

アニメーション コントロールで以前に開いていた AVI クリップ (ある場合) を閉じ、メモリから削除します。

BOOL Close();

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CAnimateCtrl::CAnimateCtrl の例を参照してください。

CAnimateCtrl::Create

アニメーション コントロールを作成し、オブジェクトに CAnimateCtrl アタッチします。

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

パラメーター

dwStyle
アニメーション コントロールのスタイルを指定します。 以下の「解説」セクションで説明するウィンドウ スタイルと、Windows SDK のアニメーション コントロール スタイルで 説明されているアニメーション コントロール スタイル の任意の組み合わせを適用します。

rect
アニメーション コントロールの位置とサイズを指定します。 CRect オブジェクトまたは RECT 構造体のいずれかを指定できます。

pParentWnd
アニメーション コントロールの親ウィンドウ (通常は .CDialog NULL は指定できません。

nID
アニメーション コントロールの ID を指定します。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

2 つの手順で作成 CAnimateCtrl します。 まず、コンストラクターを呼び出し、次に呼び出 Createします。これにより、アニメーション コントロールが作成され、オブジェクトに CAnimateCtrl アタッチされます。

アニメーション コントロールに次 のウィンドウ スタイル を適用します。

  • WS_CHILD Always

  • 通常WS_VISIBLE

  • ほとんどWS_DISABLEDしない

アニメーション コントロールで拡張ウィンドウ スタイルを使用する場合は、代わりに CreateCreateEx を呼び出します。

上記のウィンドウ スタイルに加えて、1 つ以上のアニメーション コントロール スタイルをアニメーション コントロールに適用することもできます。 アニメーション コントロール スタイルの詳細については、Windows SDK を 参照してください

CAnimateCtrl::CAnimateCtrl の例を参照してください。

CAnimateCtrl::CreateEx

コントロール (子ウィンドウ) を作成し、オブジェクトに CAnimateCtrl 関連付けます。

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

パラメーター

dwExStyle
作成するコントロールの拡張スタイルを指定します。 拡張 Windows スタイルの一覧については、Windows SDK の CreateWindowExdwExStyle パラメーターを参照してください。

dwStyle
アニメーション コントロールのスタイルを指定します。 Windows SDK のアニメーション コントロール スタイルで 説明されているウィンドウ コントロール スタイルとアニメーション コントロール スタイル の任意の組み合わせを適用します。

rect
pParentWnd のクライアント座標における、作成するウィンドウのサイズと位置を記述する RECT 構造体への参照

pParentWnd
コントロールの親であるウィンドウへのポインター。

nID
コントロールの子ウィンドウ ID。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

Windows 拡張スタイルの前置WS_EX_で指定された拡張 Windows スタイルを適用するには、[作成] の代わりに使用CreateExします。

CAnimateCtrl::IsPlaying

オーディオ ビデオ インターリーブ (AVI) クリップが再生されているかどうかを示します。

BOOL IsPlaying() const;

戻り値

AVI クリップが再生されている場合は TRUE。それ以外の場合は FAL Standard Edition。

解説

このメソッドは、 Windows SDK で説明されているACM_ISPLAYING メッセージを送信します。

CAnimateCtrl::Open

この関数を呼び出して AVI クリップを開き、最初のフレームを表示します。

BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UINT nID);

パラメーター

lpszFileName
CString AVI ファイルの名前または AVI リソースの名前を含む null で終わる文字列へのオブジェクトまたはポインター。 このパラメーターが NULL の場合、システムはアニメーション コントロール用に以前に開いていた AVI クリップ (存在する場合) を閉じます。

nID
AVI リソース識別子。 このパラメーターが NULL の場合、システムはアニメーション コントロール用に以前に開いていた AVI クリップ (存在する場合) を閉じます。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

AVI リソースは、アニメーション コントロールを作成したモジュールから読み込まれます。

Open AVIクリップのサウンドをサポートしていません。サイレントAVIクリップのみを開くことができます。

アニメーション コントロールにスタイルがある ACS_AUTOPLAY 場合、アニメーション コントロールはクリップを開いた直後に自動的に再生を開始します。 スレッドの実行が続いている間、クリップはバックグラウンドで再生され続けます。 クリップの再生が完了すると、自動的に繰り返されます。

アニメーション コントロールにスタイルがある ACS_CENTER 場合、AVI クリップはコントロールの中央に配置され、コントロールのサイズは変更されません。 アニメーション コントロールにスタイルがない ACS_CENTER 場合、AVI クリップを開いたときに AVI クリップ内の画像のサイズに変更されます。 コントロールの左上隅の位置は変更されず、コントロールのサイズのみが変更されます。

アニメーション コントロールにスタイルがある ACS_TRANSPARENT 場合、最初のフレームは、アニメーション クリップで指定された背景色ではなく、透明な背景を使用して描画されます。

CAnimateCtrl::CAnimateCtrl の例を参照してください。

CAnimateCtrl::P lay

アニメーション コントロールで AVI クリップを再生するには、この関数を呼び出します。

BOOL Play(
    UINT nFrom,
    UINT nTo,
    UINT nRep);

パラメーター

nFrom
再生が開始されるフレームの 0 から始まるインデックス。 値は 65,536 未満にする必要があります。 値が 0 の場合は、AVI クリップの最初のフレームから始まります。

nTo
再生が終了するフレームの 0 から始まるインデックス。 値は 65,536 未満にする必要があります。 値 - 1 は、AVI クリップの最後のフレームで終わる値を意味します。

nRep
AVI クリップを再生する回数。 値 - 1 は、ファイルを無期限に再生します。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

アニメーション コントロールは、スレッドの実行中にクリップをバックグラウンドで再生します。 アニメーション コントロールにスタイルがある ACS_TRANSPARENT 場合、AVI クリップは、アニメーション クリップで指定された背景色ではなく、透明な背景を使用して再生されます。

CAnimateCtrl::CAnimateCtrl の例を参照してください。

CAnimateCtrl::Seek

AVI クリップの 1 つのフレームを静的に表示するには、この関数を呼び出します。

BOOL Seek(UINT nTo);

パラメーター

nTo
表示するフレームの 0 から始まるインデックス。 値は 65,536 未満にする必要があります。 値が 0 の場合は、AVI クリップの最初のフレームが表示されます。 値 -1 は、AVI クリップの最後のフレームを表示します。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

アニメーション コントロールにスタイルがある ACS_TRANSPARENT 場合、AVI クリップは、アニメーション クリップで指定された背景色ではなく、透明な背景を使用して描画されます。

CAnimateCtrl::CAnimateCtrl の例を参照してください。

CAnimateCtrl::Stop

アニメーション コントロールで AVI クリップの再生を停止するには、この関数を呼び出します。

BOOL Stop();

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CAnimateCtrl::CAnimateCtrl の例を参照してください。

関連項目

CWnd クラス
階層図
CAnimateCtrl::Create
ON_CONTROL