※ 引述《Dumkas (藍天‧雲‧狂想曲)》之銘言:
先謝過了,關於你精闢的解說,非常感謝。
不過小弟不材,所以仍然有幾個問題要請教,真的是不好意思啊
(你都已經打這麼多了我還是不會,嗚.....)
: sndPlaySound的用法
: 宣告:由於API不屬於VB內建範圍,所以要宣告函數以便使用。
: 下面是用分行符號(_)分成為幾行,其實也可以連成一整行寫。
: Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
: (ByVal lpszSoundName As String, _
: ByVal uFlags As Long) As Long
: 如果你想讓整個程式都能使用這個函數,就把這個宣告放在一般模組裡面,
將宣告放在一般模組裡面,只指將物件選成一般,事件選成宣告嗎?
可是執行時會出現如下的對話方塊:物件模組中的public成員不可以是常數、
固定長度的字串、陣列、使用者自訂型態或declare陳述式
是不是我宣告的地方錯了?
那應該要在哪裡宣告咧?
: 如果只是讓某個表單使用,可以放在表單的一般宣告區裡,
: 但是必須用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: 219.91.11.152