书城计算机网络多媒体技术
15865500000030

第30章 多媒体程序设计(3)

①在VB程序设计窗口的【工程】菜单栏中,单击选择【部件】,打开【部件】对话窗口;

②在部件对话窗口中选择“MicrosoftMultimediaControl6.0”选项;

③按确定按钮,工具箱中将增加一个MCI控件。

采取以上方法后可看到在工具箱的尾端增加了一个图标,即MCI控件的图标。可以像绘制其他控件一样,在窗体中绘制MCI控件,它类似于一个录音机的按钮,不过此时出现的按钮呈现浅灰色,表示还没有激活这个对象。MCI控件上的按钮从左到右依次为:上一首(Prev),下一首(Next),播放(Play),暂停(Pause),倒带(Back),步进(Step),停止(Stop),录音(Record)以及弹出(Eject)。

【例7.6】

用MCI控件播放CD音乐。

要用MCI控件播放CD音乐,首先要在窗体中加入该控件,然后在Form_Load事件中加入下面的程序,启动媒体控制对象。源程序如下:

PrivateSubForm_LoadMMControl1.DeviceType=“cdaudio”’告诉MCI要使用的多媒体设备类别

MMControl1.Command=“open”’要下达“Open”指令后,媒体控制对象才能使用

1是默认的媒体控制对象名,可以在属性窗口中进行修改。这个程序非常简单,此时只要按下黑色的\[Play\]按钮即可播放CD唱片。

在这个例子中,人们会发现媒体控制对象上有几个按钮呈灰色,无法使用。这是因为其AutoEnable属性的缺省值为True,此时媒体控制对象会随时随地监测所指定的多媒体设备的状态,并自动决定按钮的状态。对于CD音响设备,\[Step\]、\[Back\]和\[Record\]功能无效,故按钮为灰色,无法使用。而\[Pause\]和\[Stop\]按钮在\[Play\]按钮按下后变黑,使用户可以暂停或停止音乐的播放,同时\[Play\]按钮变灰,处于无效状态。

Autoenable属性虽然可以自动监测并设定按钮的状态,但它不会自行将无效的按钮从媒体控制对象上移走,要做到这一点,可将按钮相应的Visible属性设置为False。例如:

此三条语句可将\[Step\]、\[Next\]和\[Record\]按钮从媒体控制对象上移走。此外,如果不想系统自动监测,可以将AutoEnable属性设置为False,设定按钮相应的Enable属性,迫使其处于有效或无效状态。例如下面两条语句:

这两句可以使\[Play\]按钮有效,使\[Record\]按钮无效。

【例7.7】

在MCI控件的ButtonClick事件中,若将Cancel参数设为True时,系统不执行按钮代表的MCI指令,而是直接执行事件过程中的语句。例76中的程序改为如下:

此时执行程序,单击【Play】按钮并不能播放MIDI音乐canyon.mid,而是在消息框中显示“Playbuttoncancel!,不能播放”。因为在PlayClick事件中,将Cancel属性设置为True,所以媒体控制对象就没有执行按钮对应的play命令,仅执行事件过程中的语句。

【例7.8】

设计应用程序界面。

首先创建一个新的工程文件,在窗体中加入一个MCI控件,对这个程序来说,MCI控件的“录音”和“弹出”按钮是不需要的,可以在多媒体控件【属性页】对话框的【控件】选项卡中将这两个按钮的可视属性的对勾去掉,此时该控件中这两个按钮就会消失。接下来,在窗体上添加一个PictureBox控件作为播放视频文件的地方,再添加一个CommonDialog的控件,以显示“打开文件”对话框,方法是,单击【工程】菜单中的【部件】命令,弹出【部件】窗口,选择MicrosoftCommonDialogControl6.0控件。

添加CommonDialog控件到窗体后,在该控件上单击右键,选择快捷菜单的【属性】项,系统出现【属性页】对话框。接着修改各项参数,如图72所示。

图72CommonDialog控件属性对话框同时,还需要一个定时器控件和两个按钮控制文件,分别是“打开文件”、“关闭文件”,并将定时器的Interval属性设置为50ms。最后再添加一个滑块控件,方法是单击【工程】菜单中的【部件】命令,弹出【部件】窗口,选择“MicrosoftWindowsCommonControls6.0”控件。这时工具箱中会多出几个控件来,其中有一个控件名为“Slider”,就是滑块控件,如图73所示。

最后一步,将窗体上所有控件都调整好位置,调整好后的设计窗体如图74所示。

编写代码如下:

OptionExplicit

PrivateSubCommand1_ClickMMControl1.DeviceType=“AVIvideo”’设定使用设备类型为AVIvideo。

CommonDialog1.ShowOpen’显示“打开文件”对话框

MMControl1.FileName=CommonDialog1.FileName’MCI控件打开的文件

Picture1.Visible=True

MMControl1.hWndDisplay=Picture1.hWnd’设定Picture1为演播舞台窗口

MMControl1.Command=“open”’将播放设备打开

MMControl1.From=0’指定播放位置

MMControl1.Command=“seek”’在打开的文件中,设置下一个操作位置

Slider1.Min=1’设定Slider控件的最小值为1

Slider1.Max=MMControl1.Length’设定Slider控件的最大值为媒体文件的长度

Slider1.SmallChange=MMControl1.Length/20’单击键盘上下键时变化长度

Slider1.LargeChange=Slider1.LargeChange=MMControl1.Length/10

单击PageDown或PageUp时的长度

PrivateSubCommand2_ClickMMControl1.Command=“close”’关闭播放设备

Picture1.Cls’清除Picture控件中的内容

PrivateSubTimer1_TimerSlider1.Value=MMControl1.Position’设定滑块的位置等于媒体文件的位置。

EndSub

7.5调用API函数开发多媒体程序

使用MCI控件开发Windows系统下的多媒体程序,具有简单、快捷、方便的特点,但在实际程序设计中,常会碰到一些利用MCI控件不好解决的问题。例如,VB语言不包含语音支持、I/O端口访问以及位图操作等。为适应不同层次程序设计人员的要求,VB提供了直接调用Windows的API函数的功能,通过调用API函数,可以实现对系统的各个层次的功能调用。

7.5.1VB的APl函数调用