Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Const SND_ASYNC = &H1 '异步播放,否则就独占播放
Private Const SND_NODEFAULT = &H2 '不使用缺省声音
Private Const SND_MEMORY = &H4 '指向一个内存文件
Private Const SND_FILENAME = &H20000 '指向一个实际文件
Private Const SND_LOOP = &H8 '循环播放
Private Const SND_ALIAS_START = 0 '结束播放
Dim B() As BytePrivate Sub Command1_Click() '播放
B = LoadResData(101, "CUSTOM")
sndPlaySound B(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY Or SND_LOOP
End SubPrivate Sub Command2_Click() '停止
sndPlaySound B(0), SND_ALIAS_START
End Sub
两个问题:
1.启动程序后,先不点击 Command1(即不播放)而点一下 Command2(停止),则“实时错误:9.下标越界。”
2.启动程序后,点击 Command1(播放),在播放之中点Command2(停止),但停止语句无效。
查网上资料找不到解决办法。刚接触vb,请VB高人指点一下。
Private Const SND_ASYNC = &H1 '异步播放,否则就独占播放
Private Const SND_NODEFAULT = &H2 '不使用缺省声音
Private Const SND_MEMORY = &H4 '指向一个内存文件
Private Const SND_FILENAME = &H20000 '指向一个实际文件
Private Const SND_LOOP = &H8 '循环播放
Private Const SND_ALIAS_START = 0 '结束播放
Dim B() As BytePrivate Sub Command1_Click() '播放
B = LoadResData(101, "CUSTOM")
sndPlaySound B(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY Or SND_LOOP
End SubPrivate Sub Command2_Click() '停止
sndPlaySound B(0), SND_ALIAS_START
End Sub
两个问题:
1.启动程序后,先不点击 Command1(即不播放)而点一下 Command2(停止),则“实时错误:9.下标越界。”
2.启动程序后,点击 Command1(播放),在播放之中点Command2(停止),但停止语句无效。
查网上资料找不到解决办法。刚接触vb,请VB高人指点一下。
http://download.csdn.net/source/3050780
Option ExplicitPrivate Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long 'API判断数组为空或没有初始化Private Const SND_ASYNC = &H1 '异步播放,否则就独占播放
Private Const SND_NODEFAULT = &H2 '不使用缺省声音
Private Const SND_MEMORY = &H4 '指向一个内存文件
Private Const SND_FILENAME = &H20000 '指向一个实际文件
Private Const SND_LOOP = &H8 '循环播放
Private Const SND_ALIAS_START = 0 '结束播放Dim B() As Byte
Dim IniArray As Long '判断数组B()是否初始化Private Sub Command1_Click() '播放
B = LoadResData(101, "CUSTOM")
IniArray = SafeArrayGetDim(B)
sndPlaySound B(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY Or SND_LOOP
End SubPrivate Sub Command2_Click() '停止
If IniArray > 0 Then sndPlaySound B(0), SND_ALIAS_START
End Sub
Option ExplicitPrivate Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long 'API判断数组为空或没有初始化Private Const SND_ASYNC = &H1 '异步播放,否则就独占播放
Private Const SND_NODEFAULT = &H2 '不使用缺省声音
Private Const SND_MEMORY = &H4 '指向一个内存文件
Private Const SND_FILENAME = &H20000 '指向一个实际文件
Private Const SND_LOOP = &H8 '循环播放
Private Const SND_ALIAS_START = 0 '结束播放Dim B() As Byte
Dim IniArray As Long '判断数组B()是否初始化Private Sub PlayMP3() '播放内存资源文件
B = LoadResData(101, "CUSTOM") '101是自定义资源号,CUSTOM是自定义的资源类型
IniArray = SafeArrayGetDim(B)
If IniArray > 0 Then
sndPlaySound B(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY Or SND_LOOP
MsgBox "按确定后解除警报!", vbOKOnly + vbCritical + vbSystemModal, "报警提示"
End If
If IniArray > 0 Then sndPlaySound B(0), SND_ALIAS_START '停止播放
'sndPlaySound vbNullString, SND_ALIAS_START
End SubPrivate Sub Command1_Click()
PlayMP3
End Sub'End Sub