第三卷 多媒體程序開發和應用(2)(1 / 3)

Form1.Avi.To = CInt(Form1.Avi.Length * Form1.Slider1.Value / Form1.Slider1.Max)

'設置動畫結束點

Form1.Avi.Command = "play"

'開始播放

End Sub

第三章 製作音頻播放器

一個真正的多媒體應用程序應該不但能夠實現播放動畫、聲音等文件的功能,而且還能夠獲得媒體文件的各種信息(如長度、動畫的楨數、CD的音軌數等),以便於進行進一步的處理。

如圖6-20所示為一個聲音播放器運行時的窗體外觀。

圖6-20 聲音播放器

下麵就以一個製作聲音播放器的示例來說明如何在多媒體應用程序的製作過程中得到媒體文件的各種信息,它的具體步驟如下。

1.開始工作

首先啟動一個新的項目,向缺省的工具箱中添加一個CommonDialog控件和一個MMControl控件,其中CommonDiaolog控件用於顯示一個打開聲音文件的對話框。如圖6-21所示。

圖6-21 添加控件對話框

2.向窗體添加控件

把一個CommonDialog控件和一個MMControl控件放置到窗體上,它們的屬性設置如表6-1所示。

表6-1 控件的屬性設置

屬 性

設 置

(Name)

MMControl1

AutoEnable

True

DeviceType

Enabled

True

FileName

Height

330

Left

0

Top

2280

UpdateInterval

1000

Visible

False

Width

3540

(Name)

CommonDialog1

DialogTitle

請選擇一個有效的聲音文件

FileName

*.wav

Filter

*.wav

InitDir

c:\pwin98

Left

3600

Top

2160

這樣設置的MMControl控件有以下的特性:

* 控件中各個按鈕的有效狀態有控件自己決定;

* 播放動畫的設備名稱由程序決定;

* 每隔1000毫秒激活一次MMControl1_StatusUpdate()事件;

* 在程序的運行過程中MMControl控件處於不可見的狀態。

如表6-1所示的屬性設置使得CommonDialog控件有如下的特性:

* 顯示的對話框的標題欄中顯示字符串"請選擇一個有效的聲音文件";

* 對話框的缺省目錄為c:\pwin95;

* 在對話框中隻能夠顯示以"*.wav"為結尾的動畫文件。

3.向窗體添加按鈕

在窗體的設計階段向窗體上添加七個CommandButton控件,它們的屬性設置及其相應的功能如表6-2所示。

表6-2 按鈕的屬性設置

屬 性

設 置

(Name)

Open

Caption

打開文件

Enabled

True

Height

495

Left

240

Top

240

Width

975

(Name)

Play

Caption

播放文件

Enabled

True

Height

495

Left

240

Top

840

Width

975

(Name)

Pause

Caption

暫停播放

Enabled

True

Height

495

Left

240

Top

1440

Width

975

(Name)

Close1

Caption

關閉文件

Enabled

True

Height

495

Left

1320

Top

1440

Width

975

(Name)

Stop1

Caption

停止播放

Enabled

True

Height

495

Left

2400

Top

1440

Width

975

(Name)

Prev

Caption

返回開頭

Enabled

True

Height

495

Left

3480

Top

1440

Width

975

其中各個按鈕的功能如下所示:

* Open按鈕的作用是顯示一個打開文件的對話框,並且把文件路徑和文件名傳遞給控件MMControl1;

* Play按鈕的作用是播放一個打開的聲音文件;

* Pause按鈕的作用是暫停播放聲音文件;

* Close1按鈕的作用是關閉一個打開的聲音文件;

* Stop1按鈕的作用是停止播放聲音文件;

* Prev按鈕的作用是把一個播放到文件末尾的聲音文件重新定位到文件開頭。

4.添加Label控件

向窗體上添加三個Label控件,作用是顯示播放文件的信息,它們的屬性設置如表6-3所示。

表6-3 控件Label的屬性設置

屬 性

設 置

(Name)

Label1

Caption

文件類型:

Height

255

Left

120

Top

240

Width

2655

(Name)

Label2

Alignment

0 - Left Justify

AutoSize

True

Caption

文件的長度:

Height

180

Left

120

Top

480

Width

990

(Name)

Label3

Alignment

0 - Left Justify

AutoSize

True

Caption

播放狀態:

Height

180

Left

120

Top

720

Width

810

如表6-4設置的屬性使得控件Label1和Label2具有如下的特性:

* 控件中文字的對齊方式都是左對齊;

* 控件會改變自身的尺寸來適應文字的大小。

其中各個控件的功能如下所示:

* Label1控件的作用是顯示播放文件的類型;

* Label2控件的作用是顯示文件的播放長度;

* Label3控件的作用是顯示程序中文件的播放狀態。

5.添加計時器控件

向窗體上添加一個計時器控件,它的屬性設置如圖6-22所示。

添加控件後的窗體如圖6-23所示。

圖6-22 計時器控件的屬性設置

圖6-23 加控件後的窗體

6.程序的初始化

在窗體的設計階段雙擊窗體,在窗體的Form_Load()事件和Form_Unload()事件中分別添加下列代碼:

Private Sub Form_Load()

MMControl1.DeviceType = "waveaudio"

'設置播放文件的類型

Label1.Caption = "文件的類型:" & MMControl1.DeviceType

'顯示文件的類型

MMControl1.AutoEnable = False

'設置由程序控製控件的狀態

Play.Enabled = False

Close1.Enabled = False

Pause.Enabled = False

Stop1.Enabled = False

Prev.Enabled = False

'設置控件的初始化狀態

Timer1.Enabled = False

'設置計時器控件的有效狀態

End Sub

程序首先設置多媒體設備類型為WaveAudio,並且通過Label1.Caption = "文件的類型:" & MMControl1.DeviceType語句來顯示文件的類型;然後通過語句MMControl1.AutoEnable = False設置MMControl1控件中的各個按鈕的狀態都由程序來控製。

注意:

* 為了保證合理的利用多媒體資源和程序的正常結束,所以在關閉窗體的同時要關閉打開的多媒體設備。

為了實現上述功能,初始化過程還需要添加如下的程序代碼:

Private Sub Form_Unload(Cancel As Integer)

MMControl1.Command = "close"

'關閉窗體的同時關閉文件

End Sub

7.添加代碼

下麵僅以Open_Click()事件為例來說明添加代碼的過程,其他代碼的詳細添加過程請讀者參見附後的程序源代碼。

在程序的設計階段,雙擊"打開文件"按鈕,在它的Open_Click()事件中添加下列代碼:

Private Sub Open_Click()

CommonDialog1.Action = 1

'顯示一個打開文件的對話框

MMControl1.FileName = CommonDialog1.FileName

'選擇播放文件

If MMControl1.FileName = "" Then

MsgBox "請選擇一個有效的聲音文件"

CommonDialog1.Action = 1

Else

MMControl1.Command = "open"

Timer1.Enabled = True

Close1.Enabled = True

End If

Label2.Caption = "文件的長度:" & MMControl1.Length & "微秒"

'顯示文件的信息

End Sub

在程序的運行過程中單擊"打開文件"按鈕,就會激活Open_Click()事件,程序首先顯示一個打開文件的對話框,提示用戶選擇一個有效的聲音文件,然後把選中的聲音文件路徑和文件名傳遞給MMControl1控件;

注意:

* 打開一個有效的聲音文件後通過Label2.Caption = "文件的長度:" & MMControl1.Length & "微秒"語句來顯示聲音文件的播放長度。

8.運行程序

存儲文件,運行程序,初始畫麵如圖6-24所示。

圖6-24 程序運行的初始畫麵

單擊"打開文件"按鈕,就會彈出如圖6-25所示的打開文件的對話框。

圖6-25 打開文件對話框

在打開文件的對話框中選擇一個有效的聲音文件後,程序就會自動的打開它,並且會讀出文件的各種信息,窗體如圖6-26所示。

圖6-26 程序的運行結果

附程序源代碼:

程序清單

Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"