眾所周知,VisualBasic是功能非常強大的多媒體開發工具,它有豐富的函數和方法處理各種各樣的多媒體信息,能夠很靈活的操作圖形、聲音、動畫、影象等多媒體素材。但有時我們使用VisualBasic開發非多媒體應用程序,並不需要在應用程序中大量的使用聲音,而只是需要在特定的場合出現。如Windows的警告聲。這就要求程序員在恰當的環境中恰當的使用聲音文件,既不失去VB在多媒體方面的特長,又能夠為應用程序增加吸引人的效果。VB可以用於輸出聲音的方法很多,歸結一下,大概有以下四種:
1.利用Beep語句
這是VB系統提供的一條利用計算機揚聲器發聲的語句,它只能夠發出簡單的蜂鳴聲,但在應用程序中大量用於輸出警告的信息。如下例允許用戶在文本框中輸入數字,當用戶輸入錯誤時,系統會報警提示。
SubText1_KeyPress(keyasciiAsInteger)
Ifkeyascii<48Orkeyascii>57Then
Beep:Beep:Beep
keyascii=0
EndIf
EndSub
2.其實計算機的蜂鳴器也可以發出不同頻率、音高的聲音,從而奏出美妙的音樂。方法是調用Windows的一些有關發聲的API函數。Windows系統包含十六個聲音函數,它們都存放在Windows的SOUND.DRV這個驅動程序所包含的動態連接庫中。其中最常用的四個函數是OpenSound,CloseSound,SetVoiceNote,StartSound。其聲明格式如下:
DeclareFunctionOpenSoundLib"Sound"()AsInteger
DeclareSubCloseSoundLib"Sound"()
DeclareFunctionSetVoiceNoteLib"Sound"(ByValnVoiceAs
Integer,ByValnValueAsInteger,ByValnLengthAsInteger,ByValnCdots
AsInteger)AsInteger
DeclareFunctionStartSoundLib"Sound"()AsInteger
在VisualBasic的通用過程中聲明上述函數後,就可以象使用VisualBasic自己的函數一樣使用Windows的API函數。下面給出一個例子,只需要在窗體中放置7個按鈕組成的控件數組,調用上述函數就可以簡單的實現准確的音階:
SubCommand1_Click(indexAsInteger)
a=OpenSound()
SelectCaseindex
Case0:f=37
Case1:f=39
Case2:f=41
Case3:f=42
Case4:f=44
Case5:f=46
Case6:f=48
EndSelect
m1=SetVoiceNote(1,f,4,0)
m2=StartSound()
EndSub
3.VisualBasic是第一個支持對象連接與嵌入(OLE)的開發工具,利用OLE可以簡單的在應用程序中插入聲音文件。這也是使用VisualBasic開發多媒體軟件常用的方法。使用過VB的讀者都知道,VB的ToolBox中就有OLE2.0控件。當我們雙擊OLE2.0控件時,會彈出“InsertObject”窗口,在窗口中選擇對象類型ObjectType為聲音文件,選擇“CreatefromFile”,指定硬盤上聲音文件的位置,同時確認Link方式。這些步驟其實是在設置OLE2.0的屬性。通過按F4打開Properties屬性窗口,設置其中的Class、SourceDoc、SourceItem等屬性也可完成這一工作。按F5運行程序,雙擊OLE對象時就會發聲。與播放各種聲音文件相關的屬性為Action,通過設置Action屬性可以打開、驅動、刪除相應的聲音對象。如下例在窗體裝入時調用聲音文件:
SubForm_Load()
ole1.Class="soundrec"
ole1.SourceDoc="c:windowsding.wav"
ole1.Action=1
ole1.Action=7
EndSub
4.利用VisualBasic的多媒體控件MCI.VBX。
使用MCI.VBX是VisualBasic開發多媒體軟件的主要方法。利用MCI.VBX在應用程序中加入聲音文件是輕而易舉的事。有大量的專著介紹MCI.VBX的使用方法,這裡就不在贅述。
總的說來,以上四種方法的復雜程度依次遞增,對系統的要求和消耗的系統資源也越來越大。因而,作為一個VB程序員,在應用程序中,應該能夠熟練而准確的使用上述四種方法並在恰當的場合選擇某一種方法,就可以為自己的程序增添效果同時並不使軟件顯得華而不實。->