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

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   更新媒体控制对象的状态信息
盖茨和鲍尔默或成挑选微软新CEO的最大阻碍 移动开发进阶:触发式邮件深入分析 King.com传奇再续!Farm Heroes Saga强势登陆iOS、Android 2013综述稿:Clojure这一年及大事件 亚马逊AWS vs.谷歌GCE,彪的是价格? 2014,混合云被广泛采用的一年 传微软拉拢厂商推双启动系统手机 用户可选Windows Phone或Android 为什么游戏领域总是“抄抄抄”! 物竞天择、百家争鸣——评OpenStack生态圈 CES 2014:Intel针对可穿戴技术发布多款产品 直击CES:Pebble推金属版智能手表Pebble Steel 为4K智能电视而生:高通推出骁龙802处理器 英特尔首席执行官阐述可穿戴设备新技术及Edison计算平台 设计师如何写出更棒的项目建议 微软以1亿美元收购Parature“知识库” 登陆CES:三星发布智能家庭平台Smart Home CES 2014:GPS供应商Garmin推健康腕带Vivofit 《近匠》第05期:移动开发工具访谈,个推——有节操的push 【Hadoop技术博客推荐】Hive的那些事 Twitter联合创始人推社交搜索应用Jelly 马云“食言”进军手游分成比例8:2,开发者可拿7成 CodeCombat游戏全面开源:玩游戏也能学编程 Netflix首席云架构师Adrian Cockcroft加盟Battery Ventures Android 4.3附体:RIBX发布FB/Ti 互联网手表 IE11界面布局的秘密武器:Quero Toolbar 【开源专访】Node-Webkit作者王文睿:桌面应用的全新开发方式 CentOS归属红帽:企业级Linux领域社区与商业的融合 印度初创公司Little Eye Labs证实已被Facebook收购 雅虎收购Aviate:重在提升用户体验 SDN领域硝烟再起,Oracle将Corente收入囊中 Hadoop科普文——常见的45个问题解答 udp已经穿了代理,但是我向外面发UDP包,代理就是不给我转发??? vb中ListView 中数值列的排序问题? 版本号是什么意思??? 有谁做过文物馆文物或藏品综合管理系统,如能提供资料或demo者,万分感谢,在线等待 100分:DataGrid能不能和視圖綁定,並自動進行多個表的更新,刪除工作?! win98和win2000字体显示问题 请教: 取当前的时间和日期是哪个类 怎样才能使数组的大小可变!!能有相同的功能也行。不一定要是数组!! 请高手帮忙 SQL数据库恢复问题 我用jbuilder5编译EJB为什么老有例外,md,急死我了 窗口列举的问题,请给点思路 时间比较问题 怎么禁止在CWebBrowser上点右键? asp.net中连接oracle9出现了这样的问题:ORA-12640: 验证适配器初始化失败,帮忙解决,在线等待! 如何做能变色的按钮? 用了就不放?,内存怪现象请教高手? 招聘的故事 用了就不放?,内存怪现象请教高手? 急。各位有没有NT高手呀!怎么配置NT下的IIS呀? 高分求救!!急!!关于无法找到动态连接库的问题。 xpmenu控件的使用! 招聘的故事 请问谁有《Visual C++ MFC 编程实例》这本书的配套源代码?(在线等) 如果我数据库里有一篇文章 怎么格式化她????? isapi中用ado访问数据库只能读不能写,何故?相同的代码在exe中可以 在对话框中建立一个socket连接,如何在释放对话框之后保存这个连接以备以后使用? 关于屏保程序的讨论 安装程序的BDE问题? 我创建了一个POPUP风格的窗口,如何去除背景? 和 Oracle 的连接问题(odac ) 帮忙看一下有什么问题!! 高分求救!!急!!关于无法找到动态连接库的问题。 指纹算法 Java Developer Interbase如何自动保存更新 请教数据库连接池的使用.... 不要以为你不骂人你的素质就比那些骂街的高了,如果你卖国那么你的素质比那些骂街的更低,因为你基本不具备一个人的素质了 哪位有有关Vtune的相关资料呀,提供链接也行,最好是指南一类的,3X。 编程几年了,没有希望,想改行,你们呢? 有谁做过“文物馆的文物或藏品综合管理系统”如能提供资料或动者!本人感谢! 入门时奇怪问题? 如何把*.IMG文件转换为JPG文件? 其实你不懂我的心 那里可以买到microchip的mcp2150 ,(要现货),比较紧急,请帮忙 关于对2进制文件的操作 将去做SAP ABAP4平台编程,用过的请进。up有分。 C的图形问题? 为什么我点进去看不到内容? 如何考中程 数据窗口控件为dw_6,其间的对象为D_PUR,我想使其中的图片框的VISIBLE属性变为FALSE总是有错误,请教:)在线等待 kylix2在RedHat7.2下的安装问题? 我不懂错在哪里. 现代社会信息量越来越大,传递信息的速度越来越快,人们获取信息的途径越来越广.用恰当的词语连成一句话. 吸引金龟子 高中生物~以下几句话哪里错了?以下几句话哪里错了? 1,抗原一旦突破了由人体皮肤,黏膜以及体液中的杀菌物质等组成的防线就会引起特异性免疫反应 2,细胞免疫是建立在体液免疫的基础上的 作文:我挡住了诱惑 《吸引金龟子》阅读答案吸引金龟子 [林清玄] 吃哈密瓜的时候,我对孩子提起童年时代如何抓金龟子的事.我们把吃剩的果皮拿到树林或稻田,或甚至放在庭院的角落,到黄昏的时刻,就会 有许多 高一生物遗传学D错在哪里 修改病句:据介绍,近年来随着我国原油进口规模不断扩大,使我国每年石油进口量超人过2亿吨,石油对外依存度已由2000年的30%上升至1212年的57%. 吸引金龟子这篇文章 用墨西哥,阿拉伯,新加坡,好望角,罗马,澳门,名古屋造一段话 现代社会信息量越来越大,传递信息的速度越来越快,人们获取信息的途径越来越广.(用恰当的词语连成一句话) 文章以“吸引金龟子”为题,读了课文,你认为真正吸引金龟子的是什么? 求所有答案,第3题如果觉得所有的选项都不对的话,可以说出来,因为还有一个选项 墨西哥 阿拉伯 新加坡 好望角 罗马 澳门 名古屋 写一段话 (不要爬山的那个故事) 法国.德国和西班牙的我爱你怎么说.怎么写? 在编程中,函数是什么意思啊 美国和法国共和制的区别 阿拉伯我爱你怎么写 函数当中$什么意思 美国共和制和法国共和制不同点 “我爱你”在西班牙怎么说请个位帮我查一下. 函数中的对应关系是什么意思 除草剂草甘磷对人有危害吗 某铁矿主要成分是氧化铁,含铁49%,1.求氧化铁中Fe元素的质量分数,2.该赤矿的纯度. 含有什么基团可与羟胺反应 世界上真的有鬼吗?有人真的看到过吗? 空间育种有吗 $E$8在函数中是什么意思? 神是四维世界的生物吗?通往其的媒介是什么? 澳门被葡萄牙占领了多少年 酮和酸反应生成什么 求解邻苯乙二酮重排机理. 葡萄牙割占澳门多少年啊?是我的期中考试题(历史),是 300 还是 近400 我选的是 近400 只要告诉几年!>>>>>>>? 能和羟胺发生反应的有机物的特征是什么比如说C10H20O 能和羟胺反应 且能发生卤仿反应 这是什么 或有什么典型特征 邻酮的全名是什么?怎么写?请赐教. 葡萄牙帝国主义对澳门的统治! 苄基苯酮和羟胺反应的产物解释产物好诡异啊,怎么会冒出个 =NOH 来的? 邻酮管制了,找不到了 葡萄牙殖民者在澳门的统治时间是什么时候 能和羟胺发生反应的有机物的特征是什么拜托了各位 比如说C10H20O 能和羟胺反应 且能发生卤仿反应 这是什么 或有什么典型特征 邻酮是禁品难吗?哪里有卖啊有胺也可以,加我2677958968 澳门为什么被葡萄牙统治?什么时间? 法兰西第三共和国是总统共和制国家还是议会制共和制国家 可不可能有邻二酮的存在那么2,3-丁二酮的两个羰基之间没有共轭关系呢? fe+ca(oh)2能反应吗 法兰西第三共和国是总统共和制还是议会制共和制?议会制共和制主要特征:政府由议会产生,对议会负责,总统只有虚位没有实权,总理掌握最高行政权,到底法兰西第三共和国有没有内阁总理? 一立方米铁矿石粉等于多少吨(65品位) Fe和Hcl反应,无论什么条件,生成物都不变吗?Ca(OH)2和CO2改变反应条件还能生成什么? 除草剂对草莓有什么危害吗? 求准备考英语四级如何合理安排时间,有效方式是什么,必须天天背单词吗?我英语不太好.第一次就考372分 请问卓越联盟自主招生语文和英语的作文和阅读理解的分值各是多少? 一块试验田今年的水稻产量是720kg,比去年增长6分之1,去年水稻产量是多少kg? 考英语四级有没有必要背单词呢? NaOH,Ca(OH)2,Fe(OH)3是什么 高一生物:这两个结构错在哪里?如图: 下半年准备考四级.背单词应该背什么?手头有两本,一本四级,一本雅思分类记忆.背哪一本呀? 吸引金龟子 阅读理解(急!今天要用)吸引金龟子 [林清玄] 吃哈密瓜的时候,我对孩子提起童年时代如何抓金龟子的事. 我们把吃剩的果皮拿到树林或稻田,或甚至放在庭院的角落,到黄昏的时 同种个体之间的各个DNA分子是完全相同的 原油进口权的文字定义是什么?在中国,弱一家企业获得了原油进口权,对这家企业意味着什么? 凯尔盖朗岛属于哪个大洲?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘