最近在砌一个程序,用sndPlaySound函数播放资源文件里面的wav文件时不发声~
哪位高手帮看看~~~代码:
/////////////////////////////////////////////////////////
sub play()
Dim bArr() As Byte
bArr = LoadResData("D", "WAVE")
sndPlaySound bArr, SND_ASYNC
end sub
/////////////////////////////////////////////////////////
现象:
没有任何出错提示,扬声器放不出声音,
只从主板上发出"D"的一声,并不是指定sndPlaySound函数播放的资源声音
函数返回值正常,同一函数同一wav,路径调用wav正常,就加到资源里不行一些可能出错的方面:
疑点1.函数返回值 :1   msgbos显示返回值是1。某书上说不等于0代表成功播放,可是就是没有正常的声音出来,就主板D的一声,以下是测试代码
/////////////////////////////////////////////////////////
    dim s as string
    s = sndPlaySound ( bArr, SND_ASYNC )
    msgbox (s)
/////////////////////////////////////////////////////////疑点2.sndPlaySound函数问题
只要不是资源文件里面的wav就能正常播放,比如说硬盘上的wav文件
可是只要是资源文件.res(由.rc或者vc可视化加载)里面的wav就是放不了
/////////////////////////////////////////////////////////
    sndPlaySound "D:\Desktop\Desktop\音标\wav\d.wav", SND_ASYNC
/////////////////////////////////////////////////////////疑点3.函数声明
应该不会有问题了,因为上面的函数工作很正常
以下是.bas模块代码
/////////////////////////////////////////////////////////
Option Explicit
Public Const SND_ASYNC = &H1&
Public Const SND_LOOP = &H8&
Public Const SND_MEMORY = &H4&
Public Const SND_NODEFAULT = &H2&
Public Const SND_NOSTOP = &H10&
Public Const SND_SYNC = &H0&
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
/////////////////////////////////////////////////////////疑点4.资源文件wav文件超过100K
上面的D:\Desktop\Desktop\音标\wav\d.wav也只有9K,用路径一切正常,加到资源里面调用就不行了,在资源里面,200K与9K现象一样:主板D一声,测返回值:1(非0正常)真是郁闷极了!!
我想把wav加到工程的资源文件里面,不想用路径调用,因为这样要把wav放到程序目录底下,太多了,不美观啊。
还有什么方法可以实现啊。。各位前辈门请赐教啊