アニメーションコントロールを作成する
アニメーションコントロールを作成するサンプルです。
サンプルの実行画面
APIの宣言
[AVI.bas]
'CreateWindowEx=>新しいウインドウ(コントロール)を作成する
'<引数>
'dwExStyle: 常に0
'lpClassName: クラス名
'lpWindowName: ウインドウのキャプション
'dwStyle: 定数(WS_××とBS_××参照)
'x: ウインドウのx座標
'y: ウインドウのy座標
'nWidth: ウインドウの幅
'nHeight: ウインドウの高さ
'hWndParent: 親ウインドウのハンドル(親がないとき 0)
'hMenu: メニューのハンドル
'hInstance: モジュールのインスタンスハンドル
'lpParam: 常に0
'@戻り値@
'正常終了のときウインドウのハンドル
Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
'DestroyWindow=>ウインドウを破棄する
'<引数>
'hWnd:CreateWindowExで作成したウインドウのハンドル
'<戻り値>
'正常終了0以外
Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Long
'SendMessage=>メッセージをウインドウに送る
'<引数>
'hWnd:ウインドウのハンドル
'wMsg:定数(ACM_××参照)
'wParam:パラメータ
'lParam:パラメータ
'<戻り値>
'通常は使わない
Declare Function SendMessageString Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Const ANIMATE_CLASS = "SysAnimate32" 'クラス名
Const WM_USER = &H400 'ユーザー定義
Const ACM_OPEN = WM_USER + 100 'AVIファイルを開く
Const ACM_PLAY = WM_USER + 101 'AVIファイルを再生する
Const ACM_STOP = WM_USER + 102 'AVIファイルを停止する
Const WS_EX_TRANSPARENT = &H20 '透明なウインドウを作成
Dim AvihWnd As Long 'CreateWindowExで作成されたウインドウのハンドル
'----------------------------------------------------------
'■関数名 CreateWindow
'■用途 透明なウインドウを作成してそのハンドルを取得
'■引数
' hWnd 透明なウインドウを作成する親ウインドウのハンドル
' X 作成するウインドウの左上隅のX座標
' Y 作成するウインドウの左上隅のY座標
' nWidth 作成するウインドウの横幅
' nHeight 作成するウインドウの縦幅
'----------------------------------------------------------
Public Sub CreateWindow(hWnd As Long, _
X As Long, _
Y As Long, _
nWidth As Long, _
nHeight As Long)
'透明なウインドウを作成してハンドルを取得
AvihWnd = CreateWindowEx(WS_EX_TRANSPARENT, _
ANIMATE_CLASS, _
vbNullString, _
&H50000007, _
X, _
Y, _
nWidth, _
nHeight, _
hWnd, _
0, 0, 0)
End Sub
'----------------------------------------------------
'■関数名 AviPlay
'■用途 Aviファイルを再生する
'■引数
' FileName 再生するファイル名(フルパス指定する)
'-----------------------------------------------------
Public Sub AviPlay(FileName As String)
'AVIファイルを開く
Call SendMessageString(AvihWnd, ACM_OPEN, 0, FileName)
'AVIファイルを再生する
Call SendMessageString(AvihWnd, ACM_PLAY, -1, 0)
End Sub
'-------------------------------
'■関数名 AviStop
'■用途 Aviファイルを停止する
'-------------------------------
Public Sub AviStop()
'Aviファイルを停止する
Call SendMessageString(AvihWnd, ACM_STOP, 0, 0)
End Sub
'---------------------------------------------------
'■関数名 Destroy
'■用途 ウインドウを破棄する。
' Aviファイルを停止する
'---------------------------------------------------
Public Sub Destroy()
'CreateWindowExで作成されたウインドウを破棄する
Call DestroyWindow(AvihWnd)
'Aviファイルが再生中であったら停止する
Call AviStop
End Sub
APIの呼び出し
[AVI.frm]
Private Sub Play_Click()
'Aviファイルを再生する
Call AviPlay(App.Path & "\Filecopy.avi")
'メニューの処理
Play.Enabled = False
nStop.Enabled = True
End Sub
Private Sub nStop_Click()
'Aviファイルを停止する
Call AviStop
'メニューの処理
Play.Enabled = True
nStop.Enabled = False
End Sub
Private Sub Form_Load()
'透明なウインドウを作成する
Call CreateWindow(Picture1.hWnd, 0, 0, _
Picture1.ScaleWidth / Screen.TwipsPerPixelX, _
Picture1.ScaleHeight / Screen.TwipsPerPixelY)
End Sub
Private Sub Form_Unload(Cancel As Integer)
'作成したウインドウを破棄、AVIファイルの停止
Call Destroy
End Sub
ソースコード一式のダウンロード
vbapi_avi.zip 5.94 KB (6,086 バイト)
このサンプルの動作環境について
このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。
スポンサーリンク
関連記事
| 次の記事: | カラー選定ダイアログを表示する |
公開日:2015年03月03日
記事NO:00318
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









