ab.com コミュニティ https://www.activebasic.com/forum/ |
|
簡単な動画再生サンプル https://www.activebasic.com/forum/viewtopic.php?t=419 |
ページ 1 / 1 |
作成者: | EIJI [ 2005年10月29日(土) 21:12 ] |
記事の件名: | 簡単な動画再生サンプル |
MCIコマンドを使った簡単なサンプルです。 音楽再生のコードはあるのですが、動画再生用のサンプルはなかったので(MCIウィンドウのはあったのですが)作ってみました。 ごく初歩的なものですが、使えるのではないでしょうか? [ここをクリックすると内容が表示されます]
コード: '----------------------------------------------------------------------------- ' イベント プロシージャ '----------------------------------------------------------------------------- ' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。 ' ウィンドウ ハンドル: hMainWnd ' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。 Dim vop As MCI_DGV_OPEN_PARMS Dim vpp AS MCI_DGV_PLAY_PARMS Dim bErr As Long ' このあたりの事はMCIコマンドについて調べてください。 Type MCI_DGV_OPEN_PARMS dwCallback As DWord wDeviceID As DWord lpstrDeviceType As BytePtr lpstrElementName As BytePtr lpstrAlias As BytePtr dwStyle As DWord hWndParent As DWord End Type TYPE MCI_DGV_PLAY_PARMS dwCallback As DWord ' dwFrom As DWord ' dwTo As DWord ' dwSpeed As DWord End Type '----------------------------------------------------------------------------- ' ウィンドウメッセージを処理するためのコールバック関数 Function MainWndProc(hWnd As DWord, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord ' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。 ' イベントプロシージャの呼び出しを行います。 MainWndProc=EventCall_MainWnd(hWnd As HWND,dwMsg,wParam,lParam) End Function '----------------------------------------------------------------------------- ' ここから下は、イベントプロシージャを記述するための領域になります。 Sub MainWnd_Destroy() Dim dwCallback As DWord ' デバイスを閉じる mciSendCommand(vop.wDeviceID,MCI_CLOSE,MCI_WAIT,dwCallback) ' プロジェクト名に変更してください(私は'Wnd1'にしています) Wnd1_DestroyObjects() PostQuitMessage(0) End Sub Sub MainWnd_MciNotify(flags As Long, DevID As DWord) ' ここでは再生が正常終了した時にメッセージを受け取っています。 If flags=MCI_NOTIFY_SUCCESSFUL Then ' MCI_CLOSEをMCI_PLAYにすると繰り返し再生になります。 bErr=mciSendCommand(DevID,MCI_CLOSE,MCI_NOTIFY or MCI_FROM,vpp) End If End Sub ' 動画オープン・再生ルーチン Sub PLAY(Name AS BytePtr) With vop .dwCallback = hMainWnd As DWord .lpstrElementName=Name .dwStyle = WS_CHILD or WS_VISIBLE .hWndParent = hMainWnd As DWord End With ' MCIデバイスをオープン ' MCI_DGV_OPEN_WSを付けるとメインウィンドウに除けるとサブウィンドウに表示します。 bErr=mciSendCommand(0,MCI_OPEN, MCI_OPEN_ELEMENT or _ MCI_DGV_OPEN_PARENT or MCI_DGV_OPEN_WS,vop) If bErr Then MessageBox(hMainWnd,"デバイスのオープンに失敗","error",MB_OK) Exit Sub End If ' 再生 vpp.dwCallback=hMainWnd As DWord ' 再生が終了したときメッセージを送るためMCI_NOTIFYを付けます。 bErr=mciSendCommand(vop.wDeviceID,MCI_PLAY, MCI_NOTIFY ,vpp) If bErr Then MessageBox(hMainWnd,"デバイスの再生に失敗","error",MB_OK) Exit Sub End If End Sub ' メニューを作ってください(私は名前をOPENにしています) Sub MainWnd_IDM_OPEN_MenuClick() Dim ofn As OPENFILENAME Dim buffer As String 'ファイル名を取得 ofn.lStructSize=Len(ofn) ofn.hwndOwner=hMainWnd ' ファイルフィルターの指定はここで直接しています。 ofn.lpstrFilter=Ex"Video File (*.avi;*.wmv;*.mpg)\0*.avi;*.wmv;*.mpg\0*\0\0" ofn.nFilterIndex=1 buffer=ZeroString(MAX_PATH) ofn.lpstrFile=StrPtr(buffer) ofn.nMaxFile=MAX_PATH If GetOpenFileName(ofn)=0 Then Exit Sub ' ここまでは、汎用ルーチン。この下で、グローバル変数に渡すかサブルーチンを呼んでください。 PLAY(ofn.lpstrFile) End Sub ' メニューを作るのが面倒な方はこちらを使ってください。 /* Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT) ' 再生するファイルパスを指定 PLAY("C:\動画ファイルパスを指定してください.mpg") End Sub */ |
作成者: | 無店舗型性風俗特 [ 2010年6月07日(月) 04:11 ] |
記事の件名: | これは便利 |
こういったものこそどんどんクラスであポートすべき! |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |