認(rèn)識(shí)MMControl控件 MMControl控件包含一組高層次的獨(dú)立于設(shè)備的命令,通過這些命令可以控制音頻和視頻等外圍設(shè)備,包括CD、VCD、WAV、MIDI、AVI等。 MMControl控件屬于ActiveX控件,使用前應(yīng)首先將其添加到工具箱中。選擇“工程”/“部件”命令,打開“部件”對(duì)話框,選擇Microsoft Multimedia Control 6.0 SP3),單擊“確定”按鈕將其添加到工具箱中,在工具箱中雙擊 圖1 MMControl控件添加過程 從上圖可以看出,窗體上的MMControl控件,由多個(gè)按鈕組成,這些按鈕從左到右依次是:起始點(diǎn)、終止點(diǎn)、播放、暫停、后退、前進(jìn)、停止、錄制和彈出。它們的功能是管理MCI設(shè)備和播放音頻或視頻文件。 MMControl控件的屬性1.Command屬性 用于指定將要執(zhí)行的MCI命令,以控制播放、存儲(chǔ)多媒體文件誶,這些命令及功能如表1所示。 表1 MCI命令
實(shí)際編程中,常用命令為open、play和close。例如: 打開一個(gè)多媒體文件:
MMControl1.FileName = "filename" MMControl1.Command = "open"
上述代碼中的filename是指定要打開的文件多媒體文件名及路徑,如果需要自動(dòng)識(shí)別該路徑,可將多媒體文件放在工程所在的文件夾,然后使用App.Path。 播放多媒體文件:
MMControl1.Command = "Open"
關(guān)閉多媒體文件:
MMControl1.Command = "Close"
例 窗體加載時(shí),播放背景音樂,窗體卸載時(shí),關(guān)閉背景音樂,代碼如下。 Private Sub Form_Load() '播放背景音樂 With MMControl1 .Visible=False '設(shè)置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" '關(guān)閉多媒體文件 End Sub 2.DeviceType屬性 指定要打開的MCI設(shè)備的類型,這些類型及說明如表2所示。 表2 DeviceType屬性設(shè)置值
DeviceType屬性一般可以不設(shè)置,但是以下兩種情況必須設(shè)置。 (1)播放CD、VCD時(shí),必須指定設(shè)備類型。 (2)如果文件的擴(kuò)展名沒有指定將要使用的設(shè)備類型,那么打開復(fù)雜MCI設(shè)備時(shí)也必須指定設(shè)備類型。 3.TimeFormat屬性 用來指定所有位置信息所使用的時(shí)間格式,其設(shè)置值為0~10,如表3所示。 表3 TimeFormat屬性的設(shè)置值
3.From屬性 指定開始播放文件或錄制文件的開始時(shí)間。 4.To屬性 與From屬性對(duì)應(yīng),指定播放文件或錄制文件的結(jié)束時(shí)間。 5.Position屬性 該屬性用于返回正在播放的多媒體文件的位置,時(shí)間單位由TimeFormat屬性決定。 6.Length屬性 用于規(guī)定打開的MCI設(shè)備上多媒體文件的總體播放長(zhǎng)度,時(shí)間單位由TimeFormat屬性決定。 7.Start屬性 該屬性指定當(dāng)前正在播放的多媒體文件的起始位置,時(shí)間單位由TimeFormat屬性決定。 8.Mode屬性 返回打開的MCI設(shè)備的當(dāng)前模式,其設(shè)置值如表4所示。 表4 Mode屬性的設(shè)置值
例 播放背景音樂,并顯示當(dāng)前狀態(tài)。 (1)啟動(dòng)VB,新建一個(gè)工程,將MMControl控件添加到工具箱中。 (2)在窗體上添加一個(gè)MMControl控件和一個(gè)Label控件,均使用默認(rèn)名稱。 (3)切換到代碼窗口,編寫如下代碼。
Private Sub Form_Load() With MMControl1 .FileName = App.Path & "\back\mr.wav" '指定多媒體文件 .Command = "Open" '打開多媒體文件 .Command = "play" '播放多媒體文件 End With End Sub '顯示播放狀態(tài) Private Sub MMControl1_StatusUpdate() Select Case MMControl1.Mode Case 524 Label1.Caption = "設(shè)備沒有打開" Case 525 Label1.Caption = "停止" Case 526 Label1.Caption = "正在播放" Case 527 Label1.Caption = "正在錄制" Case 528 Label1.Caption = "正在搜索" Case 529 Label1.Caption = "暫停" Case 530 Label1.Caption = "設(shè)備準(zhǔn)備好" End Select End Sub Private Sub Form_Unload(Cancel As Integer) Form1.MMControl1.Command = "Close" '關(guān)閉正在播放的多媒體文件 End Sub 按F5鍵,運(yùn)行程序,結(jié)果如圖2所示。 圖2 播放WAV 9.Track屬性 表示當(dāng)前MCI設(shè)備上可用的曲目個(gè)數(shù)。例如播放CD時(shí),顯示當(dāng)前曲目編號(hào)。
Private Sub MMControl1_StatusUpdate() Label2.Caption = "當(dāng)前曲目:" & Str$(MMControl1.Track) '顯示當(dāng)前曲目 End Sub &說明:如果要獲得總曲目數(shù),可以使用Tracks屬性。 10.Error和ErrorMessage屬性 使用Error和ErrorMessage屬性,可以處理MMControl控件產(chǎn)生的錯(cuò)誤。在每個(gè)命令后可以檢查錯(cuò)誤情況。例如,在Open命令之后,可用下面的代碼檢查Error屬性的值,以判斷是否存在CD驅(qū)動(dòng)器。如果沒有可用的CD驅(qū)動(dòng)器,則返回錯(cuò)誤信息。例如:
If Form1.MMControl1.Error Then MsgBox Form1.MMControl1.ErrorMessage,vbCritical, "未安裝CD播放器或CD播放器不能正常工作" End If MMControl控件的事件1.ButtonClick事件 當(dāng)用戶單擊MMControl控件的各個(gè)命令按鈕時(shí),發(fā)生該事件。下面給出命令按鈕所對(duì)應(yīng)的事件,如表5所示。 表5 Mode屬性的設(shè)置值
例 單擊“彈出”按鈕,提示光盤彈出,代碼如下。
Private Sub MMControl1_EjectClick(Cancel As Integer) MsgBox "光盤彈出!" End Sub 2.StatusUpdate事件 按照按UpdateInterval屬性所給定的時(shí)間間隔自動(dòng)地發(fā)生。這一事件允許應(yīng)用程序更新顯示,以通知用戶當(dāng)前MCI設(shè)備的狀態(tài)。 3.Done事件 當(dāng)Notify屬性為True,MCI命令結(jié)束時(shí)發(fā)生Done事件,該事件有一個(gè)參數(shù)NotifyCode,該參數(shù)表示MCI命令是否成功,其設(shè)置值如表6所示。 表6 NotifyCode參數(shù)的設(shè)置值
例 當(dāng)播放完多媒體文件時(shí),將觸發(fā)MMControl控件的Done事件,在該事件下將MMControl控件的“暫停”和“停止”按鈕設(shè)置為不可用,代碼如下。
Private Sub MMControl1_Done(NotifyCode As Integer) MMControl.StopEnabled = False: MMControl.PauseEnabled = False '“暫停”和“停止”按鈕不可用 End Sub
|
|