我正在编写一个VB6程序,需要一些PlaySound函数声明语法的帮助。我已经编写了附加的片段,它成功播放了Tada.wav
,但没有反映所有的标志。
我可以拥有多个dwFlag
,还是仅限于一个?
我希望dwFlags包含SND_ASYNC
,SND_FILENAME
和SND_LOOP
。
这是我到目前为止尝试过的代码:
Dim RetVal As Variant
Private Const SND_ASYNC As Long = &H80
Private Const SND_FILENAME As Long = &H20000
Private Const SND_LOOP As Long = &H8
Private Declare Function PlaySound Lib "winmm.dll" Alias _
"PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, _
ByVal dwFlags As Long) As Long
Private Sub Command3_Click()
RetVal = PlaySound("C:\Program Files\@VickEdu\Vocab!\Tada.wav",_
0&,_
SND_FILENAME Or SND_ASYNC Or SND_LOOP)
End Sub
Private Sub Command4_Click()
RetVal = PlaySound("C:\Program Files\@VickEdu\Vocab!\Tada.wav",_
0&, _
SND_FILENAME & SND_ASYNC & SND_LOOP)
End Sub
答案 0 :(得分:1)
您在Command3
处理程序中完成此操作的方式是正确的(使用Or
)。
您的问题是您为SND_ASYNC
定义了错误的值。变化:
Private Const SND_ASYNC As Long = &H80
为:
Private Const SND_ASYNC As Long = &H1
答案 1 :(得分:0)
非常感谢您的回应慷慨。在阅读您的评论后,我在以下链接http://www.vb6.us/tutorials/playsound-api上遇到了有关我的问题的一些其他信息。
它声明:“与Playsound唯一的”陷阱“是dwFlag的创建。可能会添加太多标志,这将导致溢出错误。”
然后继续讨论可用标志的含义。