日期:2009-11-16  浏览次数:20439 次

我们用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