這兩天VB著實(shí)把我引進(jìn)去了,千萬(wàn)不要小看這個(gè)東西。雖然現(xiàn)在開(kāi)發(fā)工具層次百出,但是vb也有的的長(zhǎng)處。容易上手。尤其時(shí)鐘這一塊。特有意思。今天給自己做了一個(gè)日程提醒、加載聲音的時(shí)候就遇到問(wèn)題了。用wmp太麻煩。容易出錯(cuò)。使用API呢就特簡(jiǎn)單,而且舒服。
對(duì)于函數(shù) sndPlaySound 的不同應(yīng)用,正確的使用方法如下。
一、聲音文件存儲(chǔ)在資源文件中,程序運(yùn)行時(shí),從資源文件中,把聲音文件讀入變量,再調(diào)用sndPlaySound發(fā)出聲音。不需要把變量保存為臨時(shí)文件。
定義:
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)當(dāng)聲音文件未找到就停止播音返回
' SND_MEMORY(&H4) 播放內(nèi)存中的聲音
' SND_LOOP(=&H8) 聲音播放完畢后 從頭重復(fù)播放 與SND_ASYNC(=&H1)使用
' SND_NOSTOP(=&H10) 如果其他聲音正在播放 則不終止該聲音的播放,而返回False
本文來(lái)自http://hi.baidu.com/liyajx/item/d0190b572720eac09e2667b6
聯(lián)系客服