作者Dumkas (藍天‧雲‧狂想曲)
看板Visual_Basic
標題Re: [問題] 要如何插入音樂?
時間Mon Jun 2 00:27:55 2003
sndPlaySound的用法
宣告:由於API不屬於VB內建範圍,所以要宣告函數以便使用。
下面是用分行符號(_)分成為幾行,其實也可以連成一整行寫。
Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
如果你想讓整個程式都能使用這個函數,就把這個宣告放在一般模組裡面,
如果只是讓某個表單使用,可以放在表單的一般宣告區裡,
但是必須用Private取代Public宣告。
這樣在VB中就會有個函數叫做
sndPlaySound,是來自winmm.dll,也就是存放
Windows多媒體功能API的函式庫。
兩個引數:
lpszSoundName傳入WAV檔的完整路徑字串,如"C:\Sample\Test.wav",不過為了
彈性起見,音效檔通常放在和程式同目錄或其子目錄下,而代入資料就可以寫
App.Path & "\Test.wav"之類的。(App.Path可以表示程式目前的目錄)
如果代入
vbNullString,會切斷目前撥放音效的動作。
uFlags傳入撥放模式。這些本來是常數,不過好像常數還得另外引用,
所以我直接寫數值(long數值)。
&H0(=0):同步撥放(放完音效才繼續執行程式)
&H1(=1):非同步撥放(不會因為撥放程式而停下程式執行,最適合放音效)
&H8:重複撥放,必須和非同步撥放一起使用(用&符號連接)
&H10:如果有其他音效正在撥放,則取消這次的撥放要求,傳回False
sndPlaySound還可以撥放系統內建的音效(就是佈景主題設定的音效),
只要把檔名換成特定的常數就可以,不過這我還沒找到資料。
注意API函數都會有傳回值,通常用來表示執行成功與否,像
這個是long,傳回非0表示成功,傳回0(=False)表示失敗,不過
VB6可以忽略傳回值而直接呼叫函數,又這函數成功率幾乎100%,
所以也不用在意會不會失敗,除非電腦沒裝音效卡之類的。
這樣在VB中呼叫就是:
sndPlaySound 路徑字串, 模式
或
Call sndPlaySound(路徑字串, 模式)
如果找不到指定的音效(若是打錯字),其實也不會發生什麼嚴重的錯誤,
但是會沒有半點聲音。
(有的API操作不慎不只當掉程式,甚至會當機)
***
恩,字數蠻多,不過我覺得這可以算是API最入門的了,
其實我也是邊看書邊動手做的啦,你自己實際做做,
應該就會懂了吧!
--
┌╤═╮╤╮ ╤╭╤═╮╤ ╭═╭╤═╮╭══╮ 杜
║║ ║║║ ║║║ ║╟═╯ ╟╧═╢╰╤═╮ 姆
└╧═╯╰╧═╯╧╰ ╧╧ ╰═╧ ╧─╧═╯ 卡
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 61.216.80.244