日期:2009-11-16 浏览次数:20487 次
我们用VB编写应用程序时常会使用MMControl控件来控制背景音乐,虽然MMControl控件提供了检测媒体播放完毕的Done事件和相应的Notify和Wait属性,但实际应用时仍可能会发生问题。
当我们在背景音乐的播放过程中按下“暂停”(应用程序应该提供给用户“暂停”键)时,MMControl的Done事件往往就不好用了,以至音乐播放完毕不能触发下一轮音乐重新播放。本人通过实践总结出如下的方法,不仅解决了这一问题,还保证了背景音乐暂停播放后再继续播放时能接上暂停时的位置。
示例中的变量YINYUE0和YINYUE为窗体级整型变量,前者用以记录暂停时音乐播放的位置,后者用以记录该首音乐总长度。
Private Sub 音乐_Click()
'音乐开关(用菜单控制)
If 音乐.Checked = False Then
音乐.Checked = True
Else
音乐.Checked = False
YINYUE0 = MMControl1.Position
'记忆音乐播放到的位置
End If
MMControl1.Command = "CLOSE"
If 音乐.Checked = True Then 背景音乐
End Sub
Private Sub MMControl1_Done(NotifyCode As Integer)
If 音乐.Checked = True Then
If MMControl1.Position = YINYUELEN Then 背景音乐
YINYUELEN0 = 0
End If
End Sub
Private Sub 背景音乐()
'子程序
MMControl1.FileName = "mid.mid"
MMControl1.Command = "OPEN"
YINYUELEN = MMControl1.Length
MMControl1.From = YINYUELEN0
MMControl1.Notify = True
MMControl1.Wait = False
MMControl1.Command = "PLAY"
YINYUELEN0 = 0
End Sub