|
WWW.DBIT.CN 2006-9-5 0:41:38 热度: |
|
|
Csdn上已经有好多朋友问过诸如: “如何播放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:\test.wav" 'Multimedia.mmPlay '!记住:在程序结束时,一定要用Set Multimedia=nothing释放资源!!! '----------------------------------------------------- ' -=-=-=- 属性 -=-=-=- ' sFilename 当前的文件名 ' nLength 文件长度(只读) ' nPosition 当前位置 ' sStatus 当前状态(只读) ' 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 ' 当前状态 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文件时,参数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 |
|
|
|
|
|
|
|
|
|