做了一个播放wav的东西,程序代码如下:在form的代码里
Private Sub broadcast_Click()
Dim now As Integer
Dim out_or_in As Integer
Dim dir As Integer
now = Int(nowStat.Text)
out_or_in = Int(outin.Text)
dir = Int(Dire.Text)
Call Brc(now, out_or_in, dir)
End Sub另外在一个模块中定义的函数:
Public Function Brc(nowStation As Integer, outorin As Integer, Direction As Integer)
Dim wavpath As String
Dim brcpath As String
Set Voice = New SpVoice
wavpath = App.Path + "\wav\"
Select Case nowStation
Case 1
If outorin = 1 Then
If Direction = 1 Then
brcpath = wavpath + "111c.wav"
Voice.Speak brcpath, SVSFIsFilename Or SVSFlagsAsync
brcpath = wavpath + "111e.wav"
Voice.Speak brcpath, SVSFIsFilename Or SVSFlagsAsync
End If
End If
End Select
End Function现在的问题是如果把函数Brc放到form的代码里,播放可以正常执行,可是如果把Brc放到模块中,执行的时候不能播放声音
经过单步调试,发现播放的语句可以正常执行,必须给这个语句足够的时间执行,当执行的代码从模块返回form中的代码的时候,wav的播放就停止了,怎么解决呢?(因为程序执行速度很快,Brc函数很快就执行完了,跳回form的按钮事件里面去,而wav播放完毕需要10秒左右。)
Private Sub broadcast_Click()
Dim now As Integer
Dim out_or_in As Integer
Dim dir As Integer
now = Int(nowStat.Text)
out_or_in = Int(outin.Text)
dir = Int(Dire.Text)
Call Brc(now, out_or_in, dir)
End Sub另外在一个模块中定义的函数:
Public Function Brc(nowStation As Integer, outorin As Integer, Direction As Integer)
Dim wavpath As String
Dim brcpath As String
Set Voice = New SpVoice
wavpath = App.Path + "\wav\"
Select Case nowStation
Case 1
If outorin = 1 Then
If Direction = 1 Then
brcpath = wavpath + "111c.wav"
Voice.Speak brcpath, SVSFIsFilename Or SVSFlagsAsync
brcpath = wavpath + "111e.wav"
Voice.Speak brcpath, SVSFIsFilename Or SVSFlagsAsync
End If
End If
End Select
End Function现在的问题是如果把函数Brc放到form的代码里,播放可以正常执行,可是如果把Brc放到模块中,执行的时候不能播放声音
经过单步调试,发现播放的语句可以正常执行,必须给这个语句足够的时间执行,当执行的代码从模块返回form中的代码的时候,wav的播放就停止了,怎么解决呢?(因为程序执行速度很快,Brc函数很快就执行完了,跳回form的按钮事件里面去,而wav播放完毕需要10秒左右。)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货