11. 多媒體
要執行本章中所介紹的範例程式,系統必須配備音效卡和媒體驅動程式,另外,需要一個WAV檔以及一個AVI檔來播放聲音和視訊。
如何播放聲音檔(WAV)?
在Visual Basic中我們有好幾種方式可以播放聲音檔,在這裡我們討論兩種最簡單的方法:第一種,使用Windows提供的mciExecute API函式,第二種使用Visual Basic提供的Multimedia控制項。
mciExecute函式
以下的程式告訴你如何宣告mciExecute函式,然後利用它來播放WAV檔。把這段程式放進新專案的空白的表單裡,執行這個專案,然後在表上的任何一處按一下滑鼠左鍵。
Option Explicit Private Declare Function mciExecute _ Lib "winmm.dll" ( _ ByVal lpstrCommand As String _ ) As Long Private Sub Form_Click() Dim intX intX = mciExecute("Play C:\Windows\Media\Office97\whoosh.wav") `Change filename to name of your sample WAV file End Sub
我們也可以用mciExecute函式來執行其他與多媒體相關的指令,稍候我們就會看到如何用這個函式來放播視訊檔。
Multimedia控制項
Visual Basic提供的Multimedia控制項是播放聲音檔的絕佳工具,而且只要稍微修改範例程式,就可以用這個控制項來播放AVI檔和MMM(Multimedia Movie)檔,甚至可以控制多媒體硬體設備,在這裡我們只討論聲音檔的播放。
如果要執行以下的範例程式,必須要在一張空白的表單上產生一個Multimedia控制項。如果這個控制項不在工具箱中(在工具箱上顯示的名稱是MMControl),那麼要在「設定使用元件」對話方塊中加入Microsoft Multimedia Control 6.0。
把MMControl控制項的Name屬性設定為mciTest,Visible屬性設為False,在表單上加入以下這段程式碼,這樣這個隱藏的控制項就可以播放背景音效了。如果想知道MMControl控制項上哪一個按鈕有什麼功能,請參考Visual Basic的線上說明。
Option Explicit Private Sub Form_Click() With mciTest .FileName = "C:\Windows\Media\Office97\Whoosh.wav" `Change filename to name of your sample WAV file .Command = "Sound" End With End Sub
如何播放視訊(AVI)檔?
在一個已經設定好可以播放AVI檔的系統上播放AVI檔非常容易,只要呼叫Windows的mciExceute API函式,或是使用Visual Basic的Multimedia控制項就可以。
mciExecute函式
以下的程式碼告訴你如何宣告mciExecute API函式,然後用它來播放一個視訊檔。和前面提到的步驟一樣,把以下的程式碼加入到張表單上,執行這個專案,然後在表單上任何一處按一下滑鼠左鍵,就可看到播放的視訊。筆者假定你把Windows 95的光碟放在D槽,而且播放由Windows 95提供的樣本視訊檔。如果你的視訊檔在別處,可以自行修改程式。這個程式幾乎和前面提到播放WAV檔的程式一模一樣。
Option Explicit Private Declare Function mciExecute _ Lib "winmm.dll" ( _ ByVal lpstrCommand As String _ ) As Long Private Sub Form_Click() Dim x x = mciExecute("Play D:\Funstuff\Videos\Welcome1.avi") `Change filename to name of your sample AVI file End Sub
圖11-1所顯示的是執行中的表單和視訊檔。
圖11-1 播放中的視訊檔 |
Multimedia控制項
Visual Basic的Multimedia控制項是一個播放視訊檔的好工具,Visual Basic的線上說明對Multimedia控制項上面的按鈕有詳細的說明,而在這裡筆者要告訴你如何藉由程式讓隱藏的控制項播放視訊檔。
首先,在新專案的表單上放入一個Multimedia控制項,把這個控制項的屬性Name設定為mciTest,屬性Visible設定為False,然後把以下的程式碼加到表單中,執行這個專案,在表單上任何一處按一下滑鼠左鍵,就會看到執行的結果。如果你的AVI檔所在的位置和程式中的位置不同,請改變這個部分。
Option Explicit Private Sub Form_Click() With mciTest .FileName = "D:\Funstuff\Videos\Welcome1.avi" .Command = "Open" .Command = "Play" End With End Sub Private Sub mciTest_Done(NotifyCode As Integer) mciTest.Command = "Close" End Sub
本來筆者要把Close陳述放在Play陳述式後面,結果發現視訊檔打開後立刻就結束了。我們後來用了Done事件程序解決了這個問題,在視訊檔播放結束後,系統會驅動Done事件,這時我們就可以關閉這個視訊檔了。
如何播放音樂CD?
Multimedia控制項讓Visual Basic應用程式可以方便地播放音樂CD;如果把Multimedia控制項的Visible屬性設為True,你就可以看見CD音響的操作面板,而如果把Visible設為False,會把這個界面隱藏起來,但仍然可以從程式中播放音樂。
以下這個範例是以第二種方式來處理音樂播放的工作。在圖11-2中,你可以看到一張只有一個Previous按鈕和一個Next按鈕的表單。當程式啟動時,CD中的第一首曲子就會自動播放;如果按下Previous或Next按鈕,程式會跳到前一首或下一首曲子的開始,目前正播放第幾首和CD上總共有幾首,都會顯示在表單上。如果你關閉表單,音樂即停止播放。
要達到上述這些功能並不需要用到大量的程式碼,而且即使要多加一些功能也並不困難,Multimedia控制項提供了相當豐富的屬性和物件方法,足以應付各種需求。在這個範例中,我們只用了一些最基本的功能。
首先,請建立一個新的標準執行檔專案,將表單的Name屬性設為frmMusic,存檔為MUSIC.FRM,而將專案存成MUSIC.VBP。把表單的Caption屬性設為"Music Machine",然後加上四種控制項:標籤控制項lblMusic、計時器控制項tmrMusic、Multimedia控制項mciMusic以及兩個指令按鈕控制項cmdPrev和cmdNext。圖11-2是設計階段中的表單,圖11-3則是程式執行的情形。請把以下這段程式碼加到表單中。
`MUSIC.FRM Option Explicit Private Sub cmdNext_Click() mciMusic.Command = "Next" End Sub Private Sub cmdPrev_Click() mciMusic.Command = "Prev" End Sub Private Sub Form_Load() With mciMusic .DeviceType = "CDAudio" .Command = "Open" .Command = "Play" End With End Sub Private Sub Form_Unload(Cancel As Integer) With mciMusic .Command = "Stop" .Command = "Close" End With End Sub Private Sub tmrMusic_Timer() With mciMusic lblMusic.Caption = "Track No.: " & .Track & _ vbCrLf & "No. Tracks: " & .Tracks End With End Sub
Music應用程式把Multimedia控制項的DeviceType屬性設為CDAudio,告訴Multimedia控制項準備播放一張音樂CD。在程式中,我們用Tracks和Track分別將CD中的資訊顯示在表單上,而常被用到屬性則是Command。Command屬性讓應用程式實際地指揮Multimedia控制項執行設備控制的動作,在這個程式中我們用到了Open、Play、Next、Prev、Stop和Close等命令,但實際上還有更多的命令可供我們使用,請參考線上手冊中有關Multimedia控制項的資訊。
圖11-2 設計階段中的Music表單 |
圖11-3 執行階段中的Music表單
|