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

利用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   更新媒体控制对象的状态信息
开源SMTP和POP3邮件服务器 三星:在专利上不会和苹果妥协 不止谷歌,微软也有自己的眼镜计划?! Windows 8商店应用总数突破20000大关 硝烟弥漫:三星起诉苹果最新iPad、iPod侵权 效仿Google Facebook欲整合Instagram用户数据 与苹果全面竞争?传微软明年推Xbox机顶盒 微软Ralph Haupter:WP8即将在中国上市 开发者黄金时代来临 Paul Graham:Y Combinator创始人成长轨迹 我们需要强密码吗? 为了改变?英特尔CEO宣布将于明年5月辞职 传苹果下一代Mac OS中将整合Siri及地图服务 TripAdvisor:使用AWS比服务器托管成本节省50% [MDCC精华]亚马逊AWS布道师Kingsley Wood:灵活IT架构之道 亚马逊诉讼彰显谷歌在公有云领域威慑力十足 AWS全球创业大赛 奖金100000美元 YY:破冰而出,成功上市 Xtreme Labs工程师:Android开发常陷入的五大深坑 Elon Musk:没了乔布斯的苹果干不过谷歌 旁门左道:第一次开发移动游戏就赚到28623美元 移动周报:小聪明赚大钱 游戏SEO如何耍鸡贼? 创翼全国 六城联动——2012移动互联网应用创新大赛开放日 全国六城联动沙龙 爱丽丝+福尔摩斯 Game Insight解谜游戏玩出新花样 Windows Phone 8 SDK大升级:部分功能兼容WP7 信息大图《愤怒的小鸟》发家史 Intel预测:10年之后你的手机是48核的 消息推送惹怒用户:应用开发者请别太过分 创新工场:我们如何孵化未来? iOS越狱比例下降:国内移动开发环境怎么了? 响应式图像技术与资源分享 看Twitter如何应对大选:少些Ruby 多些Java 请教高手!如何执行带条件SQL语句? 大家一起来为c#加油阿 追女教训谈 如何用OUTLOOK作多用户使用???? 赐教 有谁知道ramdrive.sys在dos下的详细用法,敬请赐教,倍感感激!! 怎么用Delphi调用MySql(win) 关于frame的问题. 为什么显示不出来???? c#通过INTERNET远程访问数据库都有什么办法?(请高手指点) 有誰能把CDONTS.DLL(電子郵件)的源代碼貼出來嗎?有分送,THANK! 请教 NetColorWolf(NCW) pb7的工具条栏的文字字体! 为什么,我的子窗口调用另一个窗口时,总是新开一个被调用窗口,而且被调用窗口中的ADOTable的connected总是丢失。why 《Delphi淡手辑略 之 数据库篇》:数据安全删除(函数) 请教! 我用setfocus使一个控件聚焦,但我想隐藏光标,不想让它在界面上闪动,怎么办? 用delphi 编防火墙 有谁知道ramdrive.sys在dos下的详细用法,敬请赐教,倍感感激!! 关于Delphi线程构造函数: 简单问题 ADSL代理上网部分站点上不去解决一例. 消息中间件的功能?各位铜人帮忙! 如何改变对话框和窗体的背景色呢? 《Delphi淡手辑略 之 数据库篇》:打印DBGrid中的所有数据(过程) 有关Delphi指针的问题,请高手帮忙!!!!!!! 还是weblogic问题 麻烦帮我检查一下代码,实在想不通 请问大家我新买一台品牌机,再使用时经常死机是怎么回事? 哪里有介绍Active Directory 的中文资料? 怎样在ListView组件的详细显示模式下,让屏幕自动随输出数据滚屏和聚焦在输出的数据上面。 实现接口时出错,分数大大的有 《Delphi淡手辑略 之 数据库篇》:数据集解构成树(过程) 100分求教!!!文章“如何快速自动生成并定制报表”的问题!!! 一个农民上网的代价! 怎样将分割视图在一开始显示的时候就是确定的? Win2000server如何设置成路由器? 存储过程和函数得问题 转帖]!现在各大城市求爱对话写真 如何把XML+XSL的输出结果显示到一个指定的HTML元素里? 有些API中的参数开头是lpsz ,lpsa ....请问什么意思?相关的也说说好吗?谢谢 为何长语句分不了行 我用vs.net正式版开发的留言簿提供全部源码下载 公车上的性骚扰 请问哪里有比较好的关于 OpenGL 的网站或者是论坛啊?小弟的毕业设计课题是关于这个的!(NULL) 一个高难度的问题,特急! 在linux下有没有类似windows当中的dos95.BAT的文件 为什么在程序运行SQL中的存储过程,会出现未能找到存储过程...,可是我在SQL中有这个存储过程阿! 不晓得《资本论》的英文名字叫什么,特地来请教大家 一个高难度的问题,特急! 一个高难度的问题,特急! llpei 谢谢你。请进来领分。 这是VS.NET的BUG吗?不是该怎么解决? Slice(FSortArray^, FSize)解释解释“^”和“Slice()” 有没有关于欧洲历史什么的概述书啊、文章啊都行 简析欧阳修《五代史伶官传序》 (1)该文的中心论点是什么?(2)作者是怎样论证中心论 点的 (3) 文章最 ..凡含有气元素的化合物一定是气化物.加热氯酸钾会生成氧气,则氯酸钾中含有氧气分子.凡含有氧元素的化合物一定是氧化物。抱歉打错了。 3()3()3()3=8 ()里添符号3()3()3()3=8()里添符号 求(新五代史.伶官传)翻译!kkkkkkkkkkkkkkkk不是序文,拜托把网址留一下 化学1题其它几个错哪里了? 12个3等于2000,3之间添符号+-×÷. 当前世界最热门最尖端的科学研究领域是什么? 为什么这道化学题我这样做是错的呀? 六年级第二学期的课文当时延安的生活很艰苦,为什么会有那么大的吸引力? 2=12 添什么符号?2年级暑假生活第11天上的. 调节人体生理活动的最高级中枢位于 1.小脑2.大脑3.脊髓4.神经 杨家岭在课文延安我把你追寻里是什么样地方 添符号9 12 9 3=24还有 11 2 3 7=24,12 9 8 2=24 化学老师让我们用化学语言赞美她一下怎么写,她姓叶 语文书六年级下册第四篇课文《延安,我把你追寻》诗人为什么要追寻延安?追寻延安什么?急 1992 1992 1992 1992 =2000 中间符号随便加 赞美鼓励别人的语言 唱南泥湾这首歌,联系延安,我把你追寻课文,写自己的感受一定要准确点的啊! 极限x趋于0,[(1+x)^(1/x)-(A+Bx+Cx^2)]/x^3=D,D不为0.求ABCD的值.求具体点方法 鼓励别人的语言 历史科论证题有人认为甲午战争是中国历史发展的一个重要的分水岭,它使中国近代化的进程大大加快了,请你论证这一观点(从经济、思想、政治几方面论证) 7 7 7 7=10加什么运算符号算式才能成立 物体做匀速直线运动,其位移随时间变化的函数关系式为s=2t+2t平方,则第1s内物体的位移是(),第2s末...物体做匀速直线运动,其位移随时间变化的函数关系式为s=2t+2t平方,则第1s内物体的位移是 四个五怎样得到2添运算符号 为什么为什么为什么.鱼不能在凉开水中养,是因为凉开水中几乎没有( )A氧分子 B氧原子 C氢元素 D氧元素我想说,原子构成分子,分子组成元素,实际说,我认为他们都一样,虽然元素的范围比较 求单边拉氏反变换:F(s)=2(s^2+3)/[(s+2)(s^2+2s+5)]有点难 气温变化是属于物理学中的什么运动?今天20度,明天15度,后天22度...物理学里记得有直线运动,曲线运动,圆周运动,简谐振动等等...用那个运动来解释它,比较合理?为什么? 延安,我把你追寻,到底追寻什么? 把0.05molNaOH固体分别加入100ml液体中,溶液的导电性变化不大的是()A.自来水 B.0.5mol/L盐酸 C.0.5mol/L D.05mol/L氯化铵溶液 孟子鱼我所欲也主要内容 介绍一下《延安,我把你追寻》 脊髓和小脑里的灰质和白质哪个在外围,哪个在里面? 如果非要分别 那么天气的温度变化属于物理变化还是化学变化 历史上自然灾害 6.食醋是厨房中的一种调味品,其中含有少量醋酸.下列有关醋酸的说法不正确的是( )A.醋酸分子是有碳、氢、氧三种原子构成的B.醋酸中碳元素的质量分数为40% C.醋酸是由碳、氢、氧三种元 鱼我所欲也中的重点词有哪些? 历史自然灾害 下列符号只具有微观意义的是Cl2 2N2 Cu Co2原因 流通环境的物理因素,气象因素将对产品产生什么影响 诗歌的题目是“延安,我把你追寻”,这和“我把你追寻,延安”“追寻你,延安”在表达效果上有何不同? 灰质和白质的排列,在脊髓中是_____,在大脑中是_____ 用简洁的语言概括《鱼我所欲也》的主要内容 延安,我把你追寻 全诗我要这首诗全文! 下列符号只具有微观意义不具有宏观意义的是A、OB、AlC、2NaD、H 作者在第三段中阐述的观点 延安我把你追寻的诗的意思望火速回答 脊髓中的神经中枢是白质在外,灰质在里的;而大脑中的神经中枢是白质在里,灰质在外的.请问是为什么?越详细越好.tongruoming,我是问为什么脊髓中的灰质在里,而大脑中的灰质在外? 关于写父母的爱文章,500字 诗中“追寻延安”的意思是?直接说“追寻延安”的意思 脊髓灰质和白质是什么? 西周时期的历史概述请简要介绍西周时期的历史,可以参考哪些书籍 《延安,我把你追寻》诗句意思我像答案. 大脑和脊髓的灰质和白质有细胞体的哪部分组成 简述唯物主义基本观点和历史形态? 论述:邓小平理论的科学体系及历史地位 问一些极限天文问题微波背景辐射的产生?虚时间如何存在?(即是否介于1,2,3,4维时空,空间中) 从中国历史角度阐述劳动创造人类! 一道历史漫画图的材料分析论证题图上的字样有——欧洲大战(法英俄都冲向欧洲大战的火燎中) 还有和平运动,国共内讧,重废政府等字样(一个军阀似的人支撑着快塌陷的房子) 此图是上 你的化学题是错的你那个向醋酸钠中加醋酸呈中性的回答是错的
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘