说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

利用Visual Basic设计多媒体应用程序

HTML文档下载 WORD文档下载 PDF文档下载
利用Visual Basic设计多媒体应用程序
一、前言
  随着多媒体硬件环境和软件环境的不断完善,目前,大部分计算机软件开发中都涉及多
媒体软件技术的应用。
  进行多媒体应用程序设计,从原理上说,可以采用从C++到多媒体专用开发系统(如
TOOLBOOK、AUTHORWARE、DIRECTOR)等多种层次的工具。然而,由于多媒体软件涉及的媒体
复杂多样、开发周期短并且需要多种专业人员参与,因此,为了能进行实用高效的开发,必
须选用简单易用、开发效率高的软件。
  Visual Basic是Microsoft公司开发的Windows编程工具软件。由于它具有先进的设
计思想、快速易掌握的使用方法及控制媒体对象手段灵活多样等特点,受到了多媒体软件开
发人员的关注和青睐,也因此成为多媒体应用程序开发的理想工具。

二、Visual Basic的多媒体控件MCI.OCX

  MCI(媒体控制接口)是Microsoft公司为实现Windows系统下设备无关性而提供的媒
体控制接口标准。用户可以方便地使用MCI控制标准的多媒体设备。

  MCI包含在Windows多媒体扩展的MMSYSTEM模块中,用来协调事件间以及MCI设备驱
动程序间的通讯,提供了与设备无关的接口属性。通常应用程序是通过指定一个MCI设备类
型来区分MCI设备,设备类型指明了当前实际使用设备的物理类型,不同的设备类型使用不
同的控件属性来进行描述(见附表1)。

  从使用的控制方式上来说,MCI设备分为复合和简单两类。一个简单MCI设备并不需要
设备元素。例如,CD音频和音碟机就是在一个已经安装好了的硬盘上工作的,它们不需要
应用程序为其操作的媒体内容提供任何信息。但对于复合的MCI设备,就需要应用程序提供
设备元素,即一个包含全部路径名的源数据文件或目的文件。

  Visual Basic语言的Custom Control(用户控制部件)概念体现了当今软件设计的发
展潮流--面向对象技术,编程者可以在Visual Basic的工具箱(Toolbox)中嵌入各式各样
五花八门的用户控件,每个用户控制部件都有一定的属性和操作方法,编程者通过属性的设
置和方法的控制完成特定的功能。为了方便地控制多媒体,在专业版Visual Basic工具箱
中提供了一个用于多媒体目的的用户控件--MCI.OCX。

  多媒体MCI控件MCI.OCX专用于对多媒体控制接口MCI设备的多媒体数据文件实施记录
和回放,从目的效果上来说,该控件通过一组按钮来发出种种设备控制命令以实现对诸如:
音频面板、MIDI音序器、CD-ROM驱动器、音频CD播放机、录像带播放、录音带录放等设备
的控制。在Visual Basic程序设计时,当在表中加入多媒体MCI控件时(在工具箱内双击
MCI控件),则出现下列按钮群:向前(Prev)、向后(Next)、播放(Play)、暂停(Pause)、
返回(Back)、单步(Step)、停止(Stop)、记录(Record)和出带(Eject)。

  应用程序对MCI的这组按钮操作非常灵活方便,如当我们打开一个MCI设备后,就可以
根据该设备类型的属性随时从控件中选择合适的状态按钮来表示即刻设备的物理状态。所有
MCI控件可以有下列几种方式来编程:⑴控件及其各按钮的可见性和使能性;⑵可变或完全
对控件进行重新定义;⑶在一个窗口表格中可以同时控制多个设备。

三、多媒体控制部件MCI.OCX的调用
  在Visual Basic3.0专业版中,多媒体控件MCI.OCX(在Visual Basic 3.0和4.0中,
多媒体控件的扩展名为.VBX)是作为可选用部件提供的。为了使用它,首先要执行File\Add
File菜单命令,把Windows\system目录下的MCI.OCX加入到工具箱(Toolbox)中,这时
会在工具箱中出现相应的MCI.OCX图标。如果使用的是Visual Basic4.0版(或5.0版),
选择Tools\Custom Controls菜单或直接键入Ctrl+T,即可出现对话框,在Available
Controls列表框中选中Microsoft Multimedia Controls条目旁边的检查框,同样会在工
具箱中出现MCI.OCX图标。
  双击工具箱中的多媒体控件MCI.OCX图标,调用MCI.OCX控件之后,表单FORM中将出
现一排灰色的媒体控制按钮(九个)。

四、Visual Basic多媒体应用程序设计步骤
  多媒体控件MCI.OCX包含有一组高级的与设备无关的控制命令。在使用该多媒体控件
时,首先用OPEN命令打开MCI设备(多媒体设备)并建立一个与之对应的文件,以便来进行
录或放等操作(但是对诸如CDAudio、VCR和录像带不能使用相应文件)。一旦设备打开成功,
就可以向它发出各种操作命令(见附表的按钮命令)来完成指定的工作任务。最后记住,要
用Close命令来关闭设备和数据文件。
  使用MCI.OCX来进行多媒体应用程序开发是很方便的,因为大多数属性都是容易理解
的,其中Command属性尤为重要,它是在运行过程中向多媒体设备发命令。格式为:
  Form.MMcontrol.Command=cmdstring$
  其中,cmdstring$变量是如下可执行命令名:Open、Close、Play、Pause、Stop、Back、
Step、Prev、Next、Seek、Record、Eject、Sound和Save。一旦给其命令设置,它就立刻
执行,所发生的错误存在Error属性中。
  下面以播放DEMO.WAV(波形文件)文件为例,说明Visual Basic多媒体应用程序设计
步骤。
  首先,创建一个包含有多媒体控件(MCI.OCX)的表格(Form),于是屏幕上显示出形状
类似录音机的控制键,不过这时多媒体控制部件是不能马上拿来用的(各键呈灰色),须通
过程序代码来改变键的状态。
  其次,在Form_Load过程中,插入相应程序代码。如下
  Sub Form_Load()
  ‘在发出 OPEN 命令前要设置多媒体设备的属性
  Form1.MMControl1.Notify=False
  Form1.MMControl1.Wait=True
  Form1.MMControl1.Shareable=False
  Form1.MMControl1.DeviceType="WaveAudio"
  Form1.MMControl1.FileName="c:\windowss\
  mmdata\demo.wav"
  Form1.MMControl1.Command="Open"
  End Sub

  最后,运行上述程序,控制键呈黑色,这时就可以使用Play、Record等键操作数据文
件DEMO.WAV了。例如用鼠标点按Play键就能听到.WAV音效(计算机应装有发音设备)。
  通过上面陈述,不难发现,Visual Basic利用多媒体控件MCI.OCX设计多媒体应用程
序很容易掌握。

五、Visual Basic多媒体应用程序设计实例
  1、播放CD音乐
  在很多多媒体软件系统中,都提供了激光唱盘的播放软件,利用多媒体控件MCI.OCX,
我们可以轻松地编制出符合自己使用要求的简易激光唱盘播放机。
  表1给出了简易CD播放器的主要控制部件定义,其后是对应于各个触发事件的源程序
代码。
完整的源程序清单如下:
  'CD播放机实用程序
  '运行程序前请在CD-ROM驱动器中装入一张激光唱碟’“LOAD”按钮触发事件
  Private Sub Command1_Click()
  '装入CD唱片
  On Error GoTo MCI_ERROR
  MMControl1.Command = "Open"
  On Error GoTo 0
  '设置时间格式
  MMControl1.TimeFormat = vbMCIFormatTmsf
  '关闭LOAD按钮,显示图片
  Command1.Enabled = False
  Picture1.Picture = Picture3.Picture
  ' 设置初始轨道数
  Label1.Caption = "1"
  Exit Sub
  MCI_ERROR:
  DisplayErrorMessageBox
  Resume MCI_EXIT
  MCI_EXIT:
  Unload CD
  End Sub

  Private Sub Form_Load()
  MMControl1.Wait = True
  MMControl1.UpdateInterval = 0
  ' 设置设备类型
  MMControl1.DeviceType = "CDAudio"
  '设置缺省轨道数为0
  Label1.Caption = "0"
  End Sub

  Private Sub Form_Unload(Cancel As Integer)
  MCITest.Show
  End Sub

  ’“出带”按钮触发事件
  Private Sub MMControl1_EjectClick(Cancel As Integer)
  Command1.Enabled = True
  Picture1.Picture = Picture2.Picture
  MMControl1.UpdateInterval = 0
  On Error GoTo MCI_ERROR2
  MMControl1.Command = "Eject"
  MMControl1.Command = "Close"
  On Error GoTo 0
  Label1.Caption = "0"
  Label3.BackColor = &H404040
  Exit Sub
  MCI_ERROR2:
  DisplayErrorMessageBox
  Resume Next
  End Sub

  ’“向前”按钮触发事件
  Private Sub MMControl1_NextCompleted(ErrorCode As Long)
  Label1.Caption = Str$(MMControl1.Track)
  End Sub

  ’“暂停”按钮触发事件
  Private Sub MMControl1_PauseClick(Cancel As Integer)
  MMControl1.UpdateInterval = 0
  Label3.BackColor = &H404040
  End Sub

  ’“播放”按钮触发事件
  Private Sub MMControl1_PlayClick(Cancel As Integer)
  MMControl1.UpdateInterval = 1000
  Label1.Caption = Str$(MMControl1.Track)
  End Sub

  ’“向后”按钮触发事件
  Private Sub MMControl1_PrevCompleted(ErrorCode As Long)
  Label1.Caption = Str$(MMControl1.Track)
  End Sub
  
  Private Sub MMControl1_StatusUpdate()
  Label1.Caption = Str$(MMControl1.Position And &HFF)
  If MMControl1.Mode = vbMCIModePlay Then
  Label3.BackColor = &H80FF&
  Else
  Label3.BackColor = &H404040
  End If
  End Sub
 
  ’“停止”按钮触发事件
  Private Sub MMControl1_StopClick(Cancel As Integer)
  MMControl1.UpdateInterval = 0
  Label3.BackColor = &H404040
  MMControl1.To = MMControl1.Start
  MMControl1.Command = "Seek"
  MMControl1.Track = 1
  Label1.Caption = "1"
  End Sub

  2、播放AVI(音频视频接口)文件
  电影(包括声音和图像)是广大计算机工作者最为关心的媒体信息之一,电影处理技术
也是多媒体关键技术之一。而在多媒体系统中,AVI(Audio Video Interface,音频视频接
口)文件是存储电影(包括声音和图像)的标准格式,这些AVI文件一般是通过捕获实时视
频信号得来的,也可以通过扫描仪获取图像或者使用动画制作软件得到。于是,屏幕窗口上
的音频视频操作,就变成了对AVI文件(文件后缀为AVI)的处理。
在实际工作中,播放AVI文件(即影片)的方法有许多种,而其中以利用Visual Basic的
多媒体控件方法最为简单、方便。下面以一个具体实例来说明如何播放AVI文件:假设用户
当前目录下有名字为DEMO.AVI的视频音频文件,则利用Visul Basic播放该影片需要经过
如下步骤:
  (1)在Visual Basic的窗体中加入一个MMControl多媒体控件、一个PictureBox图
片框控件和两个ComandButton命令按钮部件;
  (2)设置各个控件的属性,其中窗体命名为Form1,MMControl多媒体控件命名为
MMControl1、PictureBox图片框控件命名为Picture1、两个ComandButton命令按钮控件分
别命名为Play和Close;
  (3)编写各触发事件源程序代码并且运行。源程序代码为:
  Private Sub Play_Click()
  MMControl1.Filename = "DEMO.AVI"
  MMControl1.DeviceType= = "AVIVIDEO"
  MMControl1.hWndDisplay = Picture1.hWnd
  MMControl1.Command = "OPEN"
  MMControl1.To = 1
  MMControl1.Command = "SEEK"
  MMControl1.Command = "PLAY"
  End Sub
  Private Sub Close_Click()
  MMControl1.Command = "STOP"
  MMControl1.Command = "CLOSE"
  End Sub
  值得注意的是:在播放AVI文件之前,首先应该把AVI(音频视频)驱动程序安装在Windows
下。AVI的驱动程序名为MCIAVI.DRV,必须将它拷贝到\WINDOWS\SYSTEM目录下,同时在
SYSTEM.INI文件的[MCI]部分加上:
  AVIVIDEO=MCIAVI.DRV
  这样,运行Windows时,Windows会自动地将AVI的驱动程序安装好。
  以上仅描述了利用多媒体控制部件播放音频文件(.WAV)、CD唱片和音频视频文件
(.AVI)的操作过程。实际上利用多媒体控制部件同样可以播放动画文件(.FLI、.FLC)、MIDI
文件等其他媒体信息。

六、结束语
  通过前面论述,不难看出:利用Visual Basic提供的多媒体控制部件MCI.OCX,广大
计算机用户可以方便、快捷、高效率地开发出各种多媒体应用程序。但需要强调的是:开发
设计Visual Basic多媒体应用程序,除了可以利用多媒体控制部件以外,还可以采用其他
手段,例如通过调用API函数等等(鉴于篇幅,这里未做讨论)。可见, Visual Basic确
实是专业与非专业多媒体软件开发人员共同拥有的理想开发工具。



附表1 MCI设备类型定义
设备类型   设备描述
CDAudio    激光唱盘播放设备
DAT      数字化磁带音频播放机
DigitalVideo 动态数字视频图像设备
Animation  动画播放设备
Other    未给出标准定义的MCI设备
Overlay    模拟视频图像叠加设备
Sequence    MIDI音序发生器
VCR     可以使用程序控制的磁盘录像机
VideoDisc   可以使用程序控制的激光视盘机
WaveAudio  播放数字化波形音频的设备

附表2 多媒体控制部件特有事件列表
事件       说明
Done        完成MCI命令动作(Notify为真)
ButtonClick    单击按钮
ButtonCompleted 按钮执行命令完成
ButtonGetFocus  按钮获得输入焦点
ButtonLostFocus 按钮失去输入焦点
StatusUpdate   更新媒体控制对象的状态信息
Delphi中建表 Delphi中数据文件路径的管理 ODBC中的同步与异步执行模式-Delphi资料 SQL编程常见问题-Delphi资料 第11章 中级SQL-Delphi资料 第10章 SQL基础-Delphi资料 SQL语句中的删除和改变-Delphi资料 TDataLink类别的说明-Delphi资料 TDBGrid控件中对多个记录的处理-Delphi资料 安装BDE需要的东东-Delphi资料 保存DBGrid中栏的字段名及尺寸-Delphi资料 动态生成定义数据库-Delphi资料 动态组成SQL速句-Delphi资料 多层C/S的客户端调用服务器端的方法-Delphi资料 关于dephi数据库的动态建立-Delphi资料 基 于WEB 的 数 据 库 查 询-Delphi资料 计算数据库某字段的值-Delphi资料 计算字段值-Delphi资料 建立应用软件注册安全机制-Delphi资料 建立自己的数据字典库-Delphi资料 将BLOB字段的BMP图显示出来-Delphi资料 将图像放入数据库中-Delphi资料 解 决sybase 用 户 数 据 库 不 能 进 入 故 障 的 一 种 方 法-Delphi资 解决sybase用户数据库不能进入故障的一种方法-Delphi资料 解决一个DBF表时的"Index not found.."错误-Delphi资料 精简Delphi数据库应用系统 精简Delphi数据库应用系统-定制BDE驱动程序 精简数据库应用系统-Delphi资料 开 发 基 于ORACLE7 数 据 库 的 管 理 信 息 系 统-Delphi资料 开 发AS/400 应 用 系 统: PB5 与Delphi3 的 比 较 利 用Delphi 开 发 响 应 用 户 输 入 的 数 据 库 查 询Web Server 程 ※※ ¥8000 ~¥12000月薪能招到什么样的程序员? ※※ Java中字符串相等的判断! 各位高手请问VB.net里的ADO连接怎么做?请提供代码,谢谢? 我有一个DLL但是我不知道如何在Delphi中引用(不是COM),不过我有C++中的 ***.h文件 关于显示窗体的问题! 贡献500分或者更多,大家大讨论!! 为什么我的硬盘灯会一闪一闪的? sql 语句 错在哪儿??? 我调试了很久 什么样程序风格才最好的? 有关计算机方面的国标大家有列表吗,只要列表呀,我在论谈上找不到呀,谁给我一份了谢了! 如何知道串口上来数据了 在线等待:Windows启动时弹出“Exception EStackOverflow in moudle ...”的错误提示而无法运行Delphi的程序,why? 请高手指点一二。 简单问题:我却搞不定:--- vc7.0里面为什么不认cos、sin等数学函数? OracleOraHome81ManagementServer服务的启动问题。 activex 发布 用C#怎样得到一个dll文件的版本号呢? 问一个比较简单的问题! 关于msgbox的简单问题,才鸟求知,谢谢帮忙!!!!! 困惑。什么工作好啊,来者有分 大哥、大姐们,快拔刀吧! 如何取得SQL SERVER2000数据库某字段的空值? 如何用split分割纵向字符串?在线等候. 关于java workshop的问题(急) 向高手请教一个问题(硬编译),至少200分相送 为什么我用request.getPathInfo()取到的结果为空? c# 版的朋友们大家好!!新手登录,多多帮助! oracle触发1器 一个好多人问过的问题,可是我这里还是不能用,请在帮下忙 发布Applet出现的错误,帮忙撒 本人在PB开发中遇到莫名其妙的问题 强烈建议成立crack专栏,同意的请跟帖。 textbox的输入问题 我的98系统在重新启动后再进入系统时屏幕上会出现一闪闪的雪花点,这是为什么呀? 请教!谁会使用这个API函数(DbiPackTable),该函数在BDE32.HLP中。 一个循环问题,急急急!! mysql -h remotehost -u root连不上对方机子? 分布式应用中的服务器端访问当地窗口的问题 打印的问题,大家请看,得到你们的思路,马上给分! 我想做一个保存图片资源的dll文件,谁有这方面的文章和代码啊? 看一下这个ServiceApp.出错信息! 有专家吗?Cache问题 那里有linux原码下栽?不全也可以? 怎么用OPENCV?(50分) winsock下载FLASH动画的错误问题 好好看看这个妞,天机不可泄漏啊,哈哈哈哈 VxD 中如何使用 sprintf 等函数?[200 分] help me !!! 急急急!!! 有关datareport的问题! 中国面积有多大 催化剂(分析纯)能用来做什么水溶性反应——合格;杂质含量:澄清度——0.05%,水不溶物——0.001%,氯化物——0.01%,硫酸盐——0.002%,氮化合物——0.0005%,钾——0.0005%,铁——0.0005%,砷——0.000 Mount tai is such a attractive place of great interest _____everyone likes to visit .A.as B.whose C.which D.what答案给的是A 为什么 中国具体面积有多大? what kinds of jobs interest you most and least?英语怎么回答 hangzhou is an attractive place of interest ___everyone likes visit 这里填that as which 中请给出原因 铝壶怎样除水垢? 刮刀离心机下的料(12%水分)怎么往盘式干燥机输送,现在我们用的料斗料不能自动的放下来. it's fun to visit such a wonderful place(改为同义句) _ such a wonderful place is _.It's fun to visit such a wonderful place.(改为同义句)_ such a wonderful place is _. 某超市销售有甲、乙两种商品,甲商品每件进价10元,售价15元;乙商品每件进价30元,售(2008•遵义)某超市销售有甲、乙两种商品,甲商品每件进价10元,售价15元;乙商品每件进价30元,售价40 硫酸钾和锌反应,四氯化碳和锌反应方程式 我家用光触媒处理过了,是不是就没有甲醛了? 铝壶上的水垢为什么除不去 聚苯乙烯原料价格走向?越快越好! “光触媒”在什么地方可以买到?光触媒除甲醛的效果好吗? 某超市销售甲乙两种商品.甲商品进价10元,售价15元;乙商品每件进价30元,售价40元.该超市为使甲乙两种商品共80件的总利润不少于600元,但又不超过610元,请你帮助该超市设计相应的进货方案. what place are you going to visit 改为同义句 怎么写广告语? 某超市销售甲、乙两种商品,甲每件进价10元,售价15元,乙商品每件进价30元,售价40元.若该超市同时一次购进甲.乙两种商品共80件.两种商品获得的总利润恰好为500元,球该超市购进甲、乙,两种商 The place--you are going to visit is the ruin of a place为什么用which 随便翻译出来 镀镍工艺后还能进行抛光处理么?是否会破坏镀层,如果不抛光,那么表面粗糙度能达到什么水平呢? 关于水的重要性的故事. what will you do when you are in a strange place?Suppose you are going to BWhat will you do when you are in a strange place?Suppose you are going to Boston and you have never visited the city before.If someone 21 you about the interesting places in t 没铜打底?滚镀镍需要铜打底,但是电镀厂不给镀铜,有什么药可以代替铜得作用性吗?(滚镀拉簧得时候内部上不了镍)或者有什么办法让拉簧里面上镍,表面光泽? Be与浓NaOH反应化学反应方程式 1.They are going to visit (Guangzhou museum).括号里的部分用what place代替还有:2( Uncle Chen) is going to drive us there.括号里用who代替 有没有人会做纳米活性碳 中国实际面积到底多大啊? 第一盒乒乒乓球中有4个白球2个黄球,第二盒乒乓球中有3个白球3个黄球,分别从每个盒中随即地抽取1个球,求下列事件的概率:(1) 取出的两个球都是黄球;(2) 取出的两个球中有一个白球 丙烯加氯气反应?CH3-CH=CH2+Cl2不是发生取代反应生成Cl-CH2-CH=CH2+HCl吗?怎么我看到一题是说CH2Cl-CHCl-CH2Cl是由CH3-CH=CH2+Cl2和Cl2制得的,谁知道是为什么 关于曼珠沙华的说明文好的话,要400字以上 有3盒乒乓球,每盒75个(只有黄,白两色).第一盒黄球和第二盒的白球同样多,第三盒的白球是第三盒乒乓球总数的五分之二,这三盒乒乓球一共有黄球多少个? 丙烯和氯气如何反应 亚硝酸钠中什么成分有毒用化学式表达 源辉煌不锈钢201管生锈了怎么办我去年十月份买的源辉煌不锈钢今年都锈黑了要怎么处理.可不可以找厂家.如果可以要怎么处理.才几个月,就算处理了也还是很快就锈了.既然201那么差为什么 丙烯与氯气在光照条件下反应,最多得到几种沸点不同的有机物 亚硝酸钠的成份是什么? i visited the Bund last week.划线部分the Bund提问.请问是用what did 还是where did我的两个老师是两种答案,搞不清……谢谢 纸箱纸质KABCE如何区分 车辆上主要使用什么交流发电机叉车上电动机 Where ______ did you visit last week?A.other B.others C.another D.else请问这道题选B不可以吗?为什么? 如何区分纸箱的纸质A=A B=B B=C C=C 几种纸板区别 where等于which place还是等于what place急 I visit the university last week ____i studied A.then B which C where D that正确答案是C,为什么不选B .C 光触媒怎么么使用? Where will you visit?what will you visit? Ths is the place ______I visit last summer A,where B,which C.what 稻田光触媒怎么样,和其他光触媒比怎么样 Where did you visit or what did you visit 用水煮 雄黄 变成砒霜啊我看到 都说雄黄加热 会变成 砒霜 加热多少度 才会反应放在水里煮 成砒霜啊 什么纸质做纸箱好我要做一个比较结实的纸箱!什么纸比较好 啊 ______ did you visit last Saturday? A.where B.what C.……(排除)我怎么区分这个东西,还有,假如它在地址上画上线,我究竟怎么回答!!! 雄黄如何变砒霜? 纸箱 上引诱SKU NO.和ITEM NO.还有纸质有A=B B=B 等是怎么区分的? 电壶里的水垢怎么去除 小清去商店买牙膏,同一品牌两途中牙膏的售价情况如下:120克的,每支9元;160克 Mount Wuyi is such an attractive place of interest____everyone likes to visit.为什么答案是as,不能是that或which,visit是及物动词,却宾语that和which不是也可以在定语从句中做宾语么? When they got home,the seven dwarfs found Snow White _______A.die B.dead C.death D.dying ATI催化剂是做什么用的? mount wuyi is such an attractive piace of interest as everyone likes to visi为什么从句要用as
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘