Exit Sub End If If fIsPaused Then '当前处于暂停状态 '获得暂停位置 Offset = lMTime - GetStartTime + Offset + 1 '设置开始播放点为暂停位置 Call objDMSeg.SetStartPoint(Offset) '播放MIDI Set objDMSegSt = objDMPerf.PlaySegment(objDMSeg, 0, 0) fIsPaused = False Sleep (90) Else Offset = 0 If objDMPerf.IsPlaying(objDMSeg, objDMSegSt) = True Then '停止播放 Call objDMPerf.Stop(objDMSeg, objDMSegSt, 0, 0) End If objDMSeg.SetStartPoint (0) Set objDMSegSt = objDMPerf.PlaySegment(objDMSeg, 0, 0) Sleep (90) End If Command2.Enabled = False Command3.Enabled = True Command4.Enabled = True End Sub Private Sub Command3_Click() On Error GoTo LocalErrors If objDMSeg Is Nothing Then Exit Sub If objDMPerf.IsPlaying(objDMSeg, objDMSegSt) = True Then fIsPaused = True '获得已经播放的长度 lMTime = objDMPerf.GetMusicTime() GetStartTime = objDMSegSt.GetStartTime() Call objDMPerf.Stop(objDMSeg, Nothing, 0, 0) End If Command2.Enabled = True Command3.Enabled = False Command4.Enabled = False Exit Sub LocalErrors: Call Err.Raise(Err.Number, Err.Source, Err.Description) End Sub Private Sub Command4_Click() If objDMSeg Is Nothing Then Exit Sub End If fIsPaused = False '停止播放MIDI文件 Call objDMPerf.Stop(objDMSeg, objDMSegSt, 0, 0) End Sub Private Sub Form_Load() Me.Show '建立DirectMusicLoader对象 Set objDMLoader = objDX.DirectMusicLoaderCreate '建立DirectMusicPerformance对象 Set objDMPerf = objDX.DirectMusicPerformanceCreate '初始化DirectMusicPerformance对象 objDMPerf.Init Nothing, 0 objDMPerf.SetPort -1, 80 objDMPerf.SetMasterAutoDownload (True) objDMPerf.SetMasterVolume (-700) Command1.Caption = "打开MIDI文件" Command2.Caption = "播放" Command3.Caption = "暂停" Command4.Caption = "停止" Command2.Enabled = False Command3.Enabled = False Command4.Enabled = False Label1.Caption = "" Label2.Caption = "" Label3.Caption = "" Timer1.Interval = 100 Timer1.Enabled = False End Sub Private Sub Form_Unload(Cancel As Integer) Set objDMSegSt = Nothing Set objDMSeg = Nothing Set objDMPerf = Nothing Set objDMLoader = Nothing End End Sub Private Sub Timer1_Timer() GetTimePassed Label1.Caption = "MIDI播放时间:" + ElapsedTime + " 总时间:" + sAllTime End Sub 运行程序,点击"打开MIDI文件"文件按钮打开一个MIDI文件,点击"播放"按钮播放文件,点击"暂停"按钮暂停播放,点击"停止"按钮停止播放。 上面的程序比较的简单,我就不做讲解了,大家可以自己分析。 由于DirectX编程是绕开了操作系统而直接对硬件进行操作,所以在编程过程中一定要比较的小心谨慎,由于Windows2000提供了对于DirectX的支持,如果有可能的化最好在Windows2000下编写,上面的程序就是我在Windows2000下编写运行调试后再在Windows98下检验的。
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
上一篇:用VB6.0设计一个打字练习软件
下一篇:VB+VC混合编程疑难问题解