這兩天VB著實把我引進去了,千萬不要小看這個東西。雖然現(xiàn)在開發(fā)工具層次百出,但是vb也有的的長處。容易上手。尤其時鐘這一塊。特有意思。今天給自己做了一個日程提醒、加載聲音的時候就遇到問題了。用wmp太麻煩。容易出錯。使用API呢就特簡單,而且舒服。
對于函數(shù) sndPlaySound 的不同應(yīng)用,正確的使用方法如下。
一、聲音文件存儲在資源文件中,程序運行時,從資源文件中,把聲音文件讀入變量,再調(diào)用sndPlaySound發(fā)出聲音。不需要把變量保存為臨時文件。
定義:
Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
調(diào)用方法:
Dim bArr() As Byte
bArr = LoadResData(101, "CUSTOM")
sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY
二、播放聲音文件
定義:
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
調(diào)用方法:
sndPlaySound "C:\WINDOWS\MEDIA\TADA.WAV", SND_ASYNC
三、使聲音停止
定義:
Private Declare Function sndPlaySoundStop Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As Long, ByVal uFlags As Long) As Long
調(diào)用方法:
sndPlaySoundStop 0, SND_SYNC
常數(shù)定義:
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_MEMORY = &H4
Const SND_LOOP = &H8
' SND_SYNC(=&H0) 同步調(diào)用,聲音播放完畢 程序才能繼續(xù)
' SND_ASYNC(=&H1) 非同步調(diào)用,不必等聲音播放完畢 程序即可繼續(xù)
' SND_NODEFAULT(=&H2)當聲音文件未找到就停止播音返回
' SND_MEMORY(&H4) 播放內(nèi)存中的聲音
' SND_LOOP(=&H8) 聲音播放完畢后 從頭重復(fù)播放 與SND_ASYNC(=&H1)使用
' SND_NOSTOP(=&H10) 如果其他聲音正在播放 則不終止該聲音的播放,而返回False
本文來自http://hi.baidu.com/liyajx/item/d0190b572720eac09e2667b6