2.StatusUpdate事件
按UpdateInterval属性所给定的时间间隔自动地发生。
格式:
Private Sub MMControl_StatusUpdate()
这一事件允许应用程序更新显示,以通知用户当前MCI设备的状态。应用程序可以从Position、Length和Mode等属性中获得状态信息。
3.ButtonGotFocus事件
当Multimedia MCI控件的按钮接受输入焦点时发生。
格式:
Private Sub MMControl_ButtonGotFocus()
Button可以是以下任意一个:
Back、Eject、Next、Pause、Play、Prev、Record、Step或Stop。
4.ButtonLostFocus事件
当Multimedia MCI控件的按钮失去输入焦点时发生。
格式:
Private Sub MMControl_ButtonLostFocus()
Button可以是以下任意一个:
Back、Eject、Next、Pause、Play、Prev、Record、Step或Stop。
5.ButtonClick事件
当用户在Multimedia MCI控件的按钮上按下并释放鼠标按钮时发生。
格式:
Private Sub MMControl_ButtonClick(Cancel As Integer)
Button可以是以下任意一种:
Back、Eject、Next、Pause、Play、Prev、Record、Step或Stop。
按照缺省规定,当用户选取按钮时,每个ButtonClick事件都执行一条MCI命令。表9-5表列出了控件中的每一个按钮相对应的MCI命令。
表9-5 控件中的每一个按钮相对应的MCI命令
|
Button |
命 令 |
Button |
命 令 |
|
Back |
MCI_STEP |
Next |
MCI_SEEK |
|
Step |
MCI_STEP |
Stop |
MCI_STOP |
|
Play |
MCI_PLAY |
Record |
MCI_RECORD |
|
Pause |
MCI_PAUSE |
Eject |
使用MCI_SET_DOOR_OPEN参数的MCI_SET |
|
Prev |
MCI_SEEK |
|
|
将ButtonClick的Cancel参数设置为True,阻止执行默认的MCI命令。如果设置为False,则执行相应的ButtonClick事件之后,执行与按钮相关的MCI命令。
例如,通常单击Play按钮后,应该播放指定的文件,但如果在PlayClick事件中将参数Cancel设置成True,则会阻止执行Play功能,因此指定的文件没有被执行。
6.ButtonCompleted事件
当Multimedia MCI控件激活的MCI命令结束时发生。
格式:
Private Sub MMControl_ButtonCompleted(Errorcode As Long)
Button可是以下任意一种:
Back、Eject、Next、Pause、Play、Prev、Record、Step或Stop。
参数Errorcode如果设置为0,则命令成功地完成;如果设置为其他值,则命令没有成功地完成。
在ButtonClick事件中,如果参数Cancel被设置为True,则不触发ButtonCompleted事件。
实例9.2 用Multimedia MCI控件录音和播放多媒体文件
新建一个窗体,设置其MaxButton属性为False。在上面画两个标签,一个框架,六个命令按钮,再画一个通用对话框(Common Dialog)控件,一个Multimedia MCI控件。其界面如图9-6所示。
注意:Multimedia MCI控件默认不在工具箱中,添加它的方法为:单击“工程”菜单的“部件”命令,在弹出的“部件”对话框中选择“控件”选项卡,向下拖动滚动条,找到“Microsoft Multimedia Control 6.0”,选中这个ActiveX控件,单击【确定】即可。

图9-6 用Multimedia MCI控件录音和播放多媒体文件设计界面
在其代码窗口中输入如下代码:
Option Explicit
Dim PlayFileName As String
Dim OnceMore As Integer
Private Sub Form_Load()
Me.Caption = "用Multimedia MCI控件编写的录放音工具软件"
OnceMore = 1:Frame1.Caption = "录音与放音":Command1.Caption = "录音"
Command2.Caption = "停止录音":Command3.Caption = "放音"
Command4.Caption = "停止放音":Command5.Caption = "打开..."
Command6.Caption = "退出":Command2.Enabled = False:Command3.Enabled = False
Command4.Enabled = False:Label1.Caption = Space(0):Label2.Caption = Space(0)
MMControl1.Visible = False:MMControl1.AutoEnable = True
MMControl1.Notify = True:MMControl1.Wait = True
MMControl1.Shareable = False:MMControl1.UpdateInterval = 0
End Sub
Private Sub Command1_Click()
MMControl1.Command = "Stop":MMControl1.Command = "Close"
CommonDialog1.FileName = "未命名":CommonDialog1.CancelError = True
On Error GoTo Errhandler:CommonDialog1.Flags = cdlOFNOverwritePrompt
CommonDialog1.Filter = "Wave Files(*.WAV)|*.WAV"
CommonDialog1.ShowSave:PlayFileName = CommonDialog1.FileName
Label1.Caption = "正在录音..."
If Command4.Enabled = True Then
Command4_Click
End If
If Dir$(PlayFileName) <> Space(0) Then Kill PlayFileName
MMControl1.UpdateInterval = 50:MMControl1.DeviceType = "WaveAudio"
MMControl1.FileName = PlayFileName:MMControl1.Command = "Open"
MMControl1.Command = "Record":Command1.Enabled = False
Command2.Enabled = True:Command3.Enabled = False:Command5.Enabled = False
Me.Caption = PlayFileName
Errhandler:
Exit Sub
End Sub
Private Sub Command2_Click()
Label1.Caption = "已经停止录音...":MMControl1.Command = "Save"
MMControl1.Command = "Stop":MMControl1.Command = "Close"
Command2.Enabled = False:Command1.Enabled = True:Command3.Enabled = True
Command5.Enabled = True
End Sub
Private Sub Command3_Click()
Label1.Caption = "正在放音...":MMControl1.FileName = PlayFileName
MMControl1.Command = "Open":MMControl1.Command = "Prev"
MMControl1.Command = "Play":Command1.Enabled = False
Command3.Enabled = False:Command4.Enabled = True
End Sub
Private Sub Command4_Click()
Label1.Caption = "停止放音...":MMControl1.Command = "Stop"
MMControl1.Command = "Close":Command1.Enabled = True
Command3.Enabled = True:Command4.Enabled = False:OnceMore = 1
End Sub
Private Sub Command5_Click()
CommonDialog1.CancelError = True:On Error GoTo Errhandler
CommonDialog1.Filter="*.mpg|*.mpg|*.avi|*.avi|*.wav|*.wav|*.mid|*.mid|*.dat|*.dat|*.*|*.*"
CommonDialog1.FilterIndex = 3:CommonDialog1.ShowOpen
PlayFileName = CommonDialog1.FileName
If PlayFileName <> Space(0) Then
Select Case UCase(Right(PlayFileName, 3))
Case "WAV"
MMControl1.DeviceType = "WaveAudio"
Case "DAT", "MPG"
MMControl1.DeviceType = "MpegVideo"
Case "AVI"
MMControl1.DeviceType = "AVIVideo"
Case "MID"
MMControl1.DeviceType = "Sequencer"
Case "CDA"
MMControl1.DeviceType = "CDAudio"
Case Else
Exit Sub
End Select
MMControl1.Command = "Close":MMControl1.FileName = PlayFileName
MMControl1.Command = "Open":MMControl1.Command = "Play"
Command3.Enabled = False:Command4.Enabled = True
Me.Caption = PlayFileName:OnceMore = 0
End If
Errhandler:
Exit Sub
End Sub
Private Sub Command6_Click()
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
MMControl1.Command = "Close"
End Sub
Private Sub MMControl1_Done(NotifyCode As Integer)
If Command4.Enabled = True And OnceMore Then
Command4_Click
End If
End Sub
Private Sub MMControl1_StatusUpdate()
Label2.Caption = "当前帧数:" + Trim(Str(MMControl1.Position))
End Sub
运行这个窗体,效果如图9-7所示。

图9-7 正在录音
ActiveMovie控件可以播放MPEG、AVI、WAV、MOV等多媒体文件。用ActiveMovie播放动画文件时,可以显示当前的播放时间或当前的播放帧。
实例9.3 用ActiveMovie控件播放声音和视频文件
新建一个窗体,设置其MaxButton属性为False。在上面画一个标签,三个命令按钮,一个通用对话框(Common Dialog)控件,一个ActiveMovie控件。其界面如图9-8所示。

图9-8 用ActiveMovie控件播放声音和视频文件设计界面
注意:ActiveMovie控件默认不在工具箱中,添加它的方法为:单击“工程”菜单的“部件”命令,在弹出的“部件”对话框中单击【浏览】按钮,在C:\WINDOWS\SYSTEM中找到AMOVIE.OCX文件,双击之,就会在“控件”选项卡中找到“Microsoft ActiveMovie Control”,选中它,单击【确定】即可。
在其代码窗口中输入如下代码:
Option Explicit
Private Sub Form_Load()
Me.Caption = "可以播放音频和视频文件的多媒体播放器"
Label1.AutoSize = True
Label1.Caption = "支持*.AVI,*.WAV,*.MID,*.MP3,*.MOV,*.MPG,*.DAT,*.RMI!"
Command1.Caption = "打开":Command2.Caption = "停止"
Command3.Caption = "退出":Command2.Enabled = False
End Sub
Private Sub Command1_Click()
Dim FName As String
CommonDialog1.CancelError = True:On Error GoTo Errhandler
CommonDialog1.Filter="*.avi|*.AVI|*.wav|*.WAV|*.mid|*.MID|*.mp3|*.MP3|*.mov|*.MOV|*.mpg|*.MPG|*.dat|*.DAT|*.RMI|*.rmi|*.*|*.*" '设置扩展名
CommonDialog1.ShowOpen
FName = CommonDialog1.FileName
ActiveMovie1.FileName = CommonDialog1.FileName:Command2.Enabled = True
Exit Sub
Errhandler:
Exit Sub
End Sub
Private Sub Command2_Click()
ActiveMovie1.Stop
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
运行这个窗体,效果如图9-9所示。

图9-9 正在播放AVI文件
Windows Media Player控件支持的文件类型比较丰富,可以播放WAV、MID、MP3、WMA、AIF、ASF、MPEG、MPG、AVI、MOV、DAT、RMI等多媒体文件,可以在线播放网上的音视频节目。用Windows Media Player控件播放文件时,可以显示播放文件的总时间和已经过去的时间,可以调节音量,并且提供了【播放】、【暂停】、【停止】、【快进】、【快退】、【向后跳进】、【向前跳进】等按钮,可以方便地控制文件的播放。
Windows Media Player控件提供了一个进度条来显示播放进度。运行时,用户可以拖动进度条中的滑块来调节播放的进度。在播放窗口上单击右键,可以看到该控件提供的快捷菜单,通过该快捷菜单,可以控制与管理正在播放的文件。例如,选择“停止”,可以暂停文件的播放;选择“缩放”子菜单下的缩放比例,可以按指定的比例缩放窗口;选择“另存为(A)…”,可以将当前正在播放的文件保存到指定位置。