登陆注册
13955600000029

第29章 多媒体程序设计(2)

在这里,可以看到AutoActivate属性默认为DoubleClick,在应用程序执行时,只要用鼠标双击OLE对象,即可启动对应的动作。

【例7.5】

设计两个OLE控件,一个用于播放MIDI序列,一个用于播放AVI视频。

在窗体上绘制两个OLE控件,在插入对象窗口选择“由文件创建”,从浏览器中选择相应的MIDI文件和AVI文件。

由于AutoActivate属性都为DoubleClick,在应用程序执行时,只要用鼠标双击OLE对象,即可播放MIDI序列和AVI视频。

如要控制播放,比如单击“播放”按钮后播放,可针对Command1_CLICK事件编程。在本例中再增加三个按钮数组,即在窗体上绘制三个按钮,分别为“播放”、“编辑”、“结束”,然后进行复制,建立按钮数组。源程序如下:

7.4使用MCI控件开发多媒体程序

下面介绍用VB开发多媒体系统的另一种方法,这也是使用VB开发多媒体系统最主要的方法之一,即运用VB内附的MCI32.OCX,它是通过多媒体控制接口MCI(MicrosoftMultimediaControl6.0)对多媒体设备进行控制的。

7.4.1MCI简介

MCI(MediaControlInterface)是媒体控制接口的意思,它包含在MMSYSTEM。DLL库模块中,用来协调事件与MCI设备驱动程序之间的通信,为控制音频、视频等外围设备,提供了与设备无关的应用程序,并具有可扩充性。由于这些特性,用户的应用程序可以方便使用遵循MCI控制标准的多媒体设备,而且系统升级十分方便,使得开发应用系统无需了解多媒体产品的细节,大大提高了应用系统的开发效率。

1.MCI的接口分类

MCI接口可分成两类:一类是使用命令消息接口函数,另一类是使用命令字符串接口函数。这两种函数中的任何一种都可访问所有的MCI设备。命令消息接口使用消息控制MCI设备,命令字符串接口使用文本命令控制MCI设备。

Windows本身的通信方式是使用消息(Message)来实现的,所以若使用命令消息接口函数来执行Windows的多媒体功能,则速度较快;若用命令字符串接口命令控制MCI设备,文本串中必须包含执行一个命令所需的所有信息,MCI分析文本串,并把它翻译成能送到命令消息接口中的消息才能执行,所以命令字符串接口的执行速度一定慢于命令消息接口。

Windows多媒体模块提供的与MCI有关的命令字符串接口函数有三个:

MCISENDSTRING向一个MCI设备驱动程序发送一个命令字符串

MCIEXECUTE为MCISENDSTRING的简化函数

MCIGETERRORSTRING返回一个同错误代码相对应的错误字符串

2.MCI设备类型

MCI可控制简单设备和复合设备,相应的设备驱动程序也分为简单和复合两类。简单设备是不需要指定数据文件的设备,如CD播放器。复合设备是需要指定相应的数据文件的设备,如MIDI数字音频设备。

应用程序通过MCI控制设备,必须有相应的MCI设备驱动,VB编程中常用到的部分MCI设备驱动如表72所示。

表7.2部分MCI设备驱动

设备类型

设备驱动程序名

描述Cdaudio

Mcida.drv

McidriverforadaudiodevicesSequencer

Mciseq.drv

MicrosoftmcimidisequencerVideodisc

Mcipronr.drv

McidriverforpioneervideodiscplayerMovice

Mcimmp.drv

McidriverformoviceWaveaudio

Mciwave.drv

Mcidriverforwaveformaudio

其他

Mciaap.drv

Mcidriverforfloorflc

Mciavk.drv

Mcidriverforavk

Mciavi.drv

Mcidriverforavi

Mcisca.drv

Mcidriverforvisca

归纳起来,MCI所能控制的多媒体设备如下:

①简单设备:可编程控制的录放像机,可编程控制的激光影碟机,CD音频设备,视频卡(如播放电视/录像机),MPEG解压卡(如播放CDIMovie光盘)。

②复合设备:数字视频播放设备(如*.avi文件),动画播放设备(如*.fli文件),语音录放设备(如*.wav文件),MIDI音序器(如*.mid文件),MPEG解压卡(如*.mpg或*.dat文件)。

7.4.2MCI32.OCX的属性

媒体控制对象涉及的属性和事件很多,表73列出了MCI的部分属性,下面介绍媒体控制对象的一些重要属性。

表7.3MCI的部分属性

属性

描述

属性

描述AutoEnable

自动启用

NotifyMessage

确认信息ButtonVisible

显示按钮

NotifyValue

确认设定值CanEject

能否退出媒体

Orientation

定位CanRecord

能否记录

Position

位置CanStep

能否前进一格画面

RecordMode

记录格式Command

MCI命令

Shareable

能否共享DeviceID

多媒体设备代码

Silent

静音DeviceType

多媒体设备类型

Start

开始位置Error

错误

TimeFormat

时间格式ErrorMessage

错误信息

To

结束位置FileName

文件名

Track

磁道Frames

画面

TrackLength

磁道长度Length

媒体长度

Tracks

磁道总数Mode

目前所处状态

Visible

能否显示MousePoint

鼠标指针形状

Wait

等待Notify

确认hWndDisplay设定窗口

From起始位置TrackPosition轨道起始位置UpdateInterval更新间隔。

1.有关外观的属性

1)AutoEnable属性

AutoEnable属性设置为True时,媒体对象自动监测所指定的多媒体设备状态,并自动决定按钮的状态。AutoEnable属性设置为False时,可通过ButtonEnabled属性设置,决定媒体控件中按钮的有效性。

2)ButtonVisible属性

ButtonVisible属性设置为False时,按钮在媒体控件上消失。

3)Visible属性

设定媒体控制对象在程序执行阶段是否显示出来。

4)CanEject,CanRecord,CanStep属性

这些属性在设计阶段不可见,即在属性窗口中不出现,运行时只读。主要用来监测打开的设备是否具有弹出媒体、播放、录制、步进等功能。

5)Orientation属性

该属性设定媒体控制对象按钮的排列方向。

2.对媒体的一般控制功能

一般控制功能是指对媒体的通用控制功能,它几乎适用于所有的媒体设备。

1)DeviceType属性

指定要打开的媒体设备类型,MCI控件可根据文件扩展名自动设置设备类型。

2)FileName属性

以【打开】命令指定要打开的文件,或以【保存】命令指定要保存的文件。针对复合设备,必须指定文件名才可以打开和保存。

3)Command属性

执行一个MCI控制命令,属性窗口不显示该属性。可以使用14个基本命令来完成一些功能,如表74所示。具体格式是:

媒体控制对象.Command=MCI控制命令

表7.4MCI常用控制命令列表

MCI控制命令说明MCI控制命令说明

Open打开媒体设备Record录制Close关闭媒体设备Prev回到目前磁道的起始点Play播放Next到下一个磁道的起始点Pause暂停Seek搜索指定的位置Stop停止Eject退出媒体Back后退一格画面Sound播放声音Step前进一格画面Save存储。

4)hWndDisplay属性

通过设置该属性,给需要窗口的多媒体设备设定一个窗口,这类多媒体设备通常指Avivideo和Overlay设备。对Avivideo设备而言,如果不提供窗口设置,系统主动提供一个缺省窗口显示视频。

5)From,To属性

用在Play或Record前,表示播放或录制的起始、结束位置。

6)TimeFormat,Position,Start属性

TimeFormat用来设定时间格式,如果未设定TimeFormat或所用的设备不支持设定值,则系统会使用缺省值。Timeformat的属性说明如表75所示。

表7.5TimeFormat的属性说明

属性值

说明0Milliseconds以ms为单位1

HMS以时分秒为单位,用4个字节存储,前3个字节对应于时分秒,最后字节未用2

MSF以分秒帧为单位,用4个字节存储,前3个字节对应于分秒帧,最后字节未用3

以帧为单位8

以字节为单位9

以取样为单位

根据设定的TimeFormat属性值,Position属性返回已打开的媒体设备的位置,一般用4个字节表示。Position属性在程序执行时只读,在属性窗口不可见,即用户不能通过改变该属性值来改变媒体设备的位置。Start属性根据目前的时间格式,返回媒体设备的起始位置。同样,该属性在程序执行时只读,在属性窗口不可见。

7)Mode属性

Mode的属性说明如表76所示。

为顺利运行下一个MCI命令,常可通过对Mode属性的读取,获得设备的当前状况。例如,在播放声音文件前,通过检测设备状态,确保设备关闭后再打开。其程序段如下:

IfNotMMControl1.Mode=524Then

MMControl1.Command=“close”

EndIf

MMControl1.FileName=“指定要打开的文件名”

MMControl1.Command=“open”…

8)Silent属性

决定声音是否可以播放。

9)Shareable属性

决定多个程序是否能共享一个MCI设备。一般而言,此属性针对的是简单设备,而复杂设备不能共享。

10)Track,TrackLength,TrackPosition,Tracks属性

目前,Track只用在cdaudio,videodisk中,该属性指定特定的轨道(Track)供TrackLength及TrackPosition属性传回相关信息。就cdaudio而言,每个TrackLength代表一首歌中Track属性指定的轨道的时间长度。TrackPosition指定轨道的起始位置,Tracks传回轨道数。

11)UpdateInterval属性

该属性的值决定两次StatusUpdate事件之间的us数。如果其值为0,将不会有任何的StatusUpdate事件发生。

7.4.3MCI32.OCX的事件

媒体控制对象的事件有Done、ButtonClick、ButtonCompleted、ButtonGotFocus、ButtonLostFocus和StatusUpdate,事件描述如表77所示。Button可以是【Prev】、【Next】、【Play】、【Pause】、【Back】、【Step】、【Stop】、【Record】或【Eject】九个按钮之中的一个,如PlayClick事件。下面对这些事件进行简单的说明。

表7.7媒体控制对象的所有事件及描述

描述事件

描述Done

完成MCI命令动作ButtonGotFocus

按钮取得焦点BottonClick

单击按钮ButtonLostFocus

按钮失去焦点BottonCompleted

按钮动作完成StatusUpdate

更新媒体控制对象的状态报告

1)ButtonClick事件

语法格式:SubMMControln_ButtonClick(CancelAsInteger)。

其中n为媒体控制对象的序号,以后不再说明。

当MCI控件在运行阶段时,单击控件上的按钮激发相应的事件。在默认状态下,每个按钮的Click事件都是执行一个该按钮对应的MCI指令,例如,PlayClick事件执行一条MCI的play指令。即若在ButtonClick事件中,未将Cancel参数设为True,或未传True给ButtonClick事件,则系统先执行按钮代表的MCI指令,再执行事件过程中的语句。反之,若将Cancel参数设为True,则系统不执行按钮代表的MCI指令,而是直接执行事件过程中的语句。

2)ButtonCompleted事件

语法格式:SubMMControln_ButtonCompleted(ErrorcodeAsLong)。

媒体控制对象上按钮对应的MCI控制命令执行时,激发该事件。在事件中返回参数Errorcode,错误代码Errorcode的值所代表的意义如下:

·0MCI控制命令执行成功

·其他MCI控制命令执行不成功

3)ButtonGotFocus,ButtonLostFocus事件

当媒体控制对象的按钮取得焦点或失去焦点时分别激发ButtonGotFocus或ButtonLostFocus事件。

4)Done事件

语法格式:SubMMControln_Done(NotifyCodeAsInteger)。

在Notify属性设置为True时,MCI控制命令执行完毕时激发该事件。NotifyCode的值表示MCI控制命令是否完成,其设定值说明如表78所示:

7.4.4MCI编程举例

当进入VB6.0时,工具箱(ToolBox)中不包含MCI32.OCX,若要使用必须首先将其加入到工具箱中。办法如下:

同类推荐
  • 综合应用软件设计

    综合应用软件设计

    本书是为计算机、信息管理等相关专业高年级本科生在开设相关课程时所编写的一本教学参考书,它将全面指导学生学习、熟悉和运用当今被广泛采纳的一些主流技术去进行综合应用软件设计的有效实践。
  • 体感交互技术

    体感交互技术

    本书提出了体感计算的研究,探讨了基于体验性认知的个性化电子学习方式,并且分析了面向儿童的艺术创造体验,在体感虚拟化身的帮助下,用户可以通过身体运动,促进情感心智的全面发展,
  • 玩转手机

    玩转手机

    本书主要包括:手机的发展历史、手机知识、手机的选购与巧用、手机与网络、手机短信等内容。
  • 中文版AutoCAD2011基础与应用案例教程

    中文版AutoCAD2011基础与应用案例教程

    本书采用项目教学方式,通过大量案例全面介绍了AutoCAD2011软件的功能和应用技巧。全书共分8个项目,内容涵盖AutoCAD2011基本操作,绘制与编辑图形,标注尺寸,添加文字注释与应用表格,创建与应用块,绘制与编辑三维图形,图形输出等。
热门推荐
  • 逆袭之嫡女狠后

    逆袭之嫡女狠后

    她是国安局顶级特工,误闯异世,当懦弱痴傻的不受宠嫡女变成了精明强势的特工颠沛,还得重新洗,他是万人之人之上的大国皇子,位高权重,却背负血海深仇,初见时,他随手之劳,却给她颜面自尊,一个衣衫褴褛,一身傲骨,一个蟒袍加身尽显王者气势。她用尽一切助他登顶九重宝塔,却换来君王怀中揽她人,她莫颠沛于他也仅仅是一颗棋子?也好,既然她能够为他打下这个江山,便能毁了这天下!
  • 沉默言殇

    沉默言殇

    一桩婚约,将不相干的两个人拉在了一起。他们本有一个共同的目的,可他却在她与她的相处中,动摇了初衷。她一次次的拒绝,希望他放弃。他却越战越勇!他许她一世承诺。当事情一步步发展,他看到了她的伤痕累累,她又能否敞开心扉,接受他呢?
  • 原谅我们的错过

    原谅我们的错过

    有些事错过了就错过了,但有些人错过了就不可能如同事情一样有补救的机会。她忘了一切,却唯独忘不了他,忘不了他给她带来的改变。他以为他们之间是不可能的,最终,的确是不可能的,但原因并不是他想的那样……
  • 秋雪之缘

    秋雪之缘

    我爱的不是她,而是你!你知不知道!一直都是你!!!
  • 青春的de邀约

    青春的de邀约

    讲述了一个男孩女孩逆袭的青春故事,转校生乔楠(女主)在学校学习还行,大大咧咧人缘超好,刚刚转学就和班里的男成为兄弟,性格古灵精怪,皮肤白皙,完完全全的耐看型,但却有着沙雕的灵魂,但是她其实是曾经也是一个丑小鸭,江肃(男生)学习优异,长相简直校草级别样样精通,全身散发着阳光,故事开始了,所以故事究竟怎样?让我一起接受青春的邀约吧
  • 似凤成凰

    似凤成凰

    少女救下了来自异域少年,经过了一堆莫名其妙的事情,更新了少女的认识观:不明的白色小生物;像看世纪电影般的现场激战;并且好像发现了不得了的事情……但异域少年突如其来的消失,留下的只有那白色的小生物,这就让少女有点不知所措了,随后的两级反转让人不得不接受……最后唯一真实的,就是混得下去就行,能光明正大的钓可别浪费了。
  • 待见分晓

    待见分晓

    “哪怕抑郁的想告别这个世界,也请相信,在平行世界的另一头,有个人至此一生,只为找到你!”
  • 九御神王

    九御神王

    刚刚报完仇的叶峰无意间救下了一个无良的老道,在三个愿望的诱惑下成功被忽悠到了异界的一口棺材里。叶峰以两本经书、一块玉佩起家,踏上了危机四伏的魂武界……
  • 木叶之剑压天下

    木叶之剑压天下

    携带dnf鬼剑士系统重生到火影忍者的世界,成为木叶村忍具满点堂的少老板,成为什么样的鬼剑士好呢?是专精剑术的剑魂?或是出卖灵魂只为力量的狂战?或是掌控鬼神的鬼泣?或是掌控波动之力的修罗?还是一体双魂半人半鬼的剑鬼?身为鬼剑士的他在火影世界又会绽放出怎样的光辉?ps:交流玩耍群565300942,新书《海贼之我是大佬》,三月十号发出来,欢迎来玩!!!
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!