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