ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2017年11月21日(火) 09:31

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年10月29日(土) 21:12 
オフライン

登録日時: 2005年9月17日(土) 13:15
記事: 25
住所: 香川
MCIコマンドを使った簡単なサンプルです。

音楽再生のコードはあるのですが、動画再生用のサンプルはなかったので(MCIウィンドウのはあったのですが)作ってみました。

ごく初歩的なものですが、使えるのではないでしょうか?


[hide]
コード:
'-----------------------------------------------------------------------------
'  イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [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
*/
[/hide]


通報する
ページトップ
 記事の件名: これは便利
投稿記事Posted: 2010年6月07日(月) 04:11 
こういったものこそどんどんクラスであポートすべき!


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke