sndPlaySound

来源:百度知道 编辑:UC知道 时间:2024/05/30 11:32:42
PlaySound(_T("BUGU.wav"),SND_ASYNC|SND_NODEFAULT|SND_LOOP);
上面的函数可以播放音乐.
但是下面的函数
PlaySound(_T("BUGU.wav"),0);
却关不了音乐,反而重新把音乐播放,播放时,程序还不好动.
这是为什么?

6月13日 14:46 方法很简单。不过首先要声明函数和基本常数
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_ASYNC = &H1 ' play asynchronously
Private Const SND_FILENAME = &H20000 ' name is a file name
Private Const SND_LOOP = &H8 ' loop the sound until next sndPlaySound

连续播放的语句如下:
PlaySound "The Microsoft Sound.wav", 0, SND_FILENAME Or SND_ASYNC Or SND_LOOP
SND_FILENAME表示第一个参数为文件路径,SND_ASYNC表示异步播放,即马上返回(而不是等播放完毕后才返回),SND_LOOP则表示循环播放。

要停止则用:
PlaySound 0,0,0
因为前面已经定义了播放方式为异步,所以这里只需将所有参数置0即可。

再补充一点:用PlaySound虽然简单,但也有其局限性,如果文件稍大,就不能采用这种方式了。此时需要采用DirectSound,当然其调用方式也复杂一些。

该回答在6月13日 14:51由回答者修改过