上面的示例程序作用是播放用户计算机上的一系列图像文件来实现动画的效果,但是在多媒体应用程序中还要经常用到另外一种动画,即以*.avi为后缀的视频文件,在Visual Basic 6.0中为了实现多媒体的功能,特地为开发多媒体应用程序的用户提供了一个MCI控件——MMControl控件,通过这个控件,用户通过简单的编程语句就可以实现驱动硬件设备的功能。
下面就以一个示例程序来说明,在Visual Basic 6.0中如何通过MCI控件来播放视频文件。
注意:
@ 在示例程序运行的过程中,可以动态的显示动画文件的播放进程,更重要的是用户可以通过滚动条来调节动画播放的进度。
具体的程序设计步骤如下所示:
首先用鼠标选择Windows操作系统“开始”菜单中的“程序”/Microsoft Visual Studio中的Microsoft Visual Basic 6.0选项来激活Visual Basic6应用程序,在Visual Basic 6.0的集成开发环境中用鼠标选择“文件”菜单中的“新建工程”选项,在屏幕上就会弹出一个如图6-9所示的“新建工程”对话框。

图6-9 “新建工程”对话框
在“新建工程”对话框中选择“标准EXE”选项,单击“确定”按钮,在Visual Basic 6中就新建了一个标准的工程文件,同时打开了一个空白的窗体。
窗体的属性设置如下所示:
Begin Visual Basic.Form Form1
BorderStyle = 3
MaxButton = 0
MinButton = 0
Moveable = 0
StartUpPosition = 2
End
经过以上属性设置后的窗体具有如下所示的特性:
n 程序运行过程中,窗体位于屏幕的中央,并且用户不能够移动窗体;
n 窗体的标题栏中为空,即在程序运行初期不显示任何文本或字符串;
n 窗体的标题栏中没有最大化和最小化按钮,只有关闭按钮;
n 在程序运行的过程,用户不能够改变窗体的大小。
在程序运行的过程中,为了能够显示动画,需要有显示容器,为此要向当前空白的窗体上添加一个PictureBox控件,同时向窗体上添加七个按钮控件来控制动画播放,另外添加的两个Label控件和两个TextBox控件用于显示动画文件的基本信息和播放进度,添加控件后的窗体如图6-10所示。

图6-10 添加控件后的窗体
其中添加到窗体上的各个控件的属性设置如下所示:
Begin Visual Basic.TextBox Text2
Text = "Text2"
End
Begin Visual Basic.TextBox Text1
Text = "Text1"
End
Begin Visual Basic.CommandButton Command7
Caption = "跳到结尾"
Height = 495
Left = 5280
Top = 960
Width = 1335
End
Begin Visual Basic.CommandButton Command6
Caption = "返回开头"
Height = 495
Left = 5280
Top = 360
Width = 1335
End
Begin Visual Basic.CommandButton Command5
Caption = "后退一桢"
Height = 495
Left = 240
Top = 2760
Width = 1335
End
Begin Visual Basic.CommandButton Command4
Caption = "步进一桢"
Height = 495
Left = 240
Top = 2160
Width = 1335
End
Begin Visual Basic.CommandButton Command3
Caption = "暂停/停止"
Height = 495
Left = 240
Top = 1560
Width = 1335
End
Begin Visual Basic.CommandButton Command2
Caption = "播放视频"
Height = 495
Left = 240
Top = 960
Width = 1335
End
Begin Visual Basic.PictureBox Picture1
Height = 2895
Left = 1800
Top = 360
Width = 3255
End
Begin Visual Basic.CommandButton Command1
Caption = "打开文件"
Height = 495
Left = 240
Top = 360
Width = 1335
End
Begin Visual Basic.Label Label2
Caption = "当前桢数:"
End
Begin Visual Basic.Label Label1
Caption = "总桢数:"
End
添加到窗体上的控件的作用如下所示:
n Text1 控件和Text2 控件:在程序运行的过程中,分别用来显示播放动画文件的总桢数和当前播放桢数;
n Picture1 控件:在程序运行的过程中充当动画显示的容器;
n Label1 控件和Label2控件:显示固定的提示文本“总桢数:”和“当前桢数”;
n Command按钮控件:在程序运行的过程中完成对动画文件的各种操作,如打开、播放和暂停等。
提示:
@ 以下仍然需要用到ActiveX控件,调用方法与前面所讲的方法相同。
在本示例程序设计的过程中,需要用到三个ActiveX控件——CommonDialog控件、Slider控件和MMControl控件。为此,在程序设计的过程中,用鼠标左键单击菜单“工程”中的“部件”选项,或者用鼠标右键单击工具箱,在弹出的菜单中选择“部件”选项,在屏幕上都会弹出一个如图6-11所示添加ActiveX的对话框。

图6-11 Components对话框
在添加ActiveX控件的“部件”对话框中选择Microsoft Common Dialog Control 6.0、Microsoft Multimedia Control 6.0和Microsoft Windows Common Controls 6.0三个选项,单击“确定”按钮,程序就会自动的向当前的项目文件中添加了示例程序所需要的ActiveX控件,这三个ActiveX控件的声明如下所示:
Object = "{C1A8AF28-1257-101B-8FB0-0020AF039CA3}#1.1#0"; "MCI32.OCX"
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
添加三个ActiveX控件后的工具箱如图6-12所示。

图6-12 添加ActiveX控件后的工具箱
在程序设计的过程中,向当前空白的窗体上添加一个CommonDialog控件、一个Slider控件和一个MMControl控件,它们的属性设置如下所示:
Begin MCI.MMControl Avi
Height = 495
Left = 1680
Top = 3720
Visible = 0
Width = 3540
UpdateInterval = 100
DeviceType = "avivideo"
FileName = ""
End
Begin MSComDlg.CommonDialog CommonDialog1
Left = 5520
Top = 3720
End
Begin MSComctlLib.Slider Slider1
Height = 375
Left = 1560
Top = 3360
Width = 3615
End
添加到窗体上的三个ActiveX控件的作用如下所示:
n CommonDialog控件:在程序运行的过程中,通过调用这个控件相应的方法,可以显示一个对话框,用户在其中可以选择一个有效的动画文件;
n Slider控件:在播放动画文件的过程中,通过这个控件可以动态的显示动画播放进程,也可以通过这个控件手动调节动画播放进度;
n MMControl控件:在多媒体播放设备和用户之间起一个连接的作用,在程序运行的过程中,通过调用这个控件的一些简单的命令就可以实现播放、暂停和步进等动画文件操作功能。
添加控件后的窗体如图6-13所示。

图6-13 添加ActiveX控件后的窗体
在以上三个ActiveX控件属性设置的过程中,用户可以在属性列表框中修改相应控件的属性,也可以单击属性列表框中Custom选项右侧的按钮,在弹出的对话框中自定义ActiveX控件属性,如图6-14即为自定义的CommonDialog控件属性设置对话框。

图6-14 自定义的CommonDialog控件属性对话框
经过自定义设置属性后的CommonDialog控件具有如下所示的特性:
n CommonDialog控件所打开的对话框标题栏中显示字符串“请选择一个合适的动画文件”;
n 对话框的缺省工作路径为d:\microsofi visual studio;
n 在CommonDialog控件所打开的对话框中只能够显示以*.avi为文件后缀的动画文件。
而如图6-15为自定义的MMControl控件属性设置对话框。

图6-15 自定义的MMControl控件属性设置对话框
在本示例程序中,所谓程序初始化,指的就是为窗体Private Sub Form_Load()事件所添加的响应代码。
在程序设计的过程中,用鼠标左键双击窗体上的空白处,在屏幕上就会弹出一个空白的代码窗口,在代码窗口的对象列表中选择窗体Form,在对应的事件列表中选择事件Private Sub Form_Load(),把光标移动到事件的处理过程中,并且添加如下所示的事件响应代码:
Private Sub Form_Load()
Form1.Avi.hWndDisplay = Form1.Picture1.hWnd
'设置动画显示窗口
Form1.Avi.DeviceType = "AviVideo"
'设置多媒体类型
Form1.CommonDialog1.DialogTitle = "请选择一个合适的动画文件:"
'设置对话框标题
Form1.CommonDialog1.Filter = "动画文件(*.avi)|*.avi"
'设置文件过滤器
Form1.CommonDialog1.InitDir = "d:\microsofi visual studio"
'设置缺省工作路径
Form1.Command2.Enabled = False
Form1.Command3.Enabled = False
Form1.Command4.Enabled = False
Form1.Command5.Enabled = False
Form1.Command6.Enabled = False
Form1.Command7.Enabled = False
'设置按钮控件的有效状态
Form1.Text1.Text = ""
Form1.Text2.Text = ""
'清空文本框
End Sub
在程序运行的初期,事件Private Sub Form_Load()中的代码就会被执行,程序通过Form1.Avi.hWndDisplay = Form1.Picture1.hWnd语句设置动画的显示容器为窗体上的Picture1控件,设置多媒体设备类型为AviVideo,即播放动画文件,然后通过三条语句:
Form1.CommonDialog1.DialogTitle = "请选择一个合适的动画文件:"
Form1.CommonDial-og1.Filter = "动画文件(*.avi)|*.avi"
Form1.CommonDialog1.InitDir = "d:\microsofi visual studio"
设置可对话框标题、文件过滤器和缺省工作路径,在程序初始化的最后,程序通过Form1.Command2.Enabled = False等八条语句来设置按钮控件的有效状态和清空窗体上的两个文本框。经过程序初始化后的运行窗体如图6-16所示。

图6-16 经过程序初始化后的运行窗体
在窗体上放置有七个CommandButton控件,它们的作用如下所示:
n Command1 控件:显示一个打开的对话框,在其中用户可以选择一个有效的动画文件;
n Command7 控件:把当前所打开动画文件的当前桢定位在文件的末尾;
n Command6 控件:把当前所打开动画文件的当前桢定位在文件的开头;
n Command5 控件:如果当前桢不是动画文件的第一桢,就把当前桢定位在前一桢;
n Command4 控件:如果当前桢不是动画文件的最后一桢,就把当前桢定位在后面一桢;
n Command3 控件:暂停播放动作,如果再次单击这个按钮,又会重新播放动画文件;
n Command2 控件:在程序运行的过程中,如果用户选择了一个有效的动画文件,那么单击这个按钮就可以播放动画。
注意:
@ 在这里由于篇幅的关系,仅对Command1按钮的事件响应代码加以说明,其他六个按钮的代码添加过程请读者参看附后的源程序清单。
在程序设计的过程中,用鼠标左键双击窗体上的空白处,在屏幕上就会弹出一个空白的