这两天VB着实把我引进去了,千万不要小看这个东西。虽然现在开发工具层次百出,但是vb也有的的长处。容易上手。尤其时钟这一块。特有意思。今天给自己做了一个日程提醒、加载声音的时候就遇到问题了。用wmp太麻烦。容易出错。使用API呢就特简单,而且舒服。
对于函数 sndPlaySound 的不同应用,正确的使用方法如下。
一、声音文件存储在资源文件中,程序运行时,从资源文件中,把声音文件读入变量,再调用sndPlaySound发出声音。不需要把变量保存为临时文件。
定义:
Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
调用方法:
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
调用方法:
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
调用方法:
sndPlaySoundStop 0, SND_SYNC
常数定义:
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Const SND_MEMORY = &H4
Const SND_LOOP = &H8
' SND_SYNC(=&H0) 同步调用,声音播放完毕 程序才能继续
' SND_ASYNC(=&H1) 非同步调用,不必等声音播放完毕 程序即可继续
' SND_NODEFAULT(=&H2)当声音文件未找到就停止播音返回
' SND_MEMORY(&H4) 播放内存中的声音
' SND_LOOP(=&H8) 声音播放完毕后 从头重复播放 与SND_ASYNC(=&H1)使用
' SND_NOSTOP(=&H10) 如果其他声音正在播放 则不终止该声音的播放,而返回False
本文来自http://hi.baidu.com/liyajx/item/d0190b572720eac09e2667b6
联系客服