如何用VB实现背景音乐

泥娃 2002-01-06 07:31:58
实现循环播放WAV MIDI MP3 的音乐文件?
...全文
742 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zym1110 2002-01-07
  • 打赏
  • 举报
回复
没法播放mp3
泥娃 2002-01-07
  • 打赏
  • 举报
回复
to : jq(b_wind) 
可不可以用回调函数?怎么用?
泥娃 2002-01-07
  • 打赏
  • 举报
回复
to : jq(b_wind) 
是不是还要加个定时器?判断Mmavi.Status ?
分太少,我可以加。

盼复!!!!!!!!!!!!!!!!!!!!
泥娃 2002-01-07
  • 打赏
  • 举报
回复
to : jq(b_wind) 
俺试试,成功了就给你分
workboy 2002-01-06
  • 打赏
  • 举报
回复
用mmcontrol就可以了,然后不让显示,判断mode ,达到循环播放
wjq 2002-01-06
  • 打赏
  • 举报
回复
用下面这个类:


首先将下列代码存为一个类模块:
Option Explicit

'-----------------------------------------------------
'文件名: MMedia.cls
'说明: : 一个多媒体类,能播放Avi、Wave、Midi文件
'用法:
'Dim Multimedia As New Mmedia
'Multimedia.mmOpen "c:\test.wav"
'Multimedia.mmPlay
'-----------------------------------------------------

' -=-=-=- 属性 -=-=-=-
' sFilename 当前的文件名
' nLength 文件长度(只读)
' nPosition 当前位置
' sStatus 当前状态(只读)
' bWait True/False.决定是否等待播放完

' -=-=-=- 方法 -=-=-=-=-
' mmOpen <Filename> 打开要播放的文件
' mmClose 关闭当前文件
' mmPause 暂停
' mmStop 停止 停止后可以跳到开始再次播放
' mmSeek <Position> 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

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 '如果先前已经暂停了,则解除暂停
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 '如果已经到末尾
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

'跳到指定的位置,并且处于暂停状态
'当nPosition的值>Length 或者nPosition<0时,将忽略这次操作
Public Sub mmSeek(ByVal nPosition As Single)

Dim nReturn As Long
nReturn = mciSendString("Seek " & sAlias & " to " & nPosition, "", 0, 0)

End Sub

'方法Filename返回当前打开的文件名
Property Get filename() As String
filename = sFilename
End Property

'指定要播放的文件名,然后将它打开
'对于需要指定容器的Avi文件,不要以这种方式打开。
Property Let filename(ByVal sTheFile As String)

mmOpen sTheFile
End Property

'读取属性Wait的值
'Msgbox Multimedia.Wait
Property Get Wait() As Boolean
Wait = bWait
End Property

'设置等待属性
'用法:Multimedia.Wait=True
Property Let Wait(bWaitValue As Boolean)

bWait = bWaitValue
End Property

'获得长度值
Property Get Length() As Single

Dim nReturn As Long, nLength As Integer

Dim sLength As String * 255

If sAlias = "" Then
Length = 0
Exit Property
End If

nReturn = mciSendString("Status " & sAlias & " length", sLength, 255, 0)
nLength = InStr(sLength, Chr$(0))
Length = Val(Left$(sLength, nLength - 1))
End Property

Property Let Position(ByVal nPosition As Single)
mmSeek nPosition
End Property

'获取当前位置
Property Get Position() As Single

Dim nReturn As Integer, nLength As Integer

Dim sPosition As String * 255

If sAlias = "" Then Exit Property


nReturn = mciSendString("Status " & sAlias & " position", sPosition, 255, 0)
nLength = InStr(sPosition, Chr$(0))
Position = Val(Left$(sPosition, nLength - 1))

End Property

'当前打开文件的状态
'有以下几种:playing paused stopped
Property Get Status() As String

Dim nReturn As Integer, nLength As Integer
Dim sStatus As String * 255


If sAlias = "" Then Exit Property

nReturn = mciSendString("Status " & sAlias & " mode", sStatus, 255, 0)

nLength = InStr(sStatus, Chr$(0))
Status = Left$(sStatus, nLength - 1)

End Property

'从头开始播放
Public Sub mmRestart()
Dim nReturn As Long

If sAlias = "" Then Exit Sub

mmSeek 0
mmPlay
End Sub

'类的初始化
Private Sub Class_Initialize()
' sAlias = "" '别名初值为空
End Sub

'关闭打开的多媒体设备
'当该类的对象所在的窗体(或模块)卸载时,自动调用该过程
Private Sub Class_Terminate()
mmClose
End Sub
'——————————————————————————————
在窗体中加入:
private MmAvi As New Mmedia
MmAvi.mmOpen "D:\地球.avi", Form1.hWnd
MmAvi.mmPlay
不过最好的办法是将动画放入一个Picturebox或frame中,
MmAvi.mmOpen "D:\地球.avi", frame1.hwnd
这样调整它们的位置比较方便
甚至可以将动画放入一个圆形的区域播放。
wxm322000 2002-01-06
  • 打赏
  • 举报
回复
???
程序最新版请点击:http://blog.putaot.cn/?post=55 功能: 1.可以更换背景图片,并保留 2.可以更换字体颜色,并保留 3.真正实现搜索音乐,搜索到的音乐可以试听,可以添加到列表 4.只要你提供歌曲名和歌手名就可以播放音乐的超级播放器! 5.实现托盘的使用 6.实现文件类型的关联(程序方面还没有做好这个功能,但是可以把歌集文件(.yyu)拉到播放器图标中) 7.实现禁止多开,同时可以让播放器获得焦点 8.可以更换标题 9.更多功能由你发现! 下面是程序的下载地址: http://pan.baidu.com/share/link?shareid=956078571&uk=4161313552 2014-01-19 更新!↓ 1.歌集编辑界面的背景图片同步主界面 更加相称 2.音乐搜索引擎全面更换,更改为搜狗音乐搜索,搜索速度加快 3.主界面去掉头像图片移动歌曲信息的展现位置,界面更加简洁 4.修正主界面播放与歌集编辑界面不同步问题! 5.修正主界面和歌集界面已知的bug 6.歌集编辑界面增加对单条歌曲的编辑 7.歌集界面解决单条歌曲无法删除问题 8.歌曲搜索界面完善“添加到歌集”“创建新歌集”功能。 9.歌曲界面删除“下载所选”“播放所选”功能 10.优化程序逻辑,优化利用百度API获得播放地址的模块 11.优化变量传递模式 2014-01-19 随心听.rar 源码下载地址:http://pan.baidu.com/s/1hql2IpQ 程序下载地址:http://pan.baidu.com/s/1hqiKRnY

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧