VB开发中背景音乐的制作

VB开发中背景音乐的制作

http://www.sina.com.cn 2001/04/23 17:09 中国电脑教育报 武正伦

  背景音乐不仅在软件中起到“声”、“文”并茂的效果,而且能使用户减少在漫长的计算、等待过程中所带来的困倦和烦躁情绪,我们将通过用Microsoft Visual Basic开发为例,来讲解背景音乐在软件中的应用。

  使用Microsoft Visual Basic进行多媒体音乐的播放是一件非常容易的事情。Microsoft Windows系统中支持两种声音文件:WAV格式文件和MIDI格式文件,一般使用API(Window

<script language=JavaScript1.1 src="http://ad.doubleclick.net/adj/minisite.sina.com.cn/tech;sz=1x1;num=28729036424615452?"> </script>
s应用程序编程接口)函数sndPlaySound播放WAV格式文件,使用mciExecute函数来播放MIDI文件。

  1、播放WAV格式文件

  要播放WAV格式文件,你必须在程序窗口的通用声明部分或标准模块中添加如下的声明:

  Public Const SND_SYNC = &&H0

  Public Const SND_ASYNC = &&H1

  Public Const SND_NODEFAULT = &&H2

  Public Const SND_MEMORY = &&H4

  Public Const SND_ALIAS = &&H10000

  Public Const SND_FILENAME = &&H20000

  Public Const SND_RESOURCE = &&H40004

  Public Const SND_ALIAS_ID = &&H110000

  Public Const SND_ALIAS_START = 0

  Public Const SND_LOOP = &&H8

  Public Const SND_NOSTOP = &&H10

  Public Const SND_VALID = &&H1F

  Public Const SND_NOWAIT = &&H2000

  Public Const SND_VALIDFLAGS = &&H17201F

  Public Const SND_RESERVED = &&HFF000000

  Public Const SND_TYPE_MASK = &&H170007

  Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

  sndPlaySound函数需要两个参数:第一个参数soundfilename是要播放的WAV文件的名称;第二个参数是一个表明播放方式的标识常量,其定义的值如前面的声明所示,通常所使用的标识意义如下:

  SND_SYNC播放WAV格式文件,播放完毕后将控制转移回应用中。

  SND_ASYNC播放WAV格式文件,将控制立即转移回应用程序中,而不管对WAV文件的播放是否结束。

  SND_MEMORY用于播放以前已经加载到内存中的WAV格式文件。

  SND_LOOP循环播放WAV格式文件。

  注意:SND_LOOP标识通常需要同SND_ASYNC共同使用,也即在两个标识之间添加“与”播放符,以免在对WAV格式文件进行播放的时候将系统挂起。

  2、播放MIDI格式文件

  播放MIDI格式文件时,你必须在程序窗口的通用声明部分中或标准模块中添加如下的声明语句:

  Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long

  API函数mciExecute只有一个参数:CommandString,它是一个命令字符串,用于表明对声音文件播放的命令,例如,要完整播放声音文件“C:WindowsMediaCanyon.mid”,只需要用以下一些语句即可实现:

  Dim ReturnValue As Long

  ReturnSoundValue = mciExecute("play C:WindowsMediaCanyon.mid")

  如果只播放MIDI格式文件的部分,就可以使用from...to...这种语句格式,例如:需要播放CANYON.MID文件的20毫秒到500毫秒的部分,可以使用如下的语句:

  Dim ReturnValue As Long

  ReturnSoundValue = mciExecute("play C: WINDOWS MEDIACANYON.MID from 20 to 500")

  使用API函数mciExecute也可以用来对WAV格式文件进行播放,方法同播放MIDI基本一样。现举列如下:

  1、在Visual Basic应用窗体中加入以下声明:

  Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

  Const SND_SYNC = &&H0

  Const SND_ASYNC = &&H1

  Const SND_NODEFAULT = &&H2

  Const SND_MEMORY = &&H4

  Const SND_ALIAS = &&H10000

  Const SND_FILENAME = &&H20000

  Const SND_RESOURCE = &&H40004

  Const SND_ALIAS_ID = &&H110000

  Const SND_ALIAS_START = 0

  Const SND_LOOP = &&H8

  Const SND_NOSTOP = &&H10

  Const SND_VALID = &&H1F

  Const SND_NOWAIT = &&H2000

  Const SND_VALIDFLAGS = &&H17201F

  Const SND_RESERVED = &&HFF000000

  Const SND_TYPE_MASK = &&H170007

  Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long

  2、在窗中激活事件中加入以下代码:

  Private Sub Form_Activate()

  Dim ReturnValue As Long

  ReturnValue = sndPlaySound("C:windowsMEDIATADA.WAV",SND_SYNC)End Sub

  通过(F5)键来运行该程度即可听到背景音乐。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB电子相册 电子相册 1、数据库连接 Public conn As ADODB.Connection Public Sub conDB() Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & App.Path & "\data\pic.mdb" conn.Open End Sub 2、登录模块 Dim loginTimes As Integer Private rsmc As ADODB.Recordset Private rs As ADODB.Recordset Public userName As String Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdOK_Click() Call login End Sub Private Sub Form_Activate() Call conDB Set rsmc = New ADODB.Recordset rsmc.CursorLocation = adUseClient rsmc.Open "用户信息表", conn, 0, 1 'need to learn cbUserName.Clear While Not rsmc.EOF cbUserName.AddItem rsmc.Fields("用户名") rsmc.MoveNext Wend cbUserName.SetFocus tbPwd.Text = "" cbUserName.Refresh End Sub Private Sub Form_Unload(Cancel As Integer) conn.Close Set rs = Nothing End Sub Sub login() Dim strSql As String userName = "" If Trim(cbUserName.Text) = "" Then MsgBox "用户名不用为空,请选择用户名!", vbOKOnly + vbExclamation, "警告" cbUserName.SetFocus Else strSql = "select * from 用户信息表 where 用户名='" & Trim(cbUserName.Text) & "'" Set rs = New ADODB.Recordset rs.Open strSql, conn, 2, 2 If Trim(rs.Fields("密码")) = Trim(tbPwd.Text) Then rs.Close Me.Hide userName = Trim(cbUserName.Text) 'Load frmMain frmMain.Show Exit Sub Else MsgBox "密码不对,请重新输入!", vbOKOnly + vbExclamation, "警告" tbPwd.Text = "" tbPwd.SetFocus End If loginTimes = loginTimes + 1 If loginTimes = 3 Then MsgBox "密码错误已有3次,你不能进入系统!", vbOKOnly + vbQuestion, "提示" Unload Me End If End If End Sub 3、主模块 Private rs As ADODB.Recordset Dim stuNum As Integer Private Sub Form_Activate() Call conDB End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) conn.Close Set conn = Nothing End Sub Private Sub mnuAddPic_Click() frmAddPic.Show End Sub Private Sub mnuDeletePic_Click() frmDeletePic.Show End Sub Private Sub mnuShowpic_Click() frmShow.Show End Sub Private Sub mnuExit_Click() Unload Me End End Sub Private Sub mnuSMPic_Click() frmSMPic.Show End Sub Private Sub mnuUser_Click() Dim frm1 As New frmUser frm1.Show End Sub 4、显示图片模块 Dim str As String Dim rs As ADODB.Recordset Dim rsNum As Integer Dim nextNum As Integer Private Sub cbPic_Click() str = App.Path + "\" Set rs = New ADODB.Recordset Dim strConn As String strConn = "select * from pic where name='" + Trim(cbPic.Text) + "'" rs.Open strConn, conn, 0, 1 str = str + rs.Fields("address").Value 'MsgBox str Image1.Picture = LoadPicture(str) rs.Close End Sub Private Sub CmdNext_Click() nextNum = nextNum + 1 'MsgBox nextNum If nextNum > rsNum - 1 Then nextNum = 0 'MsgBox nextNum End If Dim temp As Integer temp = nextNum Set rs = New ADODB.Recordset rs.Open "pic", conn, 0, 1 ' rs.MoveFirst ' While Not rs.EOF And temp > 0 ' 'rs.MoveNext ' 'temp = temp - 1' ' Wend rs.Move (temp) str = App.Path + "\" str = str + rs.Fields("address").Value cbPic.Text = rs.Fields("name").Value Image1.Picture = LoadPicture(str) rs.Close End Sub Private Sub Form_Load() Call conDB str = App.Path + "\" nextNum = 0 Set rs = New ADODB.Recordset rs.Open "pic", conn, 0, 1 str = str + rs.Fields("address").Value Image1.Picture = LoadPicture(str) cbPic.Clear rsNum = 0 'MsgBox rsNum rs.MoveFirst While Not rs.EOF cbPic.AddItem rs.Fields("name") rsNum = rsNum + 1 rs.MoveNext Wend cbPic.Text = "tu1" rs.Close End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值