《《Visual Basic程序设计教程(第3版)》第8章多媒体编程基础》由会员分享,可在线阅读,更多相关《《Visual Basic程序设计教程(第3版)》第8章多媒体编程基础(34页珍藏版)》请在金锄头文库上搜索。
1、Click to edit Master title style,Click to edit Master text style,Second level,Third level,Forth level,Fifth level,*,*,Click to edit Master title style,Click to edit Master text style,Second level,Third level,Forth level,Fifth level,*,*,Visual Basic程序设计教程(第3版),第,8,章 多媒体编程基础,第,8,章 多媒体编程基础,2,8.1 多媒体控件,
2、8.2 调用API函数设计多媒体应用程序,8.3 应用OLE开发多媒体应用程序,8.4 应用案例与设计简单视频播放器的设计,8.1,多媒体控件,1,Mmcontrol,控件的添加,Mmcontrol,控件不是标准控件,并没有放在工具箱上,而是以名为,MCI32.ocx,的文件形式,存放在,WindowsSystem,子目录下,在使用前需把它加载到工具箱上,2,Mmcontrol,控件的用途,Mmcontrol,控件是一个支持,32,位操作的多媒体控件,使用它无须介入实际的设备,就可以操纵所有的多媒体设备。,8.1,多媒体控件,(,续,),图,8.1 Mmcontrol,控件,8.1,多媒体控件
3、,(,续,),3,Mmcontrol,控件的常用属性,Devicetype,属性,Filename,属性,Command,属性,Length,属性,From,与,To,属性,Position,属性,Notify,属性,UpdateInterval,属性,8.1,多媒体控件,(,续,),4,Mmcontrol,控件的事件响应,Click,事件,GotFocus,事件,LostFocus,事件,Done,事件,StatusUpdate,事件,5,使用,Mmcontrol,控件的编程方法,8.1,多媒体控件,(,续,),【,例,8.1】,用,Mmcontrol,控件的多媒体功能设计一个播放声音、,M
4、IDI,文件的播放器,,并具有自动重播和显示进度的功能。,(,1,)在窗体上创建一个,Mmcontrol,控件、,3,个命令按钮,,Cmdwave,和,Cmdmidi,分别用来播放声音和,MIDI,文件,,Cmdexit,用来停止播放,其,Caption,属性分别设置为“,Wave”,、“,MIDI”,、“,Exit”,。创建一个,Autoloop,复选框,用于选择是否自动重复播放,,2,个文本框用于显示播放文件的长度和当前位置,窗体的标题动态显示时间,如图,8.2,所示。,8.1,多媒体控件,(,续,),图,8.2,Mmcontrol,多媒体控件应用,8.1,多媒体控件,(,续,),多媒体控
5、件,Mmcontrol1,的,Notify,属性设置为,True,,以便播放一个文件结束响应,Done,事件;,UpdateInterval,属性设置为,200,微秒,以便在,200,微秒时间间隔内自动激活,StatusUpdate,事件。,8.1,多媒体控件,(,续,),(,2,)打开代码窗口,创建过程代码。,播放声音文件的事件过程如下:,Private Sub,Cmdwave_Click,(),Mmcontrol1.Command=Close,Mmcontrol1.Devicetype=,Waveaudio,Mmcontrol1.Filename=C:Win98MediaLogoff.Wa
6、v,Mmcontrol1.Command=Open,Mmcontrol1.Command=Play,Cmdmidi.Enabled,=False,End Sub,8.1,多媒体控件,(,续,),播放,MIDI,的事件过程如下:,Private Sub,Cmdmidi_Click,(),Mmcontrol1.Command=Close,Mmcontrol1.Devicetype=Sequencer,Mmcontrol1.Filename=D:,WfffgzTempCamyon.Midi,Mmcontrol1.Command=Open,Mmcontrol1.Command=Play,Cmdwave
7、.Enabled,=False,End Sub,8.1,多媒体控件,(,续,),停止播放的事件过程如下:,Private Sub,Cmdexit_Click,(),Mmcontrol1.Command=Stop,Mmcontrol1.Command=Close,End Sub,8.1,多媒体控件,(,续,),创建自动重复播放,DONE,事件过程如下:,Private Sub Mmcontrol1_DONE(NOTIFYCODE AS INTEGER),If Mmcontrol1.POSITION=Mmcontrol1.LENGTH THEN,Mmcontrol1.Command=,Prev,如
8、果到达文件末尾,则倒带,If,Autoloop.Value,=1 Then ,如果选择自动播放,Mmcontrol1.Command=Play,END If,END If,End Sub,8.1,多媒体控件,(,续,),由于将,Mmcontrol1,控件的,Notify,属性设置为,True,,则当一个,Play,命令执行完后响应,Done,事件,若已选择自动重复播放,执行该事件过程,自动重复播放多媒体文件。,利用,Mmcontrol,控件的,StatusUpdate,事件,能对控件的运行状态进行跟踪,事件过程如下:,Private Sub Mmcontrol1_Statusupdate(),
9、Form1.Caption=Time$,显示变化时间,Text1.Text=,文件长度,&Mmcontrol1.Length,Text2.Text=,当前位置,&Mmcontrol1.Position,End Sub,8.1,多媒体控件,(,续,),Position,属性值在播放过程中是变化的,必须加入定时器才能显示动态的数值。由于已将,Mmcontrol1,控件的,UpdateInterval,属性设置为,200,微秒,,StatusUpdate,事件在时间间隔,200,微秒会自动激活,类似于定时器,能对控件的运行进行跟踪。另外,利用,Mmcontrol,控件的,StatusUpdate,事
10、件,计时是从开始,Play,时算起的。如果利用,Timer,控件定时,则计时是从程序运行时算起的,所以前者更适用。,8.2,调用,API,函数设计多媒体应用程序,API,(,Application Programming Interface,),应用程序编程接口。Windows API是作为Windows的一部分函数集合,都放在动态链接库 DLL(Dynamic Link Library)中,8.2,调用,API,函数设计多媒体应用程序,(,续,),1,API,函数的调用,(,1,),Declare Function,函数名,Lib,库名,“,(,Byval,参数,1 As,类型,,,,Byv
11、al,参数,n As,类型,),As,类型,(,2,),Declare Sub,子程序名,Lib,库名,“,(,Byval,参数,1 As,类型,,,,Byval,参数,n As,类型,),8.2,调用,API,函数设计多媒体应用程序,(,续,),例如,若调用,Sndplaysound,(),播放声音的,API,函数,声明如下:,Declare Function,Sndplaysound,LibMmsystem,(,Byval,Soundnameas,String,Byval,Flags As Integer,),As Integer,8.2,调用,API,函数设计多媒体应用程序,(,续,),
12、2,API,浏览器,加载,API,浏览器,以便在,Visual Basic,工作界面中,随时打开,API,浏览器。,【,例,8.2】,编写使用,API,函数画圆角矩形函数和播放,.wav,文件的程序。,8.2,调用,API,函数设计多媒体应用程序,(,续,),使用,API,函数中的,Roundrect,函数可以画圆角矩形,使用,Sndplaysound,过程,可以播放,.wav,文件,设计步骤如下:,(,1,)用,API,浏览器找到名为,Roundrect,的函数和名为,Sndplaysound,的过程,把它们的声明插入到窗体的通用说明栏中。,Private Declare Function,
13、sndPlaySound,Lib,winmm.dll,Alias,sndPlaySoundA,(,ByVal,lpszSoundName,As String,ByVal,uFlags,As Long)As Long,Private Declare Function,RoundRect,Lib gdi32(,ByVal,hdc,As Long,ByVal,X1 As Long,ByVal,Y1 As Long,ByVal,X2 As Long,ByVal,Y2 As Long,ByVal,X3 As Long,ByVal,Y3 As Long)As Long,8.2,调用,API,函数设计多媒体
14、应用程序,(,续,),(,2,)在窗体上增加画圆角矩形和播放文件两个命令按钮,代码如下:,Private Sub Command1_Click(),画圆角矩形按钮,Cls,For I=0 To 25,Forecolor,=RGB(255,I*10,I*15),d=Roundrect(Hdc,70+I,30-I,240-I,120+I,50+I,50+I),调用,RoundRect,函数,Next I,End Sub,8.2,调用,API,函数设计多媒体应用程序,(,续,),Private Sub,Cmdplay_Click,(),播放文件按钮,Dim,Soundfile,As String,D
15、im Result As Long,Soundfile,=,Dir(C,:WindowsMedia&*.wav),指定要播放的文件,Result=Sndplaysound(Soundfile,1),调用,Sndplaysound,函数,End Sub,8.2,调用,API,函数设计多媒体应用程序,(,续,),3,使用,MCI,高级函数,编写多媒体应用程序,在,Windows,的,DLL,动态链接库中,提供了,100,多个具有多媒体处理能力的,API,函数,Windows,还提供,3,个与,MCI,有关的高级函数:,Mciexecute,(),、,Mcisendcommand,(),、,Mcis
16、endstring,(),8.2,调用,API,函数设计多媒体应用程序,(,续,),Mciexecute()函数,Declare Function Mciexecute LibWinmm.Dll(Byval Ipstrcommand As String)As Long,其中,Ipstrcommand是一个MCI命令字符串,常用的6个MCI命令:Open命令、Close命令、Play命令、Stop命令、Seek 命令、Set命令,8.2,调用,API,函数设计多媒体应用程序,(,续,),【,例,8.3】,用,Mciexecut(),函数制作,CD,播放器。,(,1,)用,API,浏览器将,Mciexecute,(),函数的声明复制到窗体的通用说明栏中。,Private Declare Function,Mciexecute,LibWinmm.Dll,(,Byval,Ipstrcommand,As String)As Long,(,2,)按如图,8.7,所示设置控件,并编写事件过程。,8.2,调用,API,函数设计多媒体应用程序,(,续,),图,8.7 CD,播放器,8.2,调用,API,