精華區beta Visual_Basic 關於我們 聯絡資訊
※ 引述《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