アニメーションコントロールを作成する
アニメーションコントロールを作成するサンプルです。
サンプルの実行画面

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