全体作業率がわからないときユーザーに対して プログラム動作中であることを示すアニメーションコントロールを Visual Basicで作成します。 アニメーションはファイルのコピーなどでよく使われていますよね...。全 体 の 流 れ
| @Formにアニメーションコントロールウィンドウを作成 |
| Aボタンを押したら再生 |
| B終了するときにアニメーションを終了させてウィンドウを破棄する。 |
| これだけで基本的にはできます。簡単でしょ。これだけなら...(?) |
さてさて。今回は下準備をしなくてはなりません。 この下準備はほとんどのVisual Basicプログラマーはしたことがないでしょう。 むしろ知っている人が少ないはずです。多分。プログレスバーメッセージの送信
そんなに大変なのか!というとそんなでもありません。 @まず表示させたいAviファイルを用意してください。 あまりファイルサイズの大きいものを用意しないほうが身のためでしょう。 またファイルは無圧縮・RLE圧縮のものに限ります。 簡単なもので結構です。
A次にこのAviファイルをExeの中に含んでしまうためにリソースファイルに変換します。 そもそもリソースって何?っていう方は他の本で読んでください。 簡単にいえばアイコンなどです。今回はアイコンではなくアニメーションです。 さてリソースファイルに変換するにはリソースコンパイラでコンパイルします。 まずVisual BasicのCD-ROMを用意しましょう。(Learning Editonで十分です) そのCD-ROMのなかに以下のファイルが含まれていますのでどこかにフォルダを作って コピーしておいてください。他にヘルプファイルがほしい方は他の本を読むかVisual C++に含まれています。 そちらを参照してください。
ファイル名 内容 RC.EXE リソースコンパイラ RC.DLL コンパイル時に必要なDLL
で、ページがもったいないので簡単に説明します。 まず[メモ帳]などのテキストエディタで以下の一行を記述してtest.rcと いう名前で保存してください。sample_avi AVI "(用意したAviファイルのパス)"用意したAviファイルをリソースファイルに変換するには リソースコンパイラにコマンドラインを指定してコンパイルします。 [スタート]ー[プログラム(P)]ー[アクセサリ]のあたりに[コマンドプロント]があるので それを使って以下のコマンドラインを実行してください。rc.exe /r test.rcこのホームページはとりあえずVisual Basicのことは 大抵のことはできるという人を対象にしているので これだけ記述しておけば理解していただけるでしょう。 エラーがなければtest.resというだいるが生成されます。
B最後にこのファイルをVisual Basicのメニューから [プロジェクト(P)]-[ファイルの追加...]から追加してください。 これで準備完了です。とりあえずここまでご苦労様です。
アニメーションコントロールにメッセージを送るにはSendMessage()関数を使います。 基本的に送るメッセージは以下のとおりです。
| メッセージ | 意味 | wParam | lParam | 戻り値 |
| ACM_OPEN | Aviファイル(or リソース)を開く | 0 | ファイル名(またはリソース名) | 成功したとき 1 エラーのとき 0 |
| ACM_PLAY | アニメーションを再生する | 繰り返しの回数 0以上(0のときは再生しない) -1のとき無限に繰り返す | 上位ワード フレームの開始(0から) 下位ワード フレームの終端 -1のとき全フレームを再生する | 成功したとき 1 エラーのとき 0 |
| ACM_STOP | アニメーションを停止する | 0 | 0 | 成功したとき 1 エラーのとき 0 |
サンプルではリソースで再生しているので 全体的にリソースを使って再生する方法を基準に 解説していますが ファイル名を直接指定して再生することもできます。 以下にコードを示しますので参考にしてください。
==================== Form1 ====================
Dim FileName As String, rc As Long
FileName="sample.avi" '相対パスでも絶対パスでも可能
'アニメーションを再生させる
Private Sub Command1_Click()
'アニメーションコントロールウィンドウの作成
hWnd = CreateWindowsEx(0, ANIMATE_CLASS, 0, WS_CHILD or WS_VISIBLE , _
10, 10, 100, 100, Me.hWnd, 0, 0, 0)
'AVIファイルを開く
Call SendMessage(hWnd, ACM_OPEN, 0, FileName)
'AVIクリップの再生
Call SendMessage(hWnd, ACM_PLAY, 0, -1)
End Sub
Private Sub Command2_Click()
'アニメーションを停止する
Call SendMessage(hWnd, ACM_STOP, 0, 0)
'ウィンドウの破棄
Call DestroyWindow(hWnd)
End Sub
==================== Module1 ====================
Public hWnd As Long |
アニメーションコントロールを作成するときに指定します。
| スタイル | 内容 |
| ACS_CENTER | Aviクリップをウィンドウの中央で再生します 指定しないときAviクリップのサイズに自動的に変更されます |
| ACS_TRANSPARENT | Aviクリップで指定されている背景色ではなく 透明な背景を使って再生する |
| ACS_AUTOPLAY | Aviクリップを開くと同時に再生する |
ダウンロード(Animation.lzh 2.52MB)