学习目标:
本章主要介绍的是VB在多媒体方面的4个控件:Animation控件、Multimedia MCI控件、Active Movie控件和Windows Media player控件。通过本章的学习,要求掌握这4个控件常用的属性、事件和方法以及它们各自的特点。本章共有3个实例和1个项目,通过这些实例,用户可逐步理解用VB编写多媒体程序的基本方法和技术。
实训项目
1.项目题目:一个简单的媒体播放器
2.项目要求:此程序应能播放常见的声音(*.WAV、*.MID、*.MP3、*.WMA)与视频(*.MPEG、*.MPG、*.AVI、*.MOV、*.DAT、*.RMI)文件。
3.项目界面及其要求:
⑴程序启动后的界面如图9-1所示。

图9-1 一个简单的媒体播放器初始启动界面
⑵单击【打开】按钮,弹出“打开”对话框,如图9-2所示。单击【驱动器列表框】,可以选择保存有多媒体文件的驱动器,单击【目录列表框】,可以选择保存有多媒体文件的目录,单击【组合框】,可以选择文件类型,符合条件的文件将显示在组合框上方的列表框中。在【列表框】中可以选择一个文件,也可以同时选择连续或不连续的几个文件。若选择了多个文件,文件会按顺序连续循环播放。单击【确定】按钮,开始播放被选中的第一个文件,组合框和窗体的标题栏同时显示正在播放文件的文件名。单击【下一首】按钮,开始播放下一个文件,单击【上一首】按钮,开始播放上一个文件。单击【停止】按钮,则播放器暂停播放,同时【停止】按钮变为【开始】按钮,单击【开始】按钮,播放器从暂停处继续播放,同时【开始】按钮恢复为【停止】按钮。单击【组合框】右边的下拉箭头,可以看到被选中的文件列表,要想换一个文件播放,直接单击文件名即可。

图9-2 在“打开”对话框中选择要播放的文件
⑶单击【退出】按钮时,程序将用户选择的目录保存到Windows的注册表中,以便下次选择要播放的文件时,在“打开”对话框中,直接显示的是上次选择的目录。同时,将用户选择的文件清单保存到文件中,以便下次启动该程序时,可以直接从退出时正在播放的那个文件开始继续播放,这样就能实现每次启动播放器,首先播放的是上次退出之前播放的那个文件。这样做就使程序具有了“记忆”功能。
动画控件(Animation)只能播放无声的未压缩的或已用行程编码(Run Length Encoding,RLE)压缩的AVI文件。AVI动画类似于电影,由若干帧位图组成。
虽然AVI动画可以有声音,但是Animation控件不支持含有声音的AVI动画,如果试图加载含有声音数据或格式不为控件所支持的AVI文件,则会产生运行时刻错误。
要播放有声的AVI文件,请参阅本章后面介绍的3个控件。
在Windows98的许多操作提示中就用到了Animation动画。例如,在复制文件时,可以看到该控件的一个例子:在文件复制进度条上方,纸页(“文件”)从一个文件夹飞(“复制”)到另一个文件夹。
在VB安装的文件夹C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos中可以找到许多无声的AVI文件。
在运行时,Animation控件不具有自己的图文框。
在播放时,Animation控件使用了一个独立的线程。因此,应用程序不会被阻塞,可以继续在自己的进程中运行。
Animation控件的主要用途有:
1.在对话框中显示出操作的长短和特征。
2.播放有关应用程序的无声动画,提供使用指导。
3.使用户能够播放放入该控件的文件。
Animation控件的常用属性有:
1.AutoPlay属性
格式:
Object.AutoPlay=[True|False]
说明:
当取值True时,一旦将AVI文件加载到Animation控件中,则AVI文件将连续循环的自动播放,直到AutoPlay的值设置为False时为止;当取值False或缺省时,一旦加载了AVI文件,那么,不使用Play方法就不会播放这个AVI文件。
2.BackStyle属性
格式:
Object.BackStyle=[0|1]
说明:
该属性决定Animation控件是在透明的背景上还是在动画剪辑中所指定的背景颜色上绘制动画。在运行时为只读。
当取值0或缺省时,是透明的,即控件的背景颜色是可见的;当取值1时,是不透明的,即动画剪辑中指定的背景颜色将充满控件并隐没其背后的所有颜色。
可以用BackStyle属性运行动画,该动画显示Animation控件的背景颜色而非动画自身的背景颜色。
3.Center属性
格式:
Object.Center=[True|False]
说明:
当取值True时,该控件不会改变自身的大小,而是将动画显示在由该控件定义的区域的中心,如果在设计时,该控件定义的区域小于动画的大小,则动画的超过部分将被裁减掉;当取值False或缺省时,AVI文件定位在控件内的0,0处,控件的左上角决定了运行时的动画位置,在设计时,如果该控件定义的区域小于动画的大小,则在运行时该控件会自动根据视频动画的大小设置自身的大小。该属性在运行时为只读。
Animation控件有4种基本操作方法:Open、Play、Stop、Close方法。在使用该控件时,可用Open方法打开AVI文件,用Play方法进行播放,用Stop方法停止播放。在动画播放完毕以后,可用Close方法关闭该文件。在打开新文件之前不必关闭旧文件。
Play方法有三个参数,即Repeat、Start和Stop,它们决定文件被播放多少遍,从哪一帧开始播放,到哪一帧停止。如果没有提供Repeat参数,文件将被连续播放。例如,下面的代码将播放文件5遍,从第四帧播放到第九帧(第一帧的帧号为0):
Animation1.Play 5, 3, 8
实例9.1 用Animation控件播放无声AVI文件
新建一个窗体,设置其MaxButton属性为False。在上面画一个标签,五个命令按钮,设置其Caption属性分别为【打开】、【播放】、【暂停】、【关闭】、【退出】,再画一个通用对话框(Common Dialog)控件,一个Animation控件。其界面如图9-3所示。

图9-3 播放无声的AVI文件设计界面
注意:工具箱中默认没有通用对话框和Animation控件,添加这两个控件的方法为:单击“工程”菜单的“部件”命令,在弹出的“部件”对话框中选择“控件”选项卡,向下拖动滚动条,找到“Microsoft Common Dialog Control 6.0”和“Microsoft Windows Common Controls-2 6.0”,选中这两个ActiveX控件,单击【确定】即可。
在其代码窗口中输入如下代码:
Option Explicit
Private Sub Form_Load()
Me.Caption = "练习Animation动画播放器"
Label1.Caption = " 只支持无声音的AVI格式,到C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos中找动画文件!"
Command2.Enabled = False:Command3.Enabled = False:Command4.Enabled = False
End Sub
Private Sub Command1_Click()
Dim FName As String
CommonDialog1.CancelError = True:On Error GoTo Errhandler
CommonDialog1.Filter = "*.avi|*.avi|*.*|*.*" '设置扩展名
CommonDialog1.FileName="C:\Program Files\Microsoft Visual Studio\Common\Graphics\
Videos\FileMove.AVI" '设置默认路径
CommonDialog1.ShowOpen:FName = CommonDialog1.FileName
Animation1.Open CommonDialog1.FileName
Command2.Enabled = True:Command3.Enabled = False:Command4.Enabled = True
Exit Sub
Errhandler:
Exit Sub
End Sub
Private Sub Command2_Click()
Animation1.Play:Command2.Enabled = False:Command3.Enabled = True
End Sub
Private Sub Command3_Click()
Animation1.Stop:Command2.Enabled = True:Command3.Enabled = False
End Sub
Private Sub Command4_Click()
Animation1.Close:Command2.Enabled = False:Command3.Enabled = False
Command4.Enabled = False
End Sub
Private Sub Command5_Click()
Unload Me
End Sub
运行这个窗体,效果如图9-4所示。

图9-4 播放无声的AVI文件运行界面
多媒体控件(Multimedia MCI)可以管理媒体控制接口(Media Control Interface)设备上的多媒体文件的记录与回放,它在窗体中的外观如图9-5所示。图中所显示的按钮依次为Prev、Next、Play、Pause、Back、Step、Stop、Record和Eject。控件上的一组按钮被用来向诸如声卡、MIDI序列发生器、CD-ROM驱动器、视频CD播放器和视频磁带记录器及播放器等设备发出MCI命令。Multimedia MCI控件还支持Windows(*.AVI)视频文件的回放。

图9-5 Multimedia MCI控件在窗体上的外观
用户在使用Multimedia MCI控件提供的按钮之前,应用程序必须先将MCI设备打开,并在Multimedia MCI控件上启用适当的按钮。在VB中,应将MCI Open命令放到Form_Load事件中。这条命令打开规定的MCI设备,标识将要在设备上播放或记录的文件。有些设备,如CDAudio、VCR和视盘等,并不使用文件,所以无需提供文件名。
设备打开后,可以发送任何其他的MCI命令(如Prev、Next、Pause等)。Close命令是向设备发送的最后一条MCI命令,它返回到可用的系统资源缓冲池,Close命令还关闭与设备相关的数据文件。
如果想使用Multimedia MCI控件中的按钮,要设置其Visible和Enabled属性为True。如果不想使用控件中的按钮,而只是想用Multimedia MCI控件的多媒体功能,可将其Visible和Enabled属性设置为False。无论有没有用户交互,应用程序均可控制MCI设备。
在使用Multimedia MCI控件录音之前,应先新建一个文件,这样就可以保证记录声音的数据文件格式与系统记录格式完全兼容。在关闭MCI设备之前,还应该发出Save命令,把记录的数据保存到文件中去。
Multimedia MCI控件的主要属性有:
1.AutoEnable:是否能自动启动或关闭控件中的某个按钮,默认值为True。
2.ButtonEnabled:是否能启用或禁用控件中的某个按钮,默认值为False。ButtonEnabled