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

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)是作为可选用部件提供的。为了使用它,首先要执行FileAdd File菜单命令,把Windowssystem目录下的MCI.OCX加入到工具箱(Toolbox)中,这时会在工具箱中出现相应的MCI.OCX图标。如果使用的是Visual Basic4.0版(或5.0版),选择oolsCustom 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
  Mmdatademo.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"
 nd 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,必须将它拷贝到WINDOWSSYSTEM目录下,同时在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   更新媒体控制对象的状态信息
Kim Dotcom推出新文件存储服务平台Mega 用户数一天达百万 美FCC:希望全美在2015年部署千兆以太网 iOS和Android双平台:帷千动媒SDK 3.0发布 移动周报:2013年移动App设计13大精髓 构建高可扩Web架构和分布式系统实战(下) API设计的十大最差和五大最佳实践 Hadoop:为什么RAID-0不行? 电子前沿基金会:实现互联网自由需翻越5座大山 安全无小事:2013年最令人期待的15家安全公司 移动电商:更喜欢用HTML5代替原生APP Talkingdata行业预警:移动游戏正在变成红海 微软无视W3C 拒绝遵循WebRTC标准 Linux下使用MongoDB+GridFS实现备份作业的优化和监视 AWS建新数据中心 老用户获益不易 铜导线退出历史舞台 激光传导速度将达100G bps 大众点评推出首个O2O开放者平台:高德、盛大加入 从APM角度上看:NoSQL和关系数据库并无不同 新浪微博商业化:大树底下真的好乘凉吗? 亲爱的GitHub,我们怎么访问不了你? 经典神作《魂斗罗》iOS版今日上线 专访最强夫妻店:“神庙逃亡2”开发背后的故事 我们做错了什么?3周了,一毛钱也没赚到! 开源产品系列:简单强大的模板语言JSON Template 十年历史的KDE bug修复 为什么函数式编程在Java中很危险? Android平台获X11协议支持,手机变身绘图板 Rackspace通过OpenStack和定制OCP服务器节省40%成本 美国人是如何利用大数据的应用来防止流感的蔓延 W3C北航总部成立:招兵买马增强中国标准声音 Mozilla推出开发者预览版Firefox OS智能手机 强强联合?传微软投30亿参与Dell私有化 我是初学,请指点 送分求购api用法及中文说明! asp页面可否设置关键字,使文章能被搜索引擎搜索到? ~~谁想做世界杯活力宝贝~~? 如何将StringGrid 中的数据保存为Html格式的表格 关于断点续传,请问大家 php中有没有 与 asp response.clear等同函数 单片机高手请看:中断中的中断,麻烦中的麻烦。 怎一个难字了得?挑战高手 如何改变LISTVIEW中各项的宽度 求《C++ Primer》中文版电子书下载;ejian@21cn.com 请问:在Asp中如何使用ODBC和SQL 注册表help... ListCtrl控件设为ICON属性,请问是否有subitem属性? Win2000系统去访问WIN98系统的服务器 PING的通 但打开的时候报参数出错! vb调用vc编的activex oem怎么老是连不上阿? 简单的入门问题:如何让菜单变灰? how add icon to one popup menu ? 怎么判断一个form对象变量为空呢? 发送和接收数据包问题? ActiveX问题,微软专家请进.<------------- 急 *.idc不能运行了,请问这是为什么? dbcontrols(泰山__抛砖引玉) 怎样才能够把ado记录集写到EXECL并进行打印呢? 如何判断字符串中,有几个指定的字符? xml数据文件倒入数据库,有什么好方法。 检查数据的有效性,最好是在哪一个事件中检查?怎样写,可否给点例子。 如何在DELPHI中调用FLASH图片。谢谢!有帮助的给分! 一个有关串列的question!HELP.. 怎样让对话框总在最前? 今天一个女孩脸红的对我说声谢谢 为什么dll调试跟踪不进去 菜鸟提问:请解释一下.vbs好吗?里面可以放那些东西,怎么引用.......等等 Delphi 2 BCB的问题:BCB中的"::", ".","->"有什么区别? *.idc不能运行了,请问这是为什么?谢谢 简单的数据库问题 CFileDialog()函数的参数问题????? php ed3.0 为什么不好使 大散分,快来答,答者有分! access 表中的datetime型字段在delphi中如何使用? 有谁看过《Visual C#.NET开发实践》?? 怎样改变按钮标题的颜色? 请大家帮忙测试一下这段winsocket代码,为什么接受不到字符串 数据库问题 如何理解COM中的自动化?跟贴有分!!! 怎么样才能实现对音量的控制,最好能达到有下脚喇叭的功能 phpmyadmin之前的密码认真是怎么回事呀(配置问题) 谁能帮忙介绍工作? 请介绍几个现在还提供免费个人主页的地方 IIS运行起来后,不能访问http://localhost是什么原因? 谁能帮忙介绍工作? 关于控件数组 求小学二年级《生命教育》的教案 妈妈的生日,我会用哪首诗表达对母亲的感激之情 _____________________________________ 把句子补充完整:妈妈(). 光线与平面镜成90度,若入射光线不动,镜面绕入射点转过30度,此时反射光线与入射光线的夹角为多少度 把句子补充完整:( ),妈妈( )地去( ).( ),她真勇敢.( )和( ),都( ). 学校新建了一个直径是6米的圆形喷水池,沿着喷水池的外沿建了一条宽是2米的环形草坪,问环形草坪的面积?2)沿环形草坪外延做一圈防护栏,防护栏长多少米? 2014七年级数学暑假乐园答案(海南省出版社) 一个长方形纸的长是15分米,宽是6分米,要把他剪成面积是3平方分米的正方形,一共能剪多少个? 1学校新建了一个直径是6米的圆形喷水池,沿着喷水池的外沿建了一天款式2米的环形草坪,问环形草坪的面积?(2)沿环形草坪外延做一圈防护栏,防护栏长多少米?学校新建了一个直径是6米的圆 物在平面镜前运动,像怎么动?平面镜平动时像怎样动?入射光线不动,平面镜绕入射点转动时反射光线怎么样 求一份必修三地理知识点总结. (人不可貌相) 的事例不知道有什么事例,请高手说下都哪些事例 要2.3个事例谢谢 在会展期间准备在高AC为5m,长AB为13m,宽2m的楼梯上铺地毯,地毯每平方米18元,计算铺完这个楼梯要多少元钱 人教版地理必修三知识点总结是安徽的 ,,那位仁兄帮下, 求 有关毛泽东的事例.议论文用.字数100字就够了 如图,某会展中心在会展期间准备将高5m,长13m,宽2m的楼道上铺地毯,已知地毯每平方米18元,铺完这个楼道至少需要多少元钱? 一张桌子和一把椅子共卖248元,一只桌子的单价是椅子的4倍 一张椅子多少元?方程解 不为失败找借口的议论文事例? 一首赞美母亲的诗 一张课桌的价格是85元,比一张椅子的2倍少15元,一张椅子多少元?(用方程解) 谁会画初中物理《多彩的物质世界》知识树 关于伯牙子期的故事的流传,后人写了许多诗文纪念他们,请问有哪些诗文? 我迷路了.妈妈急得?句子补充完整 山东出版集团六年级上册寒假作生活指导P6-P7页怎么写!一共有五个题,名叫(英语沙龙)P6-P7页!记住是:山东出版集团,山东教育局出版社,急要答案………… 一个圆形喷水池的周长是37.68米,这个圆形喷水池占地多少平方米? 郭沫若的 《静夜》 中,借神话传说表达思念之情的诗句是 五年级上册寒假学伴英语第十五页回答下面关于字母的问题what letter is a question?-----------what letter is a drink?----------what letter is a part of the face?-----------what letter is an insect?-----------what letter is a vege 一个圆形喷水池的周长是31.4米,它的占地面积是多少平方米? 某会展中心准备在高5m,长13m,宽2m的楼道上铺地毯,已知地毯每平方米18元,铺完这个楼道至少要好多钱?关于勾股定理 初中第一次(作文) 如果入射光线不变,使平面镜转动5°,反射光线和入射光线的夹角的变化A 减5°或增5°B 减5°或增10°C 增5°D 减5° 如图,某会展中心期间将高为5m,长13m,宽2m的楼道上铺地毯每平方米18元,请你帮忙计算一下,铺完这个楼道至少需要?元钱 第一次 作文 、一块长方形场地长18米,宽16米,周围有3,米宽的草坪求这块场地包含草坪一共占地多少平方米?草坪的占地面一块长方形场地长18米,宽16米,周围有3米宽的草坪求这块场地包含草坪一共占地多少 在方框里填上合适的数,使每个方程的解都是六(五上寒假新时空页47) 关于第一次……的作文,写得美一点就行了 一块长方形花园宽是32米,现在把花园宽增加6米,面积增加了360平方米.现在花园的面积是多少平方米? 小树长高了(改成拟人句) 知识树怎么画? 公园有一块长方形的草坪长 62米,要把宽增加35米,长不变.扩大的草坪那个面积是多少? 以相等的入射角射到镜面上某点的光线有()条:以某一角度入射到镜面的一条光线有()条反射光线. 七年级数学知识树怎么画 一个长方形草坪的长是25米,面积为450平方米.如果增长到75米,宽不变,扩大后的草坪面积为多少? 描写大树的拟人句,只是描写大树 高中政治(知识网络构建)知识树怎么画啊!本人第一次劫持什么知识树滴, 表达对母亲的感激的诗句,有哪些? 有一条入射光线与镜面的夹角是30°,入射角为多少若入射角增大10°,则反射角与入射光线的夹角为多少,若入射光线不动,转动镜面,使入射光线与镜面夹角从30°变为90°,则反射角变为多 作文“离梦想还有一步”应该怎么写?写什么例子? 公园里有一块草坪,宽8米,占地面积480平方米,为了需要现在要把宽增加到60米,长不变,扩大后的草坪面积比原来多多少平方米? 小树随风摇摆.(改为拟人句) 坚强的作文(通过一件事例来说明) 表达对母亲的感激的诗要是一首古诗,必须要知道题目.作者.朝代.诗句 庄子坚持认为“出游从容”的鱼儿很快乐,表现了他怎样的心境?原文是:《庄子与惠子游于濠梁》. 我依然坚强 作文 最好是事例 搜搜问问主页学校花园中的一块长方形草坪480平方米,如果长不变,使宽增加6米,扩大后草坪面积是多少学校花园中的一块长方形草坪480平方米,如果长不变,使宽增加6米,扩大后草坪面积是多少 满井游记写鸟鱼富有人情的词语是“________”、“________”(用原文语句填空),表达了作者_______的心情 五年级心理健康教育教案找一下五年级心理健康教育全册的教案! 表达对母亲感激的诗句 作文 第一次洗衣服400字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘