ch8 多媒体应用程序设计_ppt.txt

大学多媒体制作技术及应用-宗绪锋-PPT文稿资料课件PPT

收藏

资源目录
跳过导航链接。
大学多媒体制作技术及应用-宗绪锋-PPT文稿资料课件PPT.zip
多媒体制作技术及应用-宗绪锋-PPT文稿资料
教案资料.ppt---(点击预览)
多媒体制作技术及应用-宗绪锋-大学教学资料
文稿ppt_ppt.txt---(点击预览)
文稿ppt_ppt.jpg---(点击预览)
文稿ppt.ppt---(点击预览)
(课件资料)《多媒体制作技术及应用》-宗绪锋
《多媒体制作技术及应用》-宗绪锋-电子教案
压缩包内文档预览:(预览前20页/共23页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:21836017    类型:共享资源    大小:21.22MB    格式:ZIP    上传时间:2019-09-06 上传人:QQ24****1780 IP属地:浙江
25
积分
关 键 词:
大学 多媒体 制作 技术 应用 利用 运用 宗绪锋 ppt 文稿 资料 课件
资源描述:
大学多媒体制作技术及应用-宗绪锋-PPT文稿资料课件PPT,大学,多媒体,制作,技术,应用,利用,运用,宗绪锋,ppt,文稿,资料,课件
内容简介:
第8章 多媒体应用程序设计 8.1 Visual Basic程序设计1Visual Basic简介 Visual Basic是由微软公司推出的一套完整的Windows系统软件开发工具,可用于开发Windows环境下的各类应用程序,是一种可视化、真正面向对象、采用事件驱动方式的结构化高级程序设计语言和工具的完美集成。不论是Windows应用程序的资深专业开发人员还是初学者,Visual Basic都提供了相应的成套工具,可以非常方便的用来进行程序开发。2Visual Basic的版本 1991年,微软公司展示了一个叫Thunder的产品,它可以用鼠标“画”出所需的用户界面,然后用简单的BASIC语言编写业务逻辑就可以生成一个完整的应用程序。这种全新的“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 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 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、集成的 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的启动和退出 选择建立标准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程序设计 工具箱提供一组工具,用于设计时在窗体中放置控件 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 Basic的编程思想 首先创建界面,它是用户与应用程序进行交互操作的可视部分。 窗体和控件是创建界面的基本构造模块,也是创建应用程序所使用的对象。 窗体和控件是具有自己的属性、方法和事件的对象。我们可以把属性看作是一个对象的性质,把方法看作是对象的动作,把事件看作是对象的响应。8.1 Visual Basic程序设计8.1.2 程序设计过程 1Visual Basic的编程思想 窗体由属性定义其外观,由方法定义其行为,由事件定义其与用户的交互。通过设置窗体属性并编写响应事件的 Visual Basic 代码,就能定义出满足应用程序需要的对象。 控件是包括在窗体对象内的对象。每种类型的控件都有自己的一套属性、方法和事件,以适用于特定的目的。一些控件最适合在应用程序中输入或显示文本;另一些控件能够访问其他的应用程序和处理数据,就像这些远程应用程序是用户自己的代码一样。8.1 Visual Basic程序设计8.1.2 程序设计过程 1Visual Basic的编程思想 在利用窗体和控件为应用程序建立界面之后就需要编写代码,定义应用程序的特性。而编写代码主要是在响应事件的过程中添加,通过获取、设置或更改对象的属性,使用对象的方法,或是给其他对象发送消息以引发其事件。8.1 Visual Basic程序设计8.1.2 程序设计过程 1Visual Basic的编程思想 应用程序中的典型事件序列: 启动应用程序,装载和显示窗体。窗体(或窗体上的控件)接收事件。事件可由用户引发(例如键盘操作),可由系统引发(例如定时器事件),也可由代码间接引发(例如,当代码装载窗体时的 Load 事件)。如果在相应的事件过程中存在代码,就执行代码。应用程序等待下一次事件。 8.1 Visual Basic程序设计8.1.2 程序设计过程 2Visual Basic 应用程序的结构 一个应用程序实际上是指挥计算机完成任务的指令集。应用程序的结构是组织指令的方法,也就是指令存放的位置和指令的执行顺序。 由于 Visual Basic 应用程序是基于对象的,所以应用程序的代码结构就是该程序在屏幕上物理表示的模型。在屏幕上看到的窗体代表属性,这些属性定义了窗体的外观和内在特性。应用程序中的每个窗体都有一个包含其代码的相关的窗体模块(文件扩展名为 .FRM)。8.1 Visual Basic程序设计8.1.2 程序设计过程 2Visual Basic 应用程序的结构 用类模块(文件扩展名为 .CLS )创建对象,这些对象可被应用程序内的过程调用。标准模块只包含代码,而类模块既包含代码又包含数据,可视为没有物理表示的控件。8.1 Visual Basic程序设计8.1.2 程序设计过程 3一个简单的应用程序 显示一个窗口,窗口的标题是“我的媒体播放机”,在窗口内用3号隶书显示“欢迎来到VB世界!” 启动Visual 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.75 Print 欢迎来到VB世界! End Sub8.1 Visual Basic程序设计8.1.2 程序设计过程 3一个简单的应用程序 Caption属性也可以在Load事件中直接添加: Private Sub Form_Load() Me.Caption=我的媒体播放机 Me.Font.Name = 隶书 Me.FontSize = 15.75 Me. Print 欢迎来到VB世界! End Sub8.1 Visual Basic程序设计8.1.3 控件的使用 Visual Basic中的控件可分为两类:标准控件和ActiveX控件,标准控件是Visual Basic 内部自带的工具箱。ActiveX 控件是 Visual Basic 工具箱的扩充部分。使用 ActiveX 控件的方法与使用其他标准控件完全一样。在程序中加入 ActiveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。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 (文本框) TextBox控件是一个文本编辑控件,可以在运行时由用户输入、编辑或显示文本,实际上是一个简单的文本编辑器。 TextBox控件中显示的实际文本是与Text属性对应的。Text 属性可以用三种方式设置:设计时在“属性”窗口进行、运行时通过代码设置或在运行时由用户编辑。通过读Text属性能在运行时获得TextBox控件的当前内容。8.1 Visual Basic程序设计8.1.3 控件的使用 1标准控件 (3) PictureBox(图片框) PictureBox 控件可以显示来自位图、图标或者元文件,以及来自增强的元文件、JPEG 或 GIF 文件的图形。如果控件不足以显示整幅图像,则裁剪图像以适应控件的大小。 把要显示的图片放到PictureBox控件内有两个方法:一是在程序设计阶段在属性窗口中用鼠标点击Picture属性,在弹出的对话框中选择你所需要的图形文件。二是在程序运行阶段用函数加载图形,形如: PictureBox1.Picture=LoadPicture(图形文件路径)8.1 Visual Basic程序设计8.1.3 控件的使用 1标准控件 (4) Image(图像框) Image控件用来显示图形。Image控件可以显示来自位图、图标或元文件的图形,也可以显示增强的元文件、JPEG 或 GIF文件。因为Image控件使用较少的系统资源,所以重画起来比 PictureBox 控件要快,但是它只支持 PictureBox 控件的一部分属性、事件和方法。用 Stretch 属性确定是否缩放图形来适应控件大小,反之亦然。虽然可以把Image控件放在容器里,但是Image控件不能作为容器。8.1 Visual Basic程序设计8.1.3 控件的使用 1标准控件 (5) ListBox (列表框) ListBox 控件用来显示项目列表,可以是单项选择或多项选择,由MultiSelect属性决定。如果项目总数超过了可显示的项目数,就自动在 ListBox 控件上添加滚动条。 如果未选定项目,则 ListIndex 属性值是-1。列表的第一项是 ListIndex 0,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 Visual 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 控件用来在单击时执行指定的操作。控件上的显示文本,由 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) CheckBox (复选框) CheckBox 控件用来实现让用户从成组项目中选择的一个或几个选项。主要属性是Value,未选状态时值为0,选择时值为1,若将其设2,则控件变灰色。8.1 Visual Basic程序设计8.1.3 控件的使用 2ActiveX控件 应用程序添加ActiveX控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。其使用方法与使用其他标准内装的控件完全一样。 CommonDialog 控件提供一组标准的操作对话框,用来进行诸如打开和保存文件、设置打印选项、以及选择颜色和字体等操作。 DialogTitle属性可以设置对话框的标题。 使用ShowOpen 和 ShowSave 方法可显示“打开”和“另存为”对话框。两个对话框均可用以指定驱动器、目录、文件扩展名和文件名。8.1 Visual Basic程序设计8.1.3 控件的使用 2ActiveX控件 除对话的标题不同外,另存为对话外观上与打开对话相似。运行时,当用户选择一个文件“关闭”对话框时,FileName 属性既为选定的文件名。可以通过设置 Filter 属性,让对话框只显示某种文件类型。Flags 属性可用来改变对话的元素,当覆盖文件之类的动作发生时,还可用来提示用户。 使用ShowFont 方法可显示“字体”对话框。 使用ShowColor 方法可显示“颜色”对话框。 使用控件的ShowPrinter方法可显示“打印”对话框。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在媒体播放机中实现文件选择功能 在窗口中放置两个控件,一个命令按钮,一个CommonDialog控件。可以将命令按钮的Name属性设为Bt1,CommonDialog控件的Name属性设为设为OpenDlg。 对象的命名可以自由选择,但是要注意你应有比较固定的风格,要使以后再看到该对象时就能大致知道它的名字,或者由名字就知道对应的是哪一个控件,并且知道它是用来干什么用的等等,这样才能提高编程的效率。8.1 Visual Basic程序设计8.1.3 控件的使用 3在媒体播放机中实现文件选择功能 在命令按钮的Click事件中添加如下代码: Private Sub Bt1_Click() OpenDlg.DialogTitle = 请选择要播放的媒体文件 OpenDlg.Filter = “音频文件(*.wav)|*.wav|所有文件 (*.*)|*.* OpenDlg.ShowOpen If OpenDlg.FileName Then 播放媒体的代码放在下面 End If End Sub8.1 Visual Basic程序设计8.1.4 菜单设计 菜单控件是一个对象,它与其他对象一样,具有定义它的外观与行为的属性。在设计或运行时可以设置 Caption 属性、Enabled 和 Visible 属性、Checked 属性以及其他属性。 菜单控件只包含一个事件,即 Click 事件,当用鼠标或键盘选中该菜单控件时,将调用该事件。 8.1 Visual Basic程序设计8.1.4 菜单设计 1使用菜单编辑器 在Visual Basic中设计菜单非常容易,先选中你要添加菜单的Form窗体,然后在工具条上点击“菜单编辑器”按钮便可以打开“菜单编辑器。 菜单控件在菜单控件列表框中的位置决定了该控件是菜单标题、菜单项、子菜单标题,还是子菜单项 。8.1 Visual Basic程序设计8.1.4 菜单设计 2为媒体播放机添加菜单 我们现在可以为我们的媒体播放机设计一个大体的框架了。首先启动Visual Basic,并打开我们前面保存的工程。选中frmMain,并点击“菜单编辑器”按钮来设计菜单。 要注意我们必须为每一个菜单项定义一个名字。在菜单结构里,不妨将菜单项的名字依次定义为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)|*.wav|所有文件(*.*)|*.* OpenDlg.ShowOpen If OpenDlg.FileName Then 播放媒体的代码放在下面 End IfEnd Sub 然后删除bt1的Click事件的代码并删除bt1命令按钮 8.1 Visual Basic程序设计8.1.4 菜单设计 2为媒体播放机添加菜单 为程序添加一个About窗口。 点击工具条的“添加窗口”按钮或菜单“工程”“添加窗体”,则显示添加窗体对话框。你可以选择“窗体”类型,然后自己设计About窗口,但更简单的是选择“关于对话框类型”。选定后按打开按钮。 新添加的About窗口的名字为frmAbout,我们先把它与“帮助”“关于播放器”菜单项menuAbout联系起来。在 menuAbout的click事件中添加代码如下: Private Sub menuAbout_Click() frmAbout.Show 1 End Sub8.1 Visual Basic程序设计8.1.4 菜单设计 2为媒体播放机添加菜单 Show是窗体对象的方法,用来显示窗体,它有两个参数表示显示方式。我们这里只用了第一个。1表示将窗体显示为模式对话框,如果你想显示为无模式对话框,可以不用参数。8.1 Visual Basic程序设计8.2.1 媒体控制接口 MCI(Media Control Interface)是Microsoft公司为实现Windows系统下设备无关性而提供的媒体控制接口标准。MCI是一个高级的函数调用接口,它包含在MMSYSTEM.DLL中,用来协调事件以及MCI设备驱动程序间的通信。利用MCI,多媒体应用程序可以控制各种各样的多媒体设备和文件。8.2 使用媒体控制接口(MCI) 8.2.1 媒体控制接口 MCI可以分为简单设备和复合设备两种。简单设备是一种使用时不必指定相关媒体文件的设备,例如用CDROM播放音频光盘时系统打开的就是简单设备。而复合设备是一种播放那个特定媒体文件(称为设备元素)的设备,例如MIDI音序器、MPEG文件解压播放等。如果你想使用这一类符合复合设备,则必须提供相应的MIDI或MPEG文件名。8.2 使用媒体控制接口(MCI) 8.2.1 媒体控制接口 设备名是在注册表或SYSTEM.INI的mci部分定义的,典型的mci段如下所示: mci cdaudio=mcicda.drv sequencer=mciseq.drv waveaudio=mciwave.drv avivideo=mciavi.drv videodisc=mcipionr.drv 等号的左边是设备名,右边是对应的MCI驱动程序。当安装了新的MCI驱动程序时,系统要用不同的设备名来区分。设备名通常与驱动程序中的设备类型名相同,如cdaudio和waveaudio等,也有例外,如avivideo设备是一个digitalvideo类型的设备。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 MyDev1 用Close 指令关闭打开的设备。命令格式为: Close 例如: Close MyDev18.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全屏显示,从第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 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) 设备上的多媒体文件的记录与回放。从概念上说,这种控件就是一组按钮,它被用来向诸如声卡、MIDI 序列发生器、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 Multimedia 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。如果不想使用控件中的按钮,而只是想用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控件就启用指定MCI设备类型在当前模式下所支持的全部按钮。这一属性还会禁用那些MCI设备类型在当前模式下不支持的按钮。 Button Visible属性 Button Visible属性用来决定某按钮在MCI控件中是否可见。例如如果编写CD-Play,那么我们不需要Record按钮,于是可以设置为: MMControl1.RecordVisible = False8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 2. 常用的MCI 控件属性 (2) Command属性 在设计时,该属性不可用。语法为: 控件的名称.Command = 命令字符串 该属性指定将要执行的MCI命令,其中命令字符串可以是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等。打开简单设备时,该属性必须设置。如果文件的扩展名没有指定将要使用的设备,那么打开复杂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 设备的当前状态。设计时不可用,运行时是只读的。 例如属性值为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 使用媒体控制接口(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控制的按钮上按下或释放鼠标时产生该事件,每一个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 MCI 控件 4为媒体播放机增加播放功能 修改menuOpen的Click事件的代码如下: Private Sub menuOpen_Click() OpenDlg.DialogTitle = 请选择要播放的媒体文件 OpenDlg.Filter = “音频文件(*.wav,*.mp3)|*.wav;*.mp3|视频文 件(*.avi,*.mpg)|*.avi;*.mpg|所有文件(*.*)|*.* OpenDlg.ShowOpen If OpenDlg.FileName Then 播放媒体的代码放在下面 Mmci.FileName = OpenDlg.FileName 如果设备已经打开,则关闭它。8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能 If Mmci.Mode mciModeNotOpen Then Mmci.Command = Close End If 打开设备 Mmci.Command = Open 判断设备是否需要显示窗口,若需要,则设置为Winout If Mmci.UsesWindows Then Mmci.hWndDisplay = Winout.hWnd End If End IfEnd Sub8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能 用一个slider控件作为进度器。选择“工程”“部件”菜单命令,在出现的部件窗口中选择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 MCI 控件 4为媒体播放机增加播放功能 Private Sub Form_Load() 以毫秒为单位 Mmci.TimeFormat = 0 Mmci.Notify = TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer) 别忘了关闭设备 Mmci.Command = CloseEnd SubPrivate Sub menuAbout_Click() frmAbout.Show 1End Sub8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能Private Sub menuOpen_Click() OpenDlg.DialogTitle = 请选择要播放的媒体文件 OpenDlg.Filter = 音频文件(*.wav,*.mp3)|*.wav;*.mp3|视频文件(*.avi,*.mpg)|*.avi;*.mpg|所有文件(*.*)|*.* OpenDlg.ShowOpen If OpenDlg.FileName Then 播放媒体的代码放在下面 Mmci.FileName = OpenDlg.FileName 如果设备已经打开,则关闭它。 If Mmci.Mode mciModeNotOpen Then Mmci.Command = Close End If 打开设备 Mmci.Command = Open8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能 判断设备是否需要显示窗口,若需要,则设置为Winout If Mmci.UsesWindows Then Mmci.hWndDisplay = Winout.hWnd End If 用媒体的总长度设置Slider1的Max Slider1.Max = Mmci.Length End IfEnd Sub8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能 Private Sub Mmci_Done(NotifyCode As Integer) 如果MCI正常完成,把位置定位到0 If NotifyCode = 1 Then Mmci.To = 0 Mmci.Command = Seek End IfEnd SubPrivate Sub Mmci_StatusUpdate() 媒体改变位置时,改变Slider1的值 Slider1.Value = Mmci.PositionEnd SubPrivate Sub Slider1_Scroll() Slider1发生改变时,对媒体重新定位 Mmci.To = Slider1.Value Mmci.Command = SeekEnd Sub8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能 给程序增加播放VCD的功能。 首先在菜单中添加“文件”“播放vcd”“没有光驱”,其中“播放vcd”的命名为menuPlayVcd,“没有光驱”命名为menuCDROM并设其索引(index)属性为0,这样“ 没有光驱”便成为一个菜单数组。另外,再在frmMain窗口中添加一个ListBox控件,其名字就用List1,ListBox用来列表VCD中的视频文件。 8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能 8.2 使用媒体控制接口(MCI) VCD的视频文件播放时用的多媒体设备为MPEGVideo,文件一般存放在MPEGAV目录下,文件名后缀为.DAT。我们首先要做的是当程序启动时,把“ 没有光驱”菜单项替换成光驱的列表。 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能在frmMain的Load事件中添加如下代码: 获取所有光盘驱动器 Dim fs, d, s, Index Set fs = CreateObject(Scripting.FileSystemObject) Set d = fs.Drives 驱动器集合 Index = 0 For Each s In d If s.DriveType = 4 Then CD-ROM的DriveType为4 If Index 0 Then Load menuCDROM(Index) 装入菜单 End If更改菜单标题 menuCDROM(Index).Caption = s.DriveLetter + : Index = Index + 1 End If Next8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能 我们的设想是当点击光盘驱动器对应的菜单项时,程序能把所有视频文件名读到List1中去。另外,为了记住这些文件是从哪一个光盘驱动器中读取,我们还需要定义一个模块变量VcdPath,定义其类型为String。我们在菜单menuCDROM的click事件中添加如下代码:Private Sub menuCDROM_Click(Index As Integer) Dim fs, f, fc On Error Resume Next 发生错误,则忽略到下一句8.2 使用媒体控制接口(MCI) 8.2.3 Multimedia MCI 控件 4为媒体播放机增加播放功能以下代码为读取mpegav目录下的所有文件 List1.Clear VcdPath = menuCDROM(Index).Caption + mpegav Set fs = CreateObject(Scripting.FileSystemObject) Set f = fs.GetFolder(VcdPath) Set fc = f.Files For Each s In fc List1.AddItem s.Name Next 发生错误,表示没有找到VCD If Err Then MsgBox 没有发现VCD! End If End Sub8.2 使用媒体控制接口(MCI) 8.3.1API函数调用规则 1什么是API? API一般是指Windows API,它包括构成 Windows 操作系统的各种 DLL。每个 Windows 应用程序都直接或间接地与 Windows API 互动。Windows API 保证 Windows 下运行的所有应用程序的行为方式一致。 调用Windows应用程序编程接口 (API) 和其他动态链接库 (DLL) 中的函数可对应用程序进行扩展。在VB 中,我们可使用 Windows API 中的大部分函数,这意味着我们不仅能控制自己的应用程序,而且还可以控制相当一部分操作系统。而且,当学会使用 VB 调用 DLL 函数后,就可以调用几乎任何 DLL 中的函数。这样,就可以利用那些 C 和 C+ 程序中使用的典型技术了。8.3 使用API多媒体函数8.3.1API函数调用规则 2在VB中声明API 要使用一个API函数,需要用一个 Declare 语句来声明这个函数。 如果该过程返回一个值,应将其声明为 Function:Declare Function publicname Lib libname Alias alias (参数列表) As Type如果过程没有返回值,可将其声明为 Sub:Declare Sub publicname Lib libname Alias alias (参数列表) 一般我们建立一个全程模块(.bas文件)来存放这些声明,以便我们在程序的任何地方都可以调用这些API。如果在其他类型的模块中定义的API是模块私有的,必须在它们前面声明 Private 关键字,以示区分。8.3 使用API多媒体函数8.3.1API函数调用规则 2在VB中声明API 例如: Declare Function GetWindowRect Lib user32 Alias GetWindowRect (ByVal hwnd As Long, lpRect As RECT) As Long GetWindowRect是一个Windows API函数,它用来获得窗口的区域框。 一旦声明了一个API函数后,在VB中使用该函数的方法就如同使用一般的VB函数或过程。8.3 使用API多媒体函数8.3.1API函数调用规则 3使用 API Viewer 应用程序 API Viewer 应用程序可以用来浏览包含在文本文件或者 Microsoft Jet 数据库中的声明语句、常数、类型。找到自己需要的过程之后,可将代码复制到剪贴板上,然后将其粘贴到 Visual Basic 应用程序中。 Win32api.txt 文件中包含 Visual Basic 中经常使用的许多 Windows API 的过程声明,该文件位于 Visual Basic 主目录下的 Winapi 子目录中。要使用该文件中的函数、类型等定义时,使用API Viewer将其从该文件复制到 Visual Basic 模块中即可。 8.3 使用API多媒体函数8.3.1API函数调用规则 3使用 API Viewer 应用程序 要查看一个 API 文件,请按照以下步骤执行: (1)“外接程序”菜单中,打开外接程序管理器并加载“API 浏览器”。 (2)“外接程序”菜单中单击“API 浏览器”。 打开您想查看的文本或数据库文件。 要将一个文本文件加载到浏览器中,单击“文件 加载文本文件”并选择该文件。 要加载一个数据库文件,请单击“文件 加载数据库文件”。 (3)从“API 类型”列表中选择您想查看的项目类型8.3 使用API多媒体函数8.3.1API函数调用规则 4常用的MCI函数。 为我们提供了一个关于多媒体处理的动态连接库WINMM.DLL(旧版本为MMSYSTEM.DLL),通过调用它所提供的API函数,就可以使用MCI指令进行多媒体方面的操作了。常用的有:mciExecute,mciSendString, mciGetErrorString等等。8.3 使用API多媒体函数8.3.1API函数调用规则 4常用的MCI函数。 我们可以用API Viewer查看它们的声明: Public Declare Function mciExecute Lib winmm.dll Alias mciExecute (ByVal lpstrCommand As String) As Long Public Declare Function mciSendString Lib winmm.dll Alias mciSendStringA (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long Public Declare Function mciGetErrorString Lib winmm.dll Alias mciGetErrorStringA (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long8.3 使用API多媒体函数8.3.1API函数调用规则 4常用的MCI函数。 mciExecute函数和mciSendString函数都可以用来执行一连串的MCI指令串,用参数lpstrCommand指明。 mciSendString不同于mciExecute的是它还返回设备执行MCI指令后传递给应用程序的文字信息,lpstrReturnString存放这些信息内容,uReturnLength是信息内容的长度。 在mciSendString函数中的第4个参数是回调窗口的句柄,在VB中建立windows的 Proc过程,并通过使用Windows的SetWindowLong函数和Vb中的AddressOf函数给指定的窗口设定Proc过程,通过在Proc过程中处理相关消息实现回调。8.3 使用API多媒体函数8.3.1API函数调用规则 4常用的MCI函数。 mciExecute函数和mciSendString函数如果执行不成功,就返回一个非零的错误代码,我们可以通过mciGetErrorString函数得到错误代码的文字信息。 lpstrBuffer为存放文字信息的缓冲区,uLength则返回使用缓冲区的长度。 例如,要播放播放CD的第5秒到第20秒的代码如下: ErrCode = mciExecute(play CDAudio from 5000 to 20000) 或 ErrCode = mciSendString(play CDAudio from 5000 to 20000,lpRetStr,uRetLength,0)8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 修改一下前面我们做的媒体播放机,可以实现通过用API函数发出MCI指令来代替使用Multimedia MCI 控件。 删除Mmci控件以及与Mmci控件控件有关的所有代码。只保留Form_Load(),menuAbout_Click(),menuCDROM_Click(Index As Integer)和menuOpen_Click()的全部或部分代码。8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 在原来MCI控件的位置,我们设计3个按钮ButtonPlay, ButtonPause,ButtonStop。 用绘图工具绘制3个图标:play.bmp, pause.bmp, stop.bmp,分别用来指示用户执行播放,暂停,停止的操作。 把ButtonPlay,ButtonPause和ButtonStop的Style属性设为VbButtonGraphical,把它们的Caption属性设为空串,并把Picture属性分别设为play.bmp, pause.bmp和stop.bmp。 8.3 使用API多媒体函数 8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 在工程中添加一个模块Common.bas,可以使用在API Viewer程序将mciExecute,mciSendString, mciGetErrorString的声明添加到模块中。因为我们主要通过mciSendString来发送MCI指令,为此我们在Common模块添加一个Exec_MciCmd函数以方便使用。 8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 Public Declare Function mciExecute Lib winmm.dll ( _ ByVal lpstrCommand As String) As Long Public Declare Function mciGetErrorString Lib winmm.dll Alias mciGetErrorStringA _ (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long Public Declare Function mciSendString Lib winmm.dll Alias mciSendStringA _ (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 Public Function Exec_MciCmd(ByVal cmd As String, Optional ByRef lpRet As String) As Long Dim lpRetStr As String * 128 Dim nPos As Integer Dim errCode As Long On Error Resume Next errCode = mciSendString(cmd, lpRetStr, 128, 0) If errCode Then 获得错误的文字信息 mciGetErrorString errCode, lpRetStr, 128 End If 如果执行成功,lpRet返回命令读取内容,否则返回错误的文字信息。 nPos = InStr(lpRetStr, Chr(0) lpRet = Left(lpRetStr, nPos - 1) Exec_MciCmd = errCodeEnd Function8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 这里Exec_MciCmd函数实现的功能是:如果MCI执行成功,pRet返回命令读取内容,否则返回错误的文字信息;函数返回的是错误码,执行成功为0。Exec_MciCmd函数有两个参数:第一个为MCI指令串,第二个为可选参数,用来返回文字信息。8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 要播放一个多媒体文件,首先要打开媒体设备。打开媒体设备后,我们还要获取媒体的长度以便用Slider1显示当前的位置。另外,如果是视频媒体,我们还需要把显示窗口设置到WinOut控件内。 在frmMain模块中添加下面的子过程: Private Sub Open_MCIFile(nf As String) Dim lpStr As String Dim errCode As Integer8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 Winout.Cls 如果设备已经打开,则关闭它。 Exec_MciCmd Close MyDev, lpStr 打开设备 Exec_MciCmd Open & nf & alias MyDev 用媒体的总长度设置Slider1的Max errCode = Exec_MciCmd(set MyDev time format milliseconds, lpStr) errCode = Exec_MciCmd(status MyDev length wait, lpStr) If errCode = 0 Then Slider1.Max = Val(lpStr) 判断设备是否需要显示窗口,若需要,则设置为Winout errCode = Exec_MciCmd(window MyDev handle & Winout.hWnd, lpStr)End Sub8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 为了使用方便,我们把设备名称统一为MyDev。为实现这一点,在每次打开设备时我们用alias MyDev作为参数就行了。 有了上面的过程,我们在menuOpen_Click过程中需要添加播放媒体代码的地方只要加上一句代码就可以了: Open_MCIFile OpenDlg.FileName8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 为按钮ButtonPlay, ButtonPause,ButtonStop的Click事件添加代码: Private Sub ButtonPause_Click() Exec_MciCmd pause MyDev End Sub Private Sub ButtonPlay_Click() Exec_MciCmd play MyDev End Sub Private Sub ButtonStop_Click() Exec_MciCmd stop MyDev End Sub8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 要解决用Slider1显示当前位置的问题。我们可以通过给窗口的WINPROC设定回调函数,在函数中通过响应由媒体设备发来的notify消息来实现这一点。但更为简单的办法是使用Timer控件定时检测媒体设备的position。 用Timer控件来实现媒体设备当前位置的显示。 先在frmMain中添加一个Timer控件Timer1,把Timer1的Interval属性设为100(即0.1秒),然后在Timer1的Timer事件中添加如下代码: 8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 Private Sub Timer1_Timer() Dim lpStr As String Dim errCode As Integer On Error Resume Next 发生错误,忽略到下一句 errCode = Exec_MciCmd(status MyDev position, lpStr) If errCode = 0 Then Slider1.Value = Val(lpStr) End If errCode = Exec_MciCmd(status MyDev mode wait, lpStr) End Sub8.3 使用API多媒体函数8.3.1API函数调用规则 5在媒体播放机中用API函数取代MCI 控件 在Slider1的Scroll事件中添加如下代码,以便当用户拖拉Slider的滑块时正确设定媒体设备的位置。Private Sub Slider1_Scroll() Dim lpStr As String Dim errCode As Integer On Error Resume Next 发生错误,则忽略到下一句 Timer1.Enabled = False errCode = Exec_MciCmd(status MyDev mode wait, lpStr) Exec_MciCmd seek MyDev to & Slider1.Value & wait If lpStr = playing Then Exec_MciCmd play MyDev End If Timer1.Enabled = TrueEnd Sub8.3 使用API多媒体函数8.3.2 使用波形音频函数 微软公司在多媒体处理的动态连接库WINMM.DLL中提供了一组Waveform Audio函数,提供了对波形音频从录制、编辑到播放的一整套方法。 8.3 使用API多媒体函数8.3.2 使用波形音频函数 1音频播放函数 (1) sndPlaySound函数 sndPlaySound函数sndPlaySound可以实现小型WAV文件的播放。其声明如下: Public Declare Function sndPlaySound Lib winmm.dll Alias sndPlaySoundA _ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long。 其中参数lpszSoundName为所要播放的声音文件,uFlags为播放声音文件时所用的标志位,如SND_ASYNC、SND_LOOP和SND_SYNC等等,这些常量的值可以通过API Viewer程序查询。sndPlaySound使用比较简单,一般适合于播放较小的文件。8.3 使用API多媒体函数8.3.2 使用波形音频函数 1音频播放函数 (2) PlaySound函数 sndPlaySound函数sndPlaySound可以实现WAV文件的播放。sndPlaySound函数在功能上是本函数子集。其声明如下: Public Declare Function PlaySound Lib winmm.dll Alias PlaySoundA _ (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long 其中参数lpszSoundName为所要播放的声音文件、波形的别名或资源的ID,如果为空则停止当前正在播放的波形;hModule为资源句柄,若不使用资源本参数必须为0;dwFlags为播放波形的文件时所用的标志位,如SND_ASYNC、SND_LOOP、SND_ALIAS、SND_RESOURCE和SND_SYNC等等,这些常量的值可以通过API Viewer程序查询。8.3 使用API多媒体函数8.3.2 使用波形音频函数 2.控制音量 在window中,声音的主音量会受到各种声音设备如波形,合成器,线路输入和其他辅助设备的音量的影响。 (1) 主音量 在Window中要控制主音量,需要通过控制混音器(Mixer)来实现。在WINMM.DLL中提供了一组Mixer函数,利用它们就能实现主音量的控制。8.3 使用API多媒体函数8.3.2 使用波形音频函数 2.控制音量 混音器由多个混音线路组成,在Mixer函数中可以通过读取和设置混音线路的控制信息来实现对混音器的控制。控制主音量线路是声卡的喇叭,我们必须要先得到喇叭控制的句柄才能控制主音量。 用mixerGetLineInfo和mixerGetLineControls函数可以得到喇叭控制的句柄。这俩函数中用到了MIXERLINE, MIXERLINECONTROLS 和MIXERCONTROL三个结构。 MIXERLINE提供了线路的信息,MIXERCONTROL提供了关于一个线路控制的信息,MIXERLINECONTROLS结构提供了线路的所有控制的信息。 我们可以用mixerSetControlDetails函数和mixerGetControlDetails函数通过使用MIXERCONTROLDETAILS结构来设置喇叭控制的主音量。 8.3 使用API多媒体函数8.3.2 使用波形音频函数 2.控制音量 由于上面的几个函数需要用到指向结构的指针,而VB中没有指针类型,为此,我们采用用GlobalLock函数分配与结构大小相同的内存,并用MoveMemory函数实现该内存与结构的内容复制。因为在MoveMemory函数中,指向内存的参数需要用传值,而指向结构的参数需要传引用,所以我们把MoveMemory声明成两个函数:CopyMemtoPtr 用来实现VB结构的数据到内存的复制,而CopyMemtoVar用来实现内存数据到VB结构的复制。 8.3 使用API多媒体函数8.3.2 使用波形音频函数 2.控制音量 (2) 波形音量 波形音频文件是在计算机领域最常用的数字化声音文件格式,它是微软专门为Windows系统定义的波形文件格式(Waveform Audio),由于其扩展名为.WAV,因而该类文件也被称为WAVE文件。波形音量是指播放波形音频文件格式设备的音量。 waveOutGetNumDev函数用来获取系统提供的声音播放设备的数量。其声明如下: Public Declare Function waveOutGetNu
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:大学多媒体制作技术及应用-宗绪锋-PPT文稿资料课件PPT
链接地址:https://www.renrendoc.com/p-21836017.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!