“如何播放Avi、Wave、midi文件”、:
“誰知道用api播放avi,mpg的詳細方法?要可以設定將圖像放置到設定的窗體中”、
“如何同時播放兩個Wav文件”
的問題,其實用一個類模塊就一切搞定,不需要什么控件之類的東西,下面這個類模塊(不知從哪里找來的),我研究后將它修改得更好用了,將下面這個類模塊存為Mmedia.cls
注釋:----------------------------------------------------
Option EXPlicit
注釋:--------------TrueZq 最新更新2001-01-12---------------------
注釋:文件名: MMedia.cls
注釋:說明: : 一個多媒體類,能播放Avi、Wave、Midi文件
注釋:用法:
注釋:Dim Multimedia As New Mmedia
注釋:Multimedia.mmOpen "c: est.wav"
注釋:Multimedia.mmPlay
注釋:!記住:在程序結束時,一定要用Set Multimedia=nothing釋放資源?。?!
注釋:-----------------------------------------------------
注釋: -=-=-=- 屬性 -=-=-=-
注釋: sFilename 當前的文件名
注釋: nLength 文件長度(只讀)
注釋: nPosition 當前位置
注釋: sStatus 當前狀態(tài)(只讀)
注釋: bWait True/False.決定是否等待播放完
注釋: -=-=-=- 方法 -=-=-=-=-
注釋: mmOpen 打開要播放的文件
注釋: mmClose 關閉當前文件
注釋: mmPause 暫停
注釋: mmStop 停止 停止后可以跳到開始再次播放
注釋: mmSeek Seeks to a position in the file
注釋: mmPlay 播放
注釋:--------------------------------------------------------------
Private sAlias As String 注釋:別名
注釋:Private hWnd As Long
Private sFilename As String 注釋: 當前的文件名
Private nLength As Single 注釋: 文件長度
Private nPosition As Single 注釋: 當前位置
Private sStatus As String 注釋: 當前狀態(tài)
Private bWait As Boolean 注釋: 決定是否等待播放完
Const WS_CHILD = &H40000000
注釋:------------ API 聲明 -------------
Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" (ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
注釋:Private Declare Function GetActiveWindow Lib "USER32" () As Integer
注釋:當sTheFile是一個Avi文件時,參數(shù)hWnd指定動畫在哪里播放
注釋:若hWnd=0,則新開一個窗口播放動畫。
注釋:如果聽不到Midi音樂,請在Windows下用媒體播放器測試一下。
注釋:文件名不能帶空格
Public Sub mmOpen(ByVal sTheFile As String, Optional hWnd As Long = 0)
Dim nReturn As Long
Dim sType As String 注釋:文件類型
Static nNum As Integer
If sAlias <> "" Then 注釋:關閉開始打開的文件
mmClose
End If
If (Dir(sTheFile) = "") Then 注釋:判斷是否是一個存在的文件
sFilename = "文件" & sTheFile & " 不存在!"
Exit Sub
Else
sFilename = sTheFile
注釋: nNum = nNum + 1
End If
注釋: Stop
sAlias = sFilename 注釋:用文件名作別名,避免別名沖突!
注釋: 判斷文件類型
Select Case UCase$(Right$(sTheFile, 3))
Case "WAV"
sType = "Waveaudio"
Case "AVI"
sType = "AviVideo"
Case "MID"
sType = "Sequencer"
Case Else
注釋: 未知文件格式,退出。
Exit Sub
End Select
If sType = "AviVideo" And hWnd > 0 Then
nReturn = mciSendString("open " & sTheFile & " ALIAS " & sAlias _
& " TYPE AVIVideo parent " & hWnd & " style " & LTrim$(Str$(WS_CHILD)), 0&, 0, 0)
Else
nReturn = mciSendString("Open " & sTheFile & " ALIAS " & sAlias _
& " TYPE " & sType, "", 0, 0)
End If
End Sub
注釋:關閉當前打開的多媒體文件
Public Sub mmClose()
Dim nReturn As Long
注釋:如果沒有文件打開,則退出
If sAlias = "" Then Exit Sub
nReturn = mciSendString("Close " & sAlias, "", 0, 0)
sAlias = ""
sFilename = ""
End Sub
注釋:暫停
Public Sub mmPause()
Dim nReturn As Long
If sAlias = "" Then
Exit Sub
ElseIf Status = "paused" Then 注釋:如果先前已經(jīng)暫停了,則解除暫停
mmPlay
Else
nReturn = mciSendString("Pause " & sAlias, "", 0, 0)
End If
注釋:nPosition = Position
End Sub
注釋:播放
Public Sub mmPlay()
Dim nReturn As Long
If sAlias = "" Then
Exit Sub
ElseIf Position = Length Then 注釋:如果已經(jīng)到末尾
mmSeek 0 注釋:跳到開始處
End If
If bWait Then
nReturn = mciSendString("Play " & sAlias & " wait", "", 0, 0)
Else
nReturn = mciSendString("Play " & sAlias, "", 0, 0)
End If
End Sub
注釋:停止
注釋:停止后跳到開始,以便再次播放
Public Sub mmStop()
Dim nReturn As Long
If sAlias = "" Then Exit Sub
nReturn = mciSendString("Stop " & sAlias, "", 0, 0)
mmSeek 0 注釋:跳到開始位置
End Sub
“誰知道用api播放avi,mpg的詳細方法?要可以設定將圖像放置到設定的窗體中”、
“如何同時播放兩個Wav文件”
的問題,其實用一個類模塊就一切搞定,不需要什么控件之類的東西,下面這個類模塊(不知從哪里找來的),我研究后將它修改得更好用了,將下面這個類模塊存為Mmedia.cls
注釋:----------------------------------------------------
Option EXPlicit
注釋:--------------TrueZq 最新更新2001-01-12---------------------
注釋:文件名: MMedia.cls
注釋:說明: : 一個多媒體類,能播放Avi、Wave、Midi文件
注釋:用法:
注釋:Dim Multimedia As New Mmedia
注釋:Multimedia.mmOpen "c: est.wav"
注釋:Multimedia.mmPlay
注釋:!記住:在程序結束時,一定要用Set Multimedia=nothing釋放資源?。?!
注釋:-----------------------------------------------------
注釋: -=-=-=- 屬性 -=-=-=-
注釋: sFilename 當前的文件名
注釋: nLength 文件長度(只讀)
注釋: nPosition 當前位置
注釋: sStatus 當前狀態(tài)(只讀)
注釋: bWait True/False.決定是否等待播放完
注釋: -=-=-=- 方法 -=-=-=-=-
注釋: mmOpen
注釋: mmClose 關閉當前文件
注釋: mmPause 暫停
注釋: mmStop 停止 停止后可以跳到開始再次播放
注釋: mmSeek
注釋: mmPlay 播放
注釋:--------------------------------------------------------------
Private sAlias As String 注釋:別名
注釋:Private hWnd As Long
Private sFilename As String 注釋: 當前的文件名
Private nLength As Single 注釋: 文件長度
Private nPosition As Single 注釋: 當前位置
Private sStatus As String 注釋: 當前狀態(tài)
Private bWait As Boolean 注釋: 決定是否等待播放完
Const WS_CHILD = &H40000000
注釋:------------ API 聲明 -------------
Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" (ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
注釋:Private Declare Function GetActiveWindow Lib "USER32" () As Integer
注釋:當sTheFile是一個Avi文件時,參數(shù)hWnd指定動畫在哪里播放
注釋:若hWnd=0,則新開一個窗口播放動畫。
注釋:如果聽不到Midi音樂,請在Windows下用媒體播放器測試一下。
注釋:文件名不能帶空格
Public Sub mmOpen(ByVal sTheFile As String, Optional hWnd As Long = 0)
Dim nReturn As Long
Dim sType As String 注釋:文件類型
Static nNum As Integer
If sAlias <> "" Then 注釋:關閉開始打開的文件
mmClose
End If
If (Dir(sTheFile) = "") Then 注釋:判斷是否是一個存在的文件
sFilename = "文件" & sTheFile & " 不存在!"
Exit Sub
Else
sFilename = sTheFile
注釋: nNum = nNum + 1
End If
注釋: Stop
sAlias = sFilename 注釋:用文件名作別名,避免別名沖突!
注釋: 判斷文件類型
Select Case UCase$(Right$(sTheFile, 3))
Case "WAV"
sType = "Waveaudio"
Case "AVI"
sType = "AviVideo"
Case "MID"
sType = "Sequencer"
Case Else
注釋: 未知文件格式,退出。
Exit Sub
End Select
If sType = "AviVideo" And hWnd > 0 Then
nReturn = mciSendString("open " & sTheFile & " ALIAS " & sAlias _
& " TYPE AVIVideo parent " & hWnd & " style " & LTrim$(Str$(WS_CHILD)), 0&, 0, 0)
Else
nReturn = mciSendString("Open " & sTheFile & " ALIAS " & sAlias _
& " TYPE " & sType, "", 0, 0)
End If
End Sub
注釋:關閉當前打開的多媒體文件
Public Sub mmClose()
Dim nReturn As Long
注釋:如果沒有文件打開,則退出
If sAlias = "" Then Exit Sub
nReturn = mciSendString("Close " & sAlias, "", 0, 0)
sAlias = ""
sFilename = ""
End Sub
注釋:暫停
Public Sub mmPause()
Dim nReturn As Long
If sAlias = "" Then
Exit Sub
ElseIf Status = "paused" Then 注釋:如果先前已經(jīng)暫停了,則解除暫停
mmPlay
Else
nReturn = mciSendString("Pause " & sAlias, "", 0, 0)
End If
注釋:nPosition = Position
End Sub
注釋:播放
Public Sub mmPlay()
Dim nReturn As Long
If sAlias = "" Then
Exit Sub
ElseIf Position = Length Then 注釋:如果已經(jīng)到末尾
mmSeek 0 注釋:跳到開始處
End If
If bWait Then
nReturn = mciSendString("Play " & sAlias & " wait", "", 0, 0)
Else
nReturn = mciSendString("Play " & sAlias, "", 0, 0)
End If
End Sub
注釋:停止
注釋:停止后跳到開始,以便再次播放
Public Sub mmStop()
Dim nReturn As Long
If sAlias = "" Then Exit Sub
nReturn = mciSendString("Stop " & sAlias, "", 0, 0)
mmSeek 0 注釋:跳到開始位置
End Sub