电竞比分网-中国电竞赛事及体育赛事平台

分享

MMControl控件

 hunt_2010 2010-10-14

 認識MMControl控件

MMControl控件包含一組高層次的獨立于設(shè)備的命令,通過這些命令可以控制音頻和視頻等外圍設(shè)備,包括CD、VCD、WAV、MIDI、AVI等。

MMControl控件屬于ActiveX控件,使用前應(yīng)首先將其添加到工具箱中。選擇“工程”/“部件”命令,打開“部件”對話框,選擇Microsoft Multimedia Control 6.0 SP3),單擊“確定”按鈕將其添加到工具箱中,在工具箱中雙擊 圖標,即可將其添加到窗體上,添加過程如圖1所示。

1  MMControl控件添加過程

從上圖可以看出,窗體上的MMControl控件,由多個按鈕組成,這些按鈕從左到右依次是:起始點、終止點、播放、暫停、后退、前進、停止、錄制和彈出。它們的功能是管理MCI設(shè)備和播放音頻或視頻文件。

MMControl控件的屬性

1.Command屬性

用于指定將要執(zhí)行的MCI命令,以控制播放、存儲多媒體文件誶,這些命令及功能如表1所示。

1                              MCI命令

命令

功能

Open

打開MCI設(shè)備

Close

關(guān)閉MCI設(shè)備

Play

MCI設(shè)備進行播放

Pause

暫停播放或錄制

Stop

停止MCI設(shè)備

Back

向后步進可用的曲目

Step

向前步進可用的曲目

Prev

使用Seek命令跳到當前曲目的起始位置。若在前一Prev命令執(zhí)行后3s內(nèi)再次執(zhí)行,則跳到前一曲目的起始位置;若已在第一個曲目,則跳到第一個曲目的起始位置

Next

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

Seek

向前或向后查找曲目

Record

錄制MCI設(shè)備的輸入

Eject

CD驅(qū)動器中彈出音頻CD

Save

保存打開的文件

實際編程中,常用命令為open、playclose。例如:

打開一個多媒體文件:

 

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è)置值

設(shè)備類型

設(shè)置值

文件類型

說明

CD audio

cdaudio

-

音頻CD播放器

Digital Audio Tape

dat

-

數(shù)字音頻磁帶播放器

Digital video(not GDI-based)

DigitalVideo

-

窗口中的數(shù)字視頻

Other

Other

-

未定義MCI設(shè)備

Overlay

Overlay

-

覆蓋設(shè)備

Scanner

Scanner

-

圖像掃描儀

Sequencer

Sequencer

.mid

音響設(shè)備數(shù)字接口(MIDI)序列發(fā)生器

Vcr

VCR

-

視頻磁帶錄放器

AVI

AVIVideo

.avi

視頻文件

VCD

mpegVideo

.dat

視頻文件

videodisc

Videodisc

-

視頻播放器

waveaudio

Waveaudio

.wav

播放數(shù)字波形文件的音頻設(shè)備

DeviceType屬性一般可以不設(shè)置,但是以下兩種情況必須設(shè)置。

1)播放CDVCD時,必須指定設(shè)備類型。

2)如果文件的擴展名沒有指定將要使用的設(shè)備類型,那么打開復(fù)雜MCI設(shè)備時也必須指定設(shè)備類型。

3.TimeFormat屬性

用來指定所有位置信息所使用的時間格式,其設(shè)置值為010,如表3所示。

3                 TimeFormat屬性的設(shè)置值

常量

說明

0

mciFormatMilliseconds

毫秒數(shù)用四字節(jié)整數(shù)變量保存

1

mciFormatHms

小時數(shù)、分鐘數(shù)和秒數(shù)被壓縮到一個四字節(jié)整數(shù)中。從最低有效字節(jié)到最高有效字節(jié),這四個數(shù)分別是:小時數(shù)(最低有效字節(jié))/分鐘數(shù)/秒數(shù)/未使用(最高有效字節(jié))

2

mciFormatMsf

分鐘數(shù)、秒數(shù)和幀被壓縮到一個四位的整數(shù)中。從最低有效字節(jié)到最高有效字節(jié),這四個數(shù)分別是:分鐘數(shù)(最低有效字節(jié))/秒數(shù)//未使用(最高有效字節(jié))

3

mciFormatFrames

幀用四字節(jié)的整數(shù)變量保存

4

mciFormatSmpte24

24-SMPTE將以下數(shù)值壓縮到一個四字節(jié)的整數(shù)中。從最低有效字節(jié)到最高有效字節(jié),這四個數(shù)分別是:小時數(shù)(最低有效字節(jié))/分鐘數(shù)/秒數(shù)/幀(最高有效字節(jié))SMPTE(動畫和電視工程師協(xié)會)時間是一種絕對的時間格式,它按小時數(shù)、分鐘數(shù)、秒數(shù)和幀的格式顯示。標準的SMPTE的分度類型有24、2530幀每秒

5

mciFormatSmpte25

25-SMPTE按照與24-SMPTE相同的順序?qū)?shù)據(jù)壓縮到一個四字節(jié)變量中

6

mciFormatSmpte30

30-SMPTE按照與24-SMPTE相同的順序?qū)?shù)據(jù)壓縮到一個四字節(jié)變量中

7

mciFormatSmpte30Drop

30-放下-SMPTE按照與24-SMPTE相同的順序?qū)?shù)據(jù)壓縮到一個四字節(jié)變量中

8

mciFormatBytes

字節(jié)數(shù)用四字節(jié)整數(shù)變量保存

9

mciFormatSamples

示例用四字節(jié)整數(shù)變量保存

10

mciFormatTmsf

曲目、分鐘數(shù)、秒數(shù)和幀被壓縮到一個四字節(jié)整數(shù)中。從最低有效字節(jié)到最高有效字節(jié),它們分別是:曲目(最低有效字節(jié))/分鐘數(shù)/秒數(shù)/幀(最高有效字節(jié))

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è)置值

常數(shù)/設(shè)備模式

說明

524

mciModeNotOpen

設(shè)備沒有打開

525

mciModeStop

停止

526

mciModePlay

正在播放

527

mciModeRecord

正在錄制

528

mciModeeek

正在搜索

529

mciModePause

暫停

530

mciModeReady

設(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.ErrorErrorMessage屬性

使用ErrorErrorMessage屬性,可以處理MMControl控件產(chǎn)生的錯誤。在每個命令后可以檢查錯誤情況。例如,在Open命令之后,可用下面的代碼檢查Error屬性的值,以判斷是否存在CD驅(qū)動器。如果沒有可用的CD驅(qū)動器,則返回錯誤信息。例如:

 

If Form1.MMControl1.Error Then

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

End If

MMControl控件的事件

1ButtonClick事件

當用戶單擊MMControl控件的各個命令按鈕時,發(fā)生該事件。下面給出命令按鈕所對應(yīng)的事件,如表5所示。

5                              Mode屬性的設(shè)置值

命令按鈕

說明

事件

倒帶

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屬性所給定的時間間隔自動地發(fā)生。這一事件允許應(yīng)用程序更新顯示,以通知用戶當前MCI設(shè)備的狀態(tài)。

3Done事件

Notify屬性為TrueMCI命令結(jié)束時發(fā)生Done事件,該事件有一個參數(shù)NotifyCode,該參數(shù)表MCI命令是否成功,其設(shè)置值如表6所示。

6                     NotifyCode參數(shù)的設(shè)置值

常量

說明

1

mciSuccessful

命令成功的執(zhí)行

2

mciSuperseded

命令被其它命令所替代

4

mciAborted

命令被用戶中斷

8

mciFailure

命令失敗

 

  當播放完多媒體文件時,將觸發(fā)MMControl控件的Done事件,在該事件下將MMControl控件的“暫停”和“停止”按鈕設(shè)置為不可用,代碼如下。

 

Private Sub MMControl1_Done(NotifyCode As Integer)

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

End Sub

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多