2010年10月16日

ANIファイルの読み込み



ANIファイルはWindowsのマルチメディアアプリケーションを収めたRIFF形式Resource Interchange File Format)という形式をとっております。
ANIファイルの読み込み手順は以下の通りです。

  1. マルチメディアファイル入出力関数を使って、ANIファイルを開きます。
  2. RIFFチャンクに進入して、ACONチャンクを探します。
  3. LISTチャンクに進入して、INFOチャンクをを探します。
  4. INFOチャンクに進入して、INAMチャンクIARTチャンクを読み込みます。
  5. INFOチャンクから退出して、anihチャンクrateチャンクを読み込みます。
  6. ヘッダーフラグがANI_FLAG_SEQUENCEの場合、seqチャンクを読み込みます。
  7. LISTチャンクに進入して、framチャンクを探します。
  8. フレームの数だけiconチャンクを読み込み、アイコンまたはカーソルを作成します。
  9. framチャンクから退出します。
  10. RIFFチャンクから退出します。

続きを読む


posted by ひろし at 17:48| Comment(0) | ANIファイルフォーマット | このブログの読者になる | 更新情報をチェックする

2010年10月23日

ANIファイルの動画の再生



前回の「ANIファイルの読み込み」で作成したCANIFileクラスを、実際に動かしてみます。動画を動かすのに必要なタイマーとして、マルチメディアタイマーを使用するため、CMMTimerクラスを独自に作成しました。そしてANIファイルを読み込んで作成したCANIFileクラスはこのCMMTimerクラス基底クラスとして継承することにして、更にタイマーに関連したメンバー変数/関数をいくつか追加しました。尚タイマーイベント処理CMMTimerクラスOnTimer関数オーバーライドしたCANIFileクラスOnTimer関数アニメーションステップ値を変更した後、同じくCANIFileクラスのメンバー関数であるInvalidateOwnerWindow関数によりMFCビュークラスOnDraw関数を呼び出して、画像を再描画させています。

続きを読む
posted by ひろし at 17:45| Comment(0) | ANIファイルフォーマット | このブログの読者になる | 更新情報をチェックする

2010年10月29日

アニメーションリソースの読み込み



アニメーションリソース(RT_ANICURSOR/RT_ANIICON)の内容はANIファイルと同じ構成なので、「ANIファイルの読み込み」で紹介した関数群に少し手を加えるだけで済む訳ですが、実際にアニメーションリソースVisualC++のリソースエディタで作成しようとすると、アニメーションリソースを処理する機能がないためか、データリソースに分類されてしまいます。そこで今回はANIファイルリソースに組み込む方法と、リソースから読み込むプログラムについて解説します。


続きを読む
posted by ひろし at 15:36| Comment(0) | ANIファイルフォーマット | このブログの読者になる | 更新情報をチェックする

2010年11月13日

ANIファイルの書き込み



ANIファイルはWindowsのマルチメディアアプリケーションを収めたRIFF形式(Resource Interchange File Format)という形式をとっております。
ANIファイルの書き込み手順は以下の通りです。

  1. マルチメディアファイル入出力関数を使って、ANIファイルを開きます。
  2. ANIHEADER構造体が正しくない場合、新たに作成し直します。
  3. RIFF/ACONチャンクを作成して、その中に進入します。
  4. ファイル名か著者名がある場合は、INFOチャンクを作成してその中に進入します。
  5. ファイル名がある場合は、INAMチャンクを作成してその中に進入し、ファイル名を書き込んだ後、INAMチャンクから退出します。
  6. 著者名がある場合は、IARTチャンクを作成してその中に進入し、著者名を書き込んだ後、IARTチャンクから退出します。
  7. INFOチャンクから退出します。
  8. anihチャンクを作成してその中に進入し、ANIHEADER構造体を書き込んだ後、anihチャンクから退出します。
  9. 表示時間配列がある場合は、rateチャンクを作成してその中に進入し、表示時間配列を書き込んだ後、rateチャンクから退出します。
  10. ヘッダーフラグがANI_FLAG_SEQUENCEの場合、seqチャンクを作成してその中に進入し、シーケンスデータを書き込んだ後、seqチャンクから退出します。
  11. framチャンクを作成して、その中に進入します。
  12. iconチャンクを作成してその中に進入し、リストに格納されたCGroupIconクラスiconチャンクに書き込んだ後、iconチャンクから退出します。この作業をフレームの数だけ繰り返します。
  13. framチャンクから退出します。
  14. RIFFチャンクから退出します。


    続きを読む
posted by ひろし at 03:33| Comment(0) | ANIファイルフォーマット | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。