-在某些情況下,例如程序員正在編寫一個游戲,或是將要進行一項非常冗長無聊的過程,可以通過播放音樂來增加游戲的聲光效果或是減少漫長的等待所帶來的困倦。本文介紹如何在MicrosoftVisualBasic中對聲音文件進行播放。
播放聲音文件
----在MicrosoftVisualBasic中進行多媒體音樂的播放是一件非常輕松的事情。在MicrosoftWindows系統中支持的聲音文件有WAV文件和MIDI文件,通常使用Windows應用程序編程接口(API)函數mciExecute函數可以對MIDI文件進行播放。而使用API函數sndPlaySound則可以對WAV播放文件進行播放,當然,你也可以使用mciExecute函數來播放WAV文件。
----為了播放WAV文件,你需要在你的程序窗體的通用聲明部分中,或是標准模塊中添加如下的聲明語句:
----PrivateDeclareFunctionsndPlaySoundLib"winmm.dll"Alias"sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)As
Long
----以及如下的標識常量:
----PublicConstSND_SYNC=&H0
----PublicConstSND_ASYNC=&H1
----PublicConstSND_NODEFAULT=&H2
----PublicConstSND_MEMORY=&H4
----PublicConstSND_ALIAS=&H10000
----PublicConstSND_FILENAME=&H20000
----PublicConstSND_RESOURCE=&H40004
----PublicConstSND_ALIAS_ID=&H110000
----PublicConstSND_ALIAS_START=0
----PublicConstSND_LOOP=&H8
----PublicConstSND_NOSTOP=&H10
----PublicConstSND_VALID=&H1F
----PublicConstSND_NOWAIT=&H2000
----PublicConstSND_VALIDFLAGS=&H17201F
----PublicConstSND_RESERVED=&HFF000000
----PublicConstSND_TYPE_MASK=&H170007
----sndPlaySound函數需要兩個參數,第一個參數soundfilename是要播放的WAV文件的名稱。第二個參數是一個表明播放方式的標識常量,其定義的值如上所示,通常所使用的標識意義如下:
----SND_SYNC播放WAV文件,播放完畢後將控制轉移回你的應用程序中。
----SND_ASYNC播放WAV文件,然後將控制立即轉移回你的應用程序中,而不管對WAV文件的播放是否結束。
----SND_NODEFAULT不要播放缺省的WAV文件,以免發生某些意外的錯誤。
----SND_MEMORY播放以前已經加載到內存中的WAV文件。
----SND_LOOP循環播放WAV文件。
----SND_NOSTOP在開始播放其它的WAV文件之前,需要完成對本WAV文件的播放。
----注意:SND_LOOP標識通常需要同SND_ASYNC共同使用,也即在兩個標識之間添加與播放符,以免在對WAV文件進行播放的時候將系統掛起。
----為了播放MIDI文件,你需要在你的程序窗體的通用聲明部分中,或是標准模塊中添加如下的聲明語句:
----PrivateDeclareFunctionmciExecuteLib"winmm.dll"Alias"mciExecute"(ByVallpstrCommandAsString)AsLong
----mciExecute函數只需要一個參數,CommandString,顧名思義,它是一個命令字符串,用於表明對聲音文件播放的命令,例如,希望完整播放聲音文件,則該字符串就是字符串損lay"加上聲音文件的路徑以及文件名稱,如下所示**
----DimReturnValueAsLong
----ReturnSoundValue=mciExecute("playC:WIN95MEDIACANYON.MID")
----如果希望對聲音文件的部分進行播放,可以使用from...to...語句格式,例如若要播放CANYON.MID文件的10毫秒到100毫秒的部分,可以使用如下的語句:
----DimReturnValueAsLong
----ReturnSoundValue=mciExecute("playC:WIN95MEDIACANYON.MIDfrom10to100")
----mciExecute函數也可以用來對WAV文件進行播放,方法同播放MIDI一樣。
樣例程序
----1.在VisualBasic中開始一個新的項目,采用缺省的方法建立Form1。
----2.將如下的聲明語句添加到Form1的通常聲明部分中(注意每個聲明語句需要被書寫在一行內):
----PrivateDeclareFunctionsndPlaySoundLib"winmm.dll"Alias"
sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)As
Long
----ConstSND_SYNC=&H0
----ConstSND_ASYNC=&H1
----ConstSND_NODEFAULT=&H2
----ConstSND_MEMORY=&H4
----ConstSND_ALIAS=&H10000
----ConstSND_FILENAME=&H20000
----ConstSND_RESOURCE=&H40004
----ConstSND_ALIAS_ID=&H110000
----ConstSND_ALIAS_START=0
----ConstSND_LOOP=&H8
----ConstSND_NOSTOP=&H10
----ConstSND_VALID=&H1F
----ConstSND_NOWAIT=&H2000
----ConstSND_VALIDFLAGS=&H17201F
----ConstSND_RESERVED=&HFF000000
----ConstSND_TYPE_MASK=&H170007
----PrivateDeclareFunctionmciExecuteLib"winmm.dll"Alias"mciExecute"(ByVallpstrCommandAsString)AsLong
----3.在Form1上添加一個文本框控件,采用缺省的方法建立Text1。將它的Caption屬性設置為NULL。
----4.在Form1上添加一個命令按鈕控件,采用缺省的方法建立Command1。將它的Caption屬性設置為"使用sndPlaySound函數敗*
----5.在Form1上添加一個命令按鈕控件,采用缺省的方法建立Command2。將它的Caption屬性設置為"使用mciExecute函數敗*
----6.將如下的代碼添加到Command1的單擊事件中:
PrivateSubCommand1_Click()
DimReturnValueAsLong
Text1.Text="使用sndPlaySound函數播放TADA.WAV文件。"
ReturnValue=sndPlaySound("C:WIN95MEDIATADA.WAV",SND_SYNC)
EndSub
----7.將如下的代碼添加到Command2的單擊事件中:
PrivateSubCommand2_Click()
DimReturnValueAsLong
Text1.Text="使用mciExecute函數播放Canyon.mid文件。"
ReturnSoundValue=mciExecute
("playC:WIN95MEDIACANYON.MIDfrom10to100")
EndSub
----通過按下F5鍵來執行樣例程序。單擊"使用sndPlaySound函數"命令按鈕則使用sndPlaySound函數來播放C:WIN95MEDIA目錄下面的TADA.WAV聲音文件。單擊"使用mciExecute函數"則使用mciExecute函數來播放C:WIN95MEDIA目錄下面的CANYON.MID文件的10毫秒到100毫秒的部分。->