分享

MMControl控件

 hunt_2010 2010-10-14

 认识MMControl控件

MMControl控件包含一组高层次的独立于设备的命令,通过这些命令可以控制音频和视频等外围设备,包括CDVCDWAVMIDIAVI等。

MMControl控件属于ActiveX控件,使用前应首先将其添加到工具箱中。选择“工程”/“部件”命令,打开“部件”对话框,选择Microsoft Multimedia Control 6.0 SP3),单击“确定”按钮将其添加到工具箱中,在工具箱中双击 图标,即可将其添加到窗体上,添加过程如图1所示。

1  MMControl控件添加过程

从上图可以看出,窗体上的MMControl控件,由多个按钮组成,这些按钮从左到右依次是:起始点、终止点、播放、暂停、后退、前进、停止、录制和弹出。它们的功能是管理MCI设备和播放音频或视频文件。

MMControl控件的属性

1.Command属性

用于指定将要执行的MCI命令,以控制播放、存储多媒体文件谇,这些命令及功能如表1所示。

1                              MCI命令

命令

功能

Open

打开MCI设备

Close

关闭MCI设备

Play

MCI设备进行播放

Pause

暂停播放或录制

Stop

停止MCI设备

Back

向后步进可用的曲目

Step

向前步进可用的曲目

Prev

使用Seek命令跳到当前曲目的起始位置。若在前一Prev命令执行后3s内再次执行,则跳到前一曲目的起始位置;若已在第一个曲目,则跳到第一个曲目的起始位置

Next

使用Seek命令跳到下一个曲目的起始位置。若已在最后一个曲目,则跳到最后一个曲目的起始位置

Seek

向前或向后查找曲目

Record

录制MCI设备的输入

Eject

CD驱动器中弹出音频CD

Save

保存打开的文件

实际编程中,常用命令为openplayclose。例如:

打开一个多媒体文件:

 

MMControl1.FileName = "filename"

MMControl1.Command = "open"

 

上述代码中的filename是指定要打开的文件多媒体文件名及路径,如果需要自动识别该路径,可将多媒体文件放在工程所在的文件夹,然后使用App.Path

播放多媒体文件:

 

MMControl1.Command = "Open"

 

关闭多媒体文件:

 

MMControl1.Command = "Close"

 

  窗体加载时,播放背景音乐,窗体卸载时,关闭背景音乐,代码如下。

Private Sub Form_Load()

  '播放背景音乐

  With MMControl1

      .Visible=False                                                      '设置MMControl1控件不可见

      .FileName = App.Path & "\back\mr.wav"               '指定声音文件

      .Command = "Open"                                            '打开多媒体文件

      .Command = "play"                                              '播放多媒体文件

  End With

End Sub

Private Sub Form_Unload (Cancel as Integer)

   Form1.MMControl1.Command = "Close"                    '关闭多媒体文件

End Sub

2.DeviceType属性

指定要打开的MCI设备的类型,这些类型及说明如表2所示。

2                     DeviceType属性设置值

设备类型

设置值

文件类型

说明

CD audio

cdaudio

-

音频CD播放器

Digital Audio Tape

dat

-

数字音频磁带播放器

Digital video(not GDI-based)

DigitalVideo

-

窗口中的数字视频

Other

Other

-

未定义MCI设备

Overlay

Overlay

-

覆盖设备

Scanner

Scanner

-

图像扫描仪

Sequencer

Sequencer

.mid

音响设备数字接口(MIDI)序列发生器

Vcr

VCR

-

视频磁带录放器

AVI

AVIVideo

.avi

视频文件

VCD

mpegVideo

.dat

视频文件

videodisc

Videodisc

-

视频播放器

waveaudio

Waveaudio

.wav

播放数字波形文件的音频设备

DeviceType属性一般可以不设置,但是以下两种情况必须设置。

1)播放CDVCD时,必须指定设备类型。

2)如果文件的扩展名没有指定将要使用的设备类型,那么打开复杂MCI设备时也必须指定设备类型。

3.TimeFormat属性

用来指定所有位置信息所使用的时间格式,其设置值为010,如表3所示。

3                 TimeFormat属性的设置值

常量

说明

0

mciFormatMilliseconds

毫秒数用四字节整数变量保存

1

mciFormatHms

小时数、分钟数和秒数被压缩到一个四字节整数中。从最低有效字节到最高有效字节,这四个数分别是:小时数(最低有效字节)/分钟数/秒数/未使用(最高有效字节)

2

mciFormatMsf

分钟数、秒数和帧被压缩到一个四位的整数中。从最低有效字节到最高有效字节,这四个数分别是:分钟数(最低有效字节)/秒数//未使用(最高有效字节)

3

mciFormatFrames

帧用四字节的整数变量保存

4

mciFormatSmpte24

24-SMPTE将以下数值压缩到一个四字节的整数中。从最低有效字节到最高有效字节,这四个数分别是:小时数(最低有效字节)/分钟数/秒数/帧(最高有效字节)SMPTE(动画和电视工程师协会)时间是一种绝对的时间格式,它按小时数、分钟数、秒数和帧的格式显示。标准的SMPTE的分度类型有242530帧每秒

5

mciFormatSmpte25

25-SMPTE按照与24-SMPTE相同的顺序将数据压缩到一个四字节变量中

6

mciFormatSmpte30

30-SMPTE按照与24-SMPTE相同的顺序将数据压缩到一个四字节变量中

7

mciFormatSmpte30Drop

30-放下-SMPTE按照与24-SMPTE相同的顺序将数据压缩到一个四字节变量中

8

mciFormatBytes

字节数用四字节整数变量保存

9

mciFormatSamples

示例用四字节整数变量保存

10

mciFormatTmsf

曲目、分钟数、秒数和帧被压缩到一个四字节整数中。从最低有效字节到最高有效字节,它们分别是:曲目(最低有效字节)/分钟数/秒数/帧(最高有效字节)

3.From属性

指定开始播放文件或录制文件的开始时间。

4.To属性

From属性对应,指定播放文件或录制文件的结束时间。

5.Position属性

该属性用于返回正在播放的多媒体文件的位置,时间单位由TimeFormat属性决定。

6.Length属性

用于规定打开的MCI设备上多媒体文件的总体播放长度,时间单位由TimeFormat属性决定。

7.Start属性

该属性指定当前正在播放的多媒体文件的起始位置,时间单位由TimeFormat属性决定。

8.Mode属性

返回打开的MCI设备的当前模式,其设置值如表4所示。

4                                                 Mode属性的设置值

常数/设备模式

说明

524

mciModeNotOpen

设备没有打开

525

mciModeStop

停止

526

mciModePlay

正在播放

527

mciModeRecord

正在录制

528

mciModeeek

正在搜索

529

mciModePause

暂停

530

mciModeReady

设备准备好

 

  播放背景音乐,并显示当前状态。

1)启动VB,新建一个工程,将MMControl控件添加到工具箱中。

2)在窗体上添加一个MMControl控件和一个Label控件,均使用默认名称。

3)切换到代码窗口,编写如下代码。

 

Private Sub Form_Load()

  With MMControl1

      .FileName = App.Path & "\back\mr.wav"                      '指定多媒体文件

      .Command = "Open"                                                   '打开多媒体文件

      .Command = "play"                                                     '播放多媒体文件

  End With

End Sub

'显示播放状态

Private Sub MMControl1_StatusUpdate()

  Select Case MMControl1.Mode

    Case 524

      Label1.Caption = "设备没有打开"

    Case 525

      Label1.Caption = "停止"

    Case 526

      Label1.Caption = "正在播放"

    Case 527

      Label1.Caption = "正在录制"

    Case 528

      Label1.Caption = "正在搜索"

    Case 529

      Label1.Caption = "暂停"

    Case 530

      Label1.Caption = "设备准备好"

  End Select

End Sub

Private Sub Form_Unload(Cancel As Integer)

   Form1.MMControl1.Command = "Close"                           '关闭正在播放的多媒体文件

End Sub

F5键,运行程序,结果如图2所示。

2 播放WAV

9.Track属性

表示当前MCI设备上可用的曲目个数。例如播放CD时,显示当前曲目编号。

 

Private Sub MMControl1_StatusUpdate()

  Label2.Caption = "当前曲目:" & Str$(MMControl1.Track)                              '显示当前曲目

End Sub

&说明:如果要获得总曲目数,可以使用Tracks属性。

10.ErrorErrorMessage属性

使用ErrorErrorMessage属性,可以处理MMControl控件产生的错误。在每个命令后可以检查错误情况。例如,在Open命令之后,可用下面的代码检查Error属性的值,以判断是否存在CD驱动器。如果没有可用的CD驱动器,则返回错误信息。例如:

 

If Form1.MMControl1.Error Then

   MsgBox Form1.MMControl1.ErrorMessage,vbCritical, "未安装CD播放器或CD播放器不能正常工作"

End If

MMControl控件的事件

1ButtonClick事件

当用户单击MMControl控件的各个命令按钮时,发生该事件。下面给出命令按钮所对应的事件,如表5所示。

5                              Mode属性的设置值

命令按钮

说明

事件

倒带

MMControl1_PrevClick

快进

MMControl1_NextClick

步进

MMControl1_StepClick

回倒

MMControl1_BackClick

暂停

MMControl1_PauseClick

播放

MMControl1_PlayClick

录音

MMControl1_RecordClick

停止

MMControl1_StopClick

弹出

MMControl1_EjectClick

 

  单击“弹出”按钮,提示光盘弹出,代码如下。

 

Private Sub MMControl1_EjectClick(Cancel As Integer)

  MsgBox "光盘弹出!"

End Sub

2StatusUpdate事件

按照按UpdateInterval属性所给定的时间间隔自动地发生。这一事件允许应用程序更新显示,以通知用户当前MCI设备的状态。

3Done事件

Notify属性为TrueMCI命令结束时发生Done事件,该事件有一个参数NotifyCode,该参数表MCI命令是否成功,其设置值如表6所示。

6                     NotifyCode参数的设置值

常量

说明

1

mciSuccessful

命令成功的执行

2

mciSuperseded

命令被其它命令所替代

4

mciAborted

命令被用户中断

8

mciFailure

命令失败

 

  当播放完多媒体文件时,将触发MMControl控件的Done事件,在该事件下将MMControl控件的“暂停”和“停止”按钮设置为不可用,代码如下。

 

Private Sub MMControl1_Done(NotifyCode As Integer)

  MMControl.StopEnabled = False: MMControl.PauseEnabled = False             '“暂停”和“停止”按钮不可用

End Sub

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多