如何给窗体加上背景音乐?

kevingarnett 2002-10-12 04:49:22
如何给窗体加上背景音乐?
格式是MIDI和MP3都可以
...全文
124 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevingarnett 2002-10-13
  • 打赏
  • 举报
回复
UP
kevingarnett 2002-10-13
  • 打赏
  • 举报
回复
MultiMedia Control是VB里直接提供的还是要去下载的?
tyronelg 2002-10-13
  • 打赏
  • 举报
回复
MultiMedia Control
chanet 2002-10-13
  • 打赏
  • 举报
回复
太麻烦了!

引用控件用播放不可以吗?
kevingarnett 2002-10-12
  • 打赏
  • 举报
回复
除了这几个办法,还有别的吗?
只用MIDI做背景音乐,如果能用MP3也可以
griefforyou 2002-10-12
  • 打赏
  • 举报
回复
'我的播放音乐的模块
'Model process sound play
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
Public Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

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 mciSendCommand Lib "winmm.dll" Alias "mciSendCommandA" (ByVal wDeviceID As Long, ByVal uMessage As Long, ByVal dwParam1 As Long, ByVal dwParam2 As Any) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Private Declare Function MessageBeep Lib "user32" (ByVal wType As Long) As Long

Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2

Public PlayError As Boolean

'测试是否安装了声卡
Public Function TestSound() As Boolean
Dim Ret As Long
Ret& = waveOutGetNumDevs
If Ret > 0 Then
TestSound = True
Else
TestSound = False
End If
'TestSound = False
End Function

'播放wav声音文件
Public Sub PlaySound(FileName As String, Optional Flag As Long = (SND_ASYNC Or SND_NODEFAULT))
Dim Ret As Long
Ret = sndPlaySound(FileName, Flag)
If Ret = 0 And Flag = (SND_ASYNC Or SND_NODEFAULT) Then
MessageBeep 0
End If
End Sub

'播放音乐mp3,wav,mid等
Public Sub PlayMusic(FileName As String)
Dim Buffer As String * 128
Dim Ret As Long
Dim PlayStatus As String * 20
Dim ShortFileName As String
mciExecute "close all"
If Dir(FileName) = "" Then PlayError = True: Exit Sub
ShortFileName = ShortName(FileName)
mciSendString "open " & ShortFileName & " alias mp3", Buffer, Ret, 0
mciSendString "play mp3", Buffer, Ret, 0
PlayError = False
End Sub

Public Sub StopMusic()
Dim Buffer As String * 128
Dim Ret As Long
mciSendString "stop mp3", Buffer, Ret, 0
End Sub

Public Function GetPlayMode() As String
Dim Buffer As String * 128
Dim pos As Integer
mciSendString "status mp3 mode", Buffer, 128, 0&
pos = InStr(Buffer, Chr(0))
GetPlayMode = Left(Buffer, pos - 1)
End Function

'从带路径文件名中提取文件名
Public Function GetFileNameNoPath(sFullPathFileName As String) As String
Dim pos As Integer
Dim DifFilename As String
If sFullPathFileName = "" Then Exit Function
DifFilename = StrReverse(sFullPathFileName)
pos = InStr(1, DifFilename, "\")
If pos <> -1 Then
GetFileNameNoPath = Right(sFullPathFileName, pos - 1)
Else
GetFileNameNoPath = sFullPathFileName
End If
End Function

'得到文件短文件名
Function ShortName(LongPath As String) As String
Dim ShortPath As String
Dim pos As String
Dim Ret As Long
Const MAX_PATH = 260
If LongPath = "" Then Exit Function
ShortPath = Space$(MAX_PATH)
Ret& = GetShortPathName(LongPath, ShortPath, MAX_PATH)
If Ret& Then
pos = InStr(1, ShortPath, " ")
ShortName = Left$(ShortPath, pos - 2)
End If
End Function
hycao 2002-10-12
  • 打赏
  • 举报
回复
(下面的文字是网上摘录的)
以下是王国荣、郑郁霖先生的文章,Copy下来当作自己的备忘录,本人对midi全然不知,
网友有问题时,请向他们询问。

利用多媒体的 mciSendString API 函数, 再搭配 mci(multimedia control interface) 指令, 即
可播放 .wav 声音档, 细节如下:

1. API 的宣告:

Declare Function mciSendString Lib "Winmm.dll" Alias "mciSendStringA"_
(ByVal Command As String,_
ByVal ReturnString As String,_
ByVal ReturnLength As Long,_
ByVal Callback As Long) As Long

Command : MCI 的命令字串

open = 开启设备:设备名 [type 设备型式][alias 别名]
close = 关闭设备:设备名
play = 播放档案:设备名 [from 起点][to 终点]
pause = 暂停档案
resume = 取消暂停档案
seek = 直接移到:设备名 [to 位置 | to start | to end]
stop = 停止拨放:设备名




2. 程式范例:

开启档案
Call mciSendString("open c:\wavs\3ucheng.mid waveaudio alias song",0,0,0)
播放音乐
Call mciSendString("play song",0,0,0)

' 撰写播放声音的一副程式
Sub PlaySound(filename)
Dim cmd As String
Call mciSendString("close MyWav", 0, 0, 0) ' MyWav 这个名称可依需要来修改
cmd = "open " & filename & " type WAVEAudio alias MyWav"
'去掉 上面中的 type WAVEAudio, 则该副程式便可用来播放 midi 音乐档。
Call mciSendString(cmd, 0, 0, 0)
Call mciSendString("play MyWav", 0, 0, 0)
End Sub

' 假设要拨放 "c:\windows\Tada.wav"
PlaySound "c:\windows\Tada.wav"

播放 .flc 动画档案的方法与 .wav 及 .midi 并没有什麽不同,最後完成的程式大致如下:

Sub PlaySound(filename)
Dim cmd As String
Call mciSendString("close MyFlc", 0, 0, 0) ' MyFlc 这个名称可依需要来修改
cmd = "open " & filename & " alias MyFlc"
Call mciSendString(cmd, 0, 0, 0)
Call mciSendString("play MyFlc", 0, 0, 0)
End Sub

注:有些机器可能会因为没有安装 .flc 的驱动程式而无法播放,欲检查机器中是否安装有
播放 .flc 的驱动程式, 可先利用 Windows 提供的媒体播放程式播放 .flc 档案看看。

假设我们想将 .flc 放在 Picture1 之中播放, 则必须将 open MCI 指令由原先的:

"open " & filename & " alias MyFlc" 改成:
"open " & filename & " alias MyFlc parent " & Picture1.hWnd & " style " & WS_CHILD

则 .flc 就会在 Picture1 之中播放。

注:WS_CHILD 等於 &H40000000。

jamesfay 2002-10-12
  • 打赏
  • 举报
回复
MultiMedia Control 可以方Mp3 wav au
EpopeeLei 2002-10-12
  • 打赏
  • 举报
回复
要是只有MIDI的话,MultiMedia Control就可以了。
kevingarnett 2002-10-12
  • 打赏
  • 举报
回复
再加40分,能不能给说明下,
或者有没有不用API就可以的?
kevingarnett 2002-10-12
  • 打赏
  • 举报
回复
UP!~
kevingarnett 2002-10-12
  • 打赏
  • 举报
回复
我是菜鸟,
能给注释一下吗?
谢了!!
hycao 2002-10-12
  • 打赏
  • 举报
回复
Option Explicit

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 Sub Command1_Click()
mciSendString "open c:\Aria.mid alias myMIDI", vbNullString, 0, 0
mciSendString "play myMIDI", vbNullString, 0, 0
End Sub

Private Sub Command2_Click()
mciSendString "close myMIDI", vbNullString, 0, 0
End Sub

Private Sub Form_Unload(Cancel As Integer)
mciSendString "close myMIDI", vbNullString, 0, 0
End Sub

7,759

社区成员

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

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