1、第8章 多媒体应用程序设计,8.1 Visual Basic程序设计,1Visual Basic简介Visual Basic是由微软公司推出的一套完整的Windows系统软件开发工具,可用于开发Windows环境下的各类应用程序,是一种可视化、真正面向对象、采用事件驱动方式的结构化高级程序设计语言和工具的完美集成。 不论是Windows应用程序的资深专业开发人员还是初学者,Visual Basic都提供了相应的成套工具,可以非常方便的用来进行程序开发。,2Visual Basic的版本1991年,微软公司展示了一个叫Thunder的产品,它可以用鼠标“画”出所需的用户界面,然后用简单的BASI
2、C语言编写业务逻辑就可以生成一个完整的应用程序。这种全新的“Visual”的开发给Windows开发人员开辟了新的天地。这个产品最终被定名为Visual Basic,采用事件驱动、Quick BASIC的语法和可视化的IDE。从1991年至今,Visual Basic获得了巨大的成功。微软公司不断改进这个开发工具,使它不仅成为开发人员进行Windows一般应用乃至企业级应用开发的快速利器,同时也成为微软公司的开发工具家族中不可动摇的一员。自1992年至1997年,微软先后推出了Visual Basic 2.0、3.0、4.0、5.0 。,8.1 Visual Basic程序设计,2Visual
3、 Basic的版本1998 推出的Visual Basic 6.0已经是非常成熟稳定的开发系统,能让企业快速建立多层的系统以及Web应用程序,成为当前在Windows上最流行的Visual Basic版本。2002年微软推出了Visual Basic. NET, 是一个现代的、强壮的、面向对象的、简单的可视化开发语言,具有极其强大的语言功能。但由于兼容性变差,使用人数也降低了,使得目前大多数Visual Basic编程人员仍在使用Visual Basic 6.0。另一方面,Visual Basic. NET也比Visual Basic 6.0难以学习使用。对初学者来说,Visual Basic
4、 6.0更易上手。基于此种原因,本书选用Visual Basic 6.0作为开发环境 。,8.1 Visual Basic程序设计,2Visual Basic的版本Visual Basic 6.0 有三种版本可满足不同的开发需要。Visual Basic 学习版使编程人员轻松开发 Windows 和 Windows NT(R) 的应用程序。该版本包括所有的内部控件以及网格、选项卡和数据绑定控件。专业版为专业编程人员提供了一整套功能完备的开发工具。该版本包括学习版的全部功能以及 ActiveX 控件、Internet Information Server Application Designer
5、、集成的 Visual Database Tools 和 Data Environment、 Active Data Objects、和 Dynamic HTML Page Designer。企业版使得专业编程人员能够开发功能强大的组内分布式应用程序。该版本包括专业版的全部功能以及 Back Office 工具。,8.1 Visual Basic程序设计,3Visual Basic的启动和退出VB启动后出现 “新建工程”对话框窗口,该窗口提示你选择要建立的项目类型,或是选择一个现存的或者是一个最近使用的项目来打开。,8.1 Visual Basic程序设计,3Visual Basic的启动和退
6、出选择建立标准EXE,进入的VB 6.0编程环境。,8.1 Visual Basic程序设计,3Visual Basic的启动和退出选择建立标准EXE,进入的VB 6.0编程环境。,8.1 Visual Basic程序设计,菜单条提供所使用的 Visual Basic 命令,3Visual Basic的启动和退出选择建立标准EXE,进入的VB 6.0编程环境。,8.1 Visual Basic程序设计,工具栏提供了在编程环境下对于常用命令的快速访问,3Visual Basic的启动和退出选择建立标准EXE,进入的VB 6.0编程环境。,8.1 Visual Basic程序设计,工具箱提供一组工
7、具,用于设计时在窗体中放置控件,3Visual Basic的启动和退出选择建立标准EXE,进入的VB 6.0编程环境。,8.1 Visual Basic程序设计,工程管理器窗口列出当前工程中的窗体和模块,3Visual Basic的启动和退出选择建立标准EXE,进入的VB 6.0编程环境。,8.1 Visual Basic程序设计,属性窗口列出对选定窗体和控件的属性设置值,3Visual Basic的启动和退出选择建立标准EXE,进入的VB 6.0编程环境。,8.1 Visual Basic程序设计,窗体设计器作为自定义窗口用来设计应用程序的界面,8.1.2 程序设计过程1Visual Bas
8、ic的编程思想首先创建界面,它是用户与应用程序进行交互操作的可视部分。窗体和控件是创建界面的基本构造模块,也是创建应用程序所使用的对象。窗体和控件是具有自己的属性、方法和事件的对象。我们可以把属性看作是一个对象的性质,把方法看作是对象的动作,把事件看作是对象的响应。,8.1 Visual Basic程序设计,8.1.2 程序设计过程1Visual Basic的编程思想窗体由属性定义其外观,由方法定义其行为,由事件定义其与用户的交互。通过设置窗体属性并编写响应事件的 Visual Basic 代码,就能定义出满足应用程序需要的对象。控件是包括在窗体对象内的对象。每种类型的控件都有自己的一套属性、
9、方法和事件,以适用于特定的目的。一些控件最适合在应用程序中输入或显示文本;另一些控件能够访问其他的应用程序和处理数据,就像这些远程应用程序是用户自己的代码一样。,8.1 Visual Basic程序设计,8.1.2 程序设计过程1Visual Basic的编程思想在利用窗体和控件为应用程序建立界面之后就需要编写代码,定义应用程序的特性。而编写代码主要是在响应事件的过程中添加,通过获取、设置或更改对象的属性,使用对象的方法,或是给其他对象发送消息以引发其事件。,8.1 Visual Basic程序设计,8.1.2 程序设计过程1Visual Basic的编程思想应用程序中的典型事件序列: 启动应
10、用程序,装载和显示窗体。 窗体(或窗体上的控件)接收事件。事件可由用户引发(例如键盘操作),可由系统引发(例如定时器事件),也可由代码间接引发(例如,当代码装载窗体时的 Load 事件)。 如果在相应的事件过程中存在代码,就执行代码。 应用程序等待下一次事件。,8.1 Visual Basic程序设计,8.1.2 程序设计过程2Visual Basic 应用程序的结构一个应用程序实际上是指挥计算机完成任务的指令集。应用程序的结构是组织指令的方法,也就是指令存放的位置和指令的执行顺序。由于 Visual Basic 应用程序是基于对象的,所以应用程序的代码结构就是该程序在屏幕上物理表示的模型。在
11、屏幕上看到的窗体代表属性,这些属性定义了窗体的外观和内在特性。应用程序中的每个窗体都有一个包含其代码的相关的窗体模块(文件扩展名为 .FRM)。,8.1 Visual Basic程序设计,8.1.2 程序设计过程2Visual Basic 应用程序的结构用类模块(文件扩展名为 .CLS )创建对象,这些对象可被应用程序内的过程调用。标准模块只包含代码,而类模块既包含代码又包含数据,可视为没有物理表示的控件。,8.1 Visual Basic程序设计,8.1.2 程序设计过程3一个简单的应用程序显示一个窗口,窗口的标题是“我的媒体播放机”,在窗口内用3号隶书显示“欢迎来到VB世界!”启动Visu
12、al Basic,并选择建立标准EXE,进入Visual Basic 6.0编程环境。在建立的项目中,有一个窗口Form1,可以通过属性窗口看到它的Caption(标题)属性为“Form1”,把它改为“我的媒体播放机”。,8.1 Visual Basic程序设计,8.1.2 程序设计过程3一个简单的应用程序对Form1的Load事件添加代码:Private Sub Form_Load()Font.Name = “隶书“FontSize = 15.75Print “欢迎来到VB世界!“End Sub,8.1 Visual Basic程序设计,8.1.2 程序设计过程3一个简单的应用程序Capti
13、on属性也可以在Load事件中直接添加:Private Sub Form_Load()Me.Caption=“我的媒体播放机“Me.Font.Name = “隶书“Me.FontSize = 15.75Me. Print “欢迎来到VB世界!“End Sub,8.1 Visual Basic程序设计,8.1.3 控件的使用Visual Basic中的控件可分为两类:标准控件和ActiveX控件,标准控件是Visual Basic 内部自带的工具箱。ActiveX 控件是 Visual Basic 工具箱的扩充部分。使用 ActiveX 控件的方法与使用其他标准控件完全一样。在程序中加入 Act
14、iveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。ActiveX 控件通常以.OCX文件的方式提供。,8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(1) Label(标签)Label控件主要用来显示一些标题或说明的文本,用户不能直接修改显示文本。在Label中实际显示的文本是由 Caption 属性决定的,该属性可以在设计时设置或在运行时用代码赋值。在默认情况下,Label惟一的可见部分是标题文本,你还可以通过其他属性的设置来更改标签的外观。,8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(2) TextBox
15、 (文本框)TextBox控件是一个文本编辑控件,可以在运行时由用户输入、编辑或显示文本,实际上是一个简单的文本编辑器。TextBox控件中显示的实际文本是与Text属性对应的。Text 属性可以用三种方式设置:设计时在“属性”窗口进行、运行时通过代码设置或在运行时由用户编辑。通过读Text属性能在运行时获得TextBox控件的当前内容。,8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(3) PictureBox(图片框)PictureBox 控件可以显示来自位图、图标或者元文件,以及来自增强的元文件、JPEG 或 GIF 文件的图形。如果控件不足以显示整幅图像,则
16、裁剪图像以适应控件的大小。把要显示的图片放到PictureBox控件内有两个方法:一是在程序设计阶段在属性窗口中用鼠标点击Picture属性,在弹出的对话框中选择你所需要的图形文件。二是在程序运行阶段用函数加载图形,形如:PictureBox1.Picture=LoadPicture(图形文件路径),8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(4) Image(图像框)Image控件用来显示图形。Image控件可以显示来自位图、图标或元文件的图形,也可以显示增强的元文件、JPEG 或 GIF文件。因为Image控件使用较少的系统资源,所以重画起来比 Pictur
17、eBox 控件要快,但是它只支持 PictureBox 控件的一部分属性、事件和方法。用 Stretch 属性确定是否缩放图形来适应控件大小,反之亦然。虽然可以把Image控件放在容器里,但是Image控件不能作为容器。,8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(5) ListBox (列表框)ListBox 控件用来显示项目列表,可以是单项选择或多项选择,由MultiSelect属性决定。如果项目总数超过了可显示的项目数,就自动在 ListBox 控件上添加滚动条。如果未选定项目,则 ListIndex 属性值是-1。列表的第一项是 ListIndex 0,
18、ListCount 属性值总是比最大的 ListIndex 值大 1。,8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(6) ComboBox (组合框)ComboBox 控件将TextBox 控件和ListBox 控件的特性结合在一起:既可以在控件的文本框部分输入信息,也可以在控件的列表框部分选择一项。AddItem或RemoveItem方法用来添加或删除ComboBox 控件中的项目。通过设置 或读取List、ListCount、和 ListIndex 属性,用来访问 ComboBox 中的项目。也可以在设计时使用 List 属性将项目添加到列表中。,8.1 V
19、isual Basic程序设计,8.1.3 控件的使用1标准控件(7) Frame(框架)Frame 控件可以为控件提供可标识的分组。Frame 可以实现在功能上分割一个窗体。要用Frame 控件将窗体内控件分组,首先要绘制 Frame 控件,然后绘制 Frame 里面的控件。这样就可以把框架和里面的控件同时移动。如果在 Frame 外部绘制了一个控件并试图把它移到框架内部,那么控件将在 Frame 的上部,这时需分别移动 Frame 和控件。,8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(8) CommandButton(命令按钮) CommandButton
20、控件用来在单击时执行指定的操作。控件上的显示文本,由 Caption 属性设置。为了在按 ENTER 键时也选中命令按钮,需将其 Default 属性设为 True。为了能在按 ESC 键时也选中 CommandButton,则需将Cancel 属性设置成 True。,8.1 Visual Basic程序设计,8.1.3 控件的使用1标准控件(9) OptionButton(单选框)OptionButton 控件用来实现让用户从成组项目选择中只能选择其中一个。主要属性是Value,选定控件时值为True,否则为False。通常用Frame或PictureBox来实现分组。(10) CheckB
21、ox (复选框)CheckBox 控件用来实现让用户从成组项目中选择的一个或几个选项。主要属性是Value,未选状态时值为0,选择时值为1,若将其设2,则控件变灰色。,8.1 Visual Basic程序设计,8.1.3 控件的使用2ActiveX控件应用程序添加ActiveX控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。其使用方法与使用其他标准内装的控件完全一样。CommonDialog 控件提供一组标准的操作对话框,用来进行诸如打开和保存文件、设置打印选项、以及选择颜色和字体等操作。DialogTitle属性可以设置对话框的标题。使用ShowOpen 和 ShowSav
22、e 方法可显示“打开”和“另存为”对话框。两个对话框均可用以指定驱动器、目录、文件扩展名和文件名。,8.1 Visual Basic程序设计,8.1.3 控件的使用2ActiveX控件除对话的标题不同外,另存为对话外观上与打开对话相似。运行时,当用户选择一个文件“关闭”对话框时,FileName 属性既为选定的文件名。可以通过设置 Filter 属性,让对话框只显示某种文件类型。Flags 属性可用来改变对话的元素,当覆盖文件之类的动作发生时,还可用来提示用户。使用ShowFont 方法可显示“字体”对话框。使用ShowColor 方法可显示“颜色”对话框。使用控件的ShowPrinter方法
23、可显示“打印”对话框。,8.1 Visual Basic程序设计,8.1.3 控件的使用3在媒体播放机中实现文件选择功能实现自己的媒体播放机,其选择文件并打开的功能,我们利用CommonDialog控件来实现。首先要在窗口中加入一个CommonDialog控件。选择“工程”“部件”菜单,出现部件窗口,在“控件”卡片中找到Microsoft Common Dialog Control 6.0并选中它。选中后按“确定”按钮,这时CommonDialog控件的图标就在工具箱中了。,8.1 Visual Basic程序设计,8.1.3 控件的使用3在媒体播放机中实现文件选择功能在窗口中放置两个控件,一
24、个命令按钮,一个CommonDialog控件。可以将命令按钮的Name属性设为Bt1,CommonDialog控件的Name属性设为设为OpenDlg。对象的命名可以自由选择,但是要注意你应有比较固定的风格,要使以后再看到该对象时就能大致知道它的名字,或者由名字就知道对应的是哪一个控件,并且知道它是用来干什么用的等等,这样才能提高编程的效率。,8.1 Visual Basic程序设计,8.1.3 控件的使用3在媒体播放机中实现文件选择功能在命令按钮的Click事件中添加如下代码:Private Sub Bt1_Click()OpenDlg.DialogTitle = “请选择要播放的媒体文件“
25、OpenDlg.Filter = “音频文件(*.wav)|*.wav|所有文件 (*.*)|*.*“OpenDlg.ShowOpenIf OpenDlg.FileName “ Then播放媒体的代码放在下面End IfEnd Sub,8.1 Visual Basic程序设计,8.1.4 菜单设计菜单控件是一个对象,它与其他对象一样,具有定义它的外观与行为的属性。在设计或运行时可以设置 Caption 属性、Enabled 和 Visible 属性、Checked 属性以及其他属性。 菜单控件只包含一个事件,即 Click 事件,当用鼠标或键盘选中该菜单控件时,将调用该事件。,8.1 Visu
26、al Basic程序设计,8.1.4 菜单设计1使用菜单编辑器在Visual Basic中设计菜单非常容易,先选中你要添加菜单的Form窗体,然后在工具条上点击“菜单编辑器”按钮便可以打开“菜单编辑器。菜单控件在菜单控件列表框中的位置决定了该控件是菜单标题、菜单项、子菜单标题,还是子菜单项 。,8.1 Visual Basic程序设计,8.1.4 菜单设计2为媒体播放机添加菜单我们现在可以为我们的媒体播放机设计一个大体的框架了。首先启动Visual Basic,并打开我们前面保存的工程。选中frmMain,并点击“菜单编辑器”按钮来设计菜单。要注意我们必须为每一个菜单项定义一个名字。在菜单结构
27、里,不妨将菜单项的名字依次定义为menuFile,menuOpen,menu001,menuExit,menuHelp,menuContent,menu002,menuAbout。设置好后按确定按钮。,8.1 Visual Basic程序设计,8.1.4 菜单设计2为媒体播放机添加菜单首先把原来bt1的功能转移到menuOpen上去,先把bt1的Click事件的代码复制到menuOpen的Click事件。 Private Sub menuOpen_Click()OpenDlg.DialogTitle = “请选择要播放的媒体文件“OpenDlg.Filter = “音频文件(*.wav)|*.
28、wav|所有文件(*.*)|*.*“OpenDlg.ShowOpenIf OpenDlg.FileName “ Then播放媒体的代码放在下面End If End Sub然后删除bt1的Click事件的代码并删除bt1命令按钮,8.1 Visual Basic程序设计,8.1.4 菜单设计2为媒体播放机添加菜单为程序添加一个About窗口。点击工具条的“添加窗口”按钮或菜单“工程”“添加窗体”,则显示添加窗体对话框。你可以选择“窗体”类型,然后自己设计About窗口,但更简单的是选择“关于对话框类型”。选定后按打开按钮。新添加的About窗口的名字为frmAbout,我们先把它与“帮助”“关于
29、播放器”菜单项menuAbout联系起来。在 menuAbout的click事件中添加代码如下:Private Sub menuAbout_Click()frmAbout.Show 1End Sub,8.1 Visual Basic程序设计,8.1.4 菜单设计2为媒体播放机添加菜单Show是窗体对象的方法,用来显示窗体,它有两个参数表示显示方式。我们这里只用了第一个。1表示将窗体显示为模式对话框,如果你想显示为无模式对话框,可以不用参数。,8.1 Visual Basic程序设计,8.2.1 媒体控制接口MCI(Media Control Interface)是Microsoft公司为实现W
30、indows系统下设备无关性而提供的媒体控制接口标准。MCI是一个高级的函数调用接口,它包含在MMSYSTEM.DLL中,用来协调事件以及MCI设备驱动程序间的通信。利用MCI,多媒体应用程序可以控制各种各样的多媒体设备和文件。,8.2 使用媒体控制接口(MCI),8.2.1 媒体控制接口MCI可以分为简单设备和复合设备两种。简单设备是一种使用时不必指定相关媒体文件的设备,例如用CDROM播放音频光盘时系统打开的就是简单设备。而复合设备是一种播放那个特定媒体文件(称为设备元素)的设备,例如MIDI音序器、MPEG文件解压播放等。如果你想使用这一类符合复合设备,则必须提供相应的MIDI或MPEG
31、文件名。,8.2 使用媒体控制接口(MCI),8.2.1 媒体控制接口设备名是在注册表或SYSTEM.INI的mci部分定义的,典型的mci段如下所示:mcicdaudio=mcicda.drvsequencer=mciseq.drvwaveaudio=mciwave.drvavivideo=mciavi.drvvideodisc=mcipionr.drv等号的左边是设备名,右边是对应的MCI驱动程序。当安装了新的MCI驱动程序时,系统要用不同的设备名来区分。设备名通常与驱动程序中的设备类型名相同,如cdaudio和waveaudio等,也有例外,如avivideo设备是一个digitalvi
32、deo类型的设备。,8.2 使用媒体控制接口(MCI),8.2.2 MCI指令及使用使用MCI设备一般包括打开、使用和关闭三个过程。MCI的大部分命令可以控制不同的媒体设备。MCI指令的一般格式为:,8.2 使用媒体控制接口(MCI),8.2.2 MCI指令及使用1打开和关闭多媒体设备使用多媒体设备之前首先要用Open指令将它启动。Open指令的语法如下:Open 可以是设备名也可以是文件名,主要取决于设备是简单设备还是复合设备。对于简单设备只需要设备名就可以了。例如Open cdaudio对于复合设备则需要指名使用的文件。如:Open c:windowsWellcome.mid alias
33、MyDev1 用Close 指令关闭打开的设备。命令格式为:Close 例如: Close MyDev1,8.2 使用媒体控制接口(MCI),8.2.2 MCI指令及使用2播放多媒体设备Play指令是用来播放多媒体设备的。命令格式为:Play 如果不使用参数,则多媒体设备将从当前位置播放到文件结束为止。如果要指定播放的起始和终止位置,则一般用from pos1 to pos2。例如:Play cdaudio from 2000 to 5000指示播放激光唱盘从第2000毫秒到15000毫秒的位置。Play avivideo fullscreen from 10 to 500 指示播放AVI全屏
34、显示,从第10帧到500帧。,8.2 使用媒体控制接口(MCI),8.2.2 MCI指令及使用3获取多媒体设备信息获取多媒体设备信息的指令有capacility ,info,status指令。例如:capacility cdaudio can eject查询CD-ROM是否有弹出设备的能力。Info waveaudio file查询波形设备正使用的文件。Status DigitalVideo speed查询数字视频播放的速度。,8.2 使用媒体控制接口(MCI),8.2.2 MCI指令及使用4寻找指定位置Seek指令用来寻找到多媒体设备的指定位置。例如:Seek DigitalVideo to
35、 3000将数字视频定位到3000帧的位置。Seek cdaudio to start将播放激光唱盘定位到起始位置。Seek DigitalVideo to end将数字视频定位到结束位置。,8.2 使用媒体控制接口(MCI),8.2.2 MCI指令及使用5暂停和继续pause指令可以中止媒体的播放,用resume指令继续播放由pause指令中止的媒体。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件Multimedia MCI 控件用来管理媒体控制接口 (MCI) 设备上的多媒体文件的记录与回放。从概念上说,这种控件就是一组按钮,它被用来向诸如声卡、MID
36、I 序列发生器、CD-ROM 驱动器、视频 CD 播放器和视频磁带记录器及播放器等设备发出 MCI 命令。MCI 控件还支持 Windows视频文件 (.avi)的回放。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件1Multimedia MCI 控件的使用 单击菜单条上“工程”“部件”菜单,在出现的部件窗口中选择Microsoft Multimedia Control 6.0,并单击“确定”按钮,这时会在工具栏中出现该控件的图标。在设计时,将 Multimedia MCI 控件加到一个窗体上:,8.2 使用媒体控制接口(MCI),8.2.3 Multim
37、edia MCI 控件1Multimedia MCI 控件的使用,8.2 使用媒体控制接口(MCI),按钮被分别定义为 Prev(前移)、Next(后移)、Play(播放)、Pause(暂停)、Back(倒移)、Step(步进)、Stop(停止)、Record(录制) 和 Eject(退出)。,8.2.3 Multimedia MCI 控件1Multimedia MCI 控件的使用 在允许用户对MCI控件进行操作之前,应用程序必须先将MCI设备打开,并在MCI控件上启用适当的按钮。如果想使用MCI控件中的按钮,要将Visible和Enabled属性设置为True。如果不想使用控件中的按钮,而只
38、是想用MCI控件的多媒体功能,可将Visible和Enabled属性设置为False。MCI控件的事件(按钮定义)是可编程的,通过开发按钮事件代码,可以增加甚至完全重新定义按钮的功能。MCI能在单个窗体中支持多个MCI控件实例,这样就可以同时控制多台MCI设备,但是要注意,每台设备需要一个相对应的MCI控件。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件2. 常用的MCI 控件属性(1) AutoEnable属性AutoEnable属性用来决定MCI控件是否能够自动启动或关闭控件中的某个按钮。如果AutoEnable属性被设置为True,MCI控件就启用指
39、定MCI设备类型在当前模式下所支持的全部按钮。这一属性还会禁用那些MCI设备类型在当前模式下不支持的按钮。Button Visible属性Button Visible属性用来决定某按钮在MCI控件中是否可见。例如如果编写CD-Play,那么我们不需要Record按钮,于是可以设置为:MMControl1.RecordVisible = False,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件2. 常用的MCI 控件属性(2) Command属性在设计时,该属性不可用。语法为:控件的名称.Command = 命令字符串该属性指定将要执行的MCI命令,其中命令
40、字符串可以是Open,Close,Play,、Pause,Stop,Back,Step,Prev,Next,Seek,Record,Eject,Sound或Save。这些命令被立即执行,并将错误代码存放在Error属性中。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件2. 常用的MCI 控件属性(3) DeviceType属性指定要打开的MCI设备的类型,语法为:控件的名称.DeviceType = 设备类型其中设备类型可以是AVIVideo,CDAudio,MMMovie,WaveAudio等。打开简单设备时,该属性必须设置。如果文件的扩展名没有指定将要
41、使用的设备,那么打开复杂MCI设备时也必须设置该属性。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件2. 常用的MCI 控件属性(4) FileName 属性 FileName 属性指定 Open 命令将要打开的或者 Save 命令将要保存的文件。语法为: 控件的名称.FileName = 完整路径文件名 如果在运行时要改变 FileName 属性,就必须先关闭然后再重新打开设备。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件2. 常用的MCI 控件属性(5) Mode 属性Mode 属性用来返回打开的 MCI 设备的
42、当前状态。设计时不可用,运行时是只读的。例如属性值为mciModeNotOpen表示设备没有打开; mciModePlay表示设备正在播放;mciModeReady表示设备准备好等等。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件2. 常用的MCI 控件属性(6) TimeFormat属性该属性规定用来报告所有位置信息的时间格式。例如当设置为0时是以微秒为单位,为3时是以帧为单位等等。按当前设置格式访问或发送信息的属性有:From、Length、Position、Start、To、TrackLength、TrackPosition。,8.2 使用媒体控制接
43、口(MCI),8.2.3 Multimedia MCI 控件2. 常用的MCI 控件属性(7) Wait属性 决定MCI控件是否要等到下一条MCI命令完成才能将控件的控制权返回应用程序,在设计时,该属性不可用。Wait属性取值说明如下:False: MCI不须要等到MCI命令完成就可将控件的控制权返回应用程序。默认值。True: MCI必须等到下一个MCI命令完成才能将控件的控制权返回应用程序。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件3. 常用的MCI控件的事件(1) ButtonClick 事件当用户在多媒体MCI控制的按钮上按下或释放鼠标时产生该
44、事件,每一个Buttonclick事件默认执行一个MCI命令。(2) ButtonCompleted事件当多媒体MCI控制按钮激活的MCI命令完成后发送。(3) StatusUpdate事件这个事件可监测目前多媒体设备的状态信息,比如用滚动条来表示当前轨道的位置。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件4为媒体播放机增加播放功能在设计窗口中添加一个Multimedia MCI控件,并命名为Mmci,再添加一个PictureBox控件,命名为Winout,将用它作为视频播放的窗口。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia
45、MCI 控件4为媒体播放机增加播放功能修改menuOpen的Click事件的代码如下:Private Sub menuOpen_Click()OpenDlg.DialogTitle = “请选择要播放的媒体文件“OpenDlg.Filter = “音频文件(*.wav,*.mp3)|*.wav;*.mp3|视频文件(*.avi,*.mpg)|*.avi;*.mpg|所有文件(*.*)|*.*“OpenDlg.ShowOpenIf OpenDlg.FileName “ Then播放媒体的代码放在下面Mmci.FileName = OpenDlg.FileName如果设备已经打开,则关闭它。,8.
46、2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件4为媒体播放机增加播放功能If Mmci.Mode mciModeNotOpen ThenMmci.Command = “Close“End If打开设备Mmci.Command = “Open“判断设备是否需要显示窗口,若需要,则设置为WinoutIf Mmci.UsesWindows ThenMmci.hWndDisplay = Winout.hWndEnd IfEnd If End Sub,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件4为媒体播放机增加播放功能用一个slid
47、er控件作为进度器。选择“工程”“部件”菜单命令,在出现的部件窗口中选择Microsoft Windows Common Controls 6.0,并单击“确定”按钮,这时会在工具栏中出现该slider控件的图标。我们在frmMain窗口上添加一个slider控件,就用默认名字slider1 把Back,Eject,Next,Prev,Record,Step等按钮设为不可见。在MCI控件的Done,StatusUpdate事件以及Slider1的Scroll事件中添加代码以关联媒体设备的位置和Slider1的Value属性。,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia
48、 MCI 控件4为媒体播放机增加播放功能Private Sub Form_Load()以毫秒为单位Mmci.TimeFormat = 0Mmci.Notify = True End Sub Private Sub Form_Unload(Cancel As Integer)别忘了关闭设备Mmci.Command = “Close“ End Sub Private Sub menuAbout_Click()frmAbout.Show 1 End Sub,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件4为媒体播放机增加播放功能 Private Sub menuO
49、pen_Click()OpenDlg.DialogTitle = “请选择要播放的媒体文件“OpenDlg.Filter = “音频文件(*.wav,*.mp3)|*.wav;*.mp3|视频文件(*.avi,*.mpg)|*.avi;*.mpg|所有文件(*.*)|*.*“OpenDlg.ShowOpenIf OpenDlg.FileName “ Then播放媒体的代码放在下面Mmci.FileName = OpenDlg.FileName如果设备已经打开,则关闭它。If Mmci.Mode mciModeNotOpen ThenMmci.Command = “Close“End If打开设备Mmci.Command = “Open“,8.2 使用媒体控制接口(MCI),8.2.3 Multimedia MCI 控件4为媒体播放机增加播放功能判断设备是否需要显示窗口,若需要,则设置为WinoutIf Mmci.UsesWindows ThenMmci.hWndDisplay = Winout.hWndEnd If用媒体的总长度设置Slider1的MaxSlider1.Max = Mmci.LengthEnd If End Sub,