如何在VB6中的PlaySound函数语句中声明多个标志?

如何在VB6中的PlaySound函数语句中声明多个标志?,vb6,flags,Vb6,Flags,我正在写一个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_FILE

我正在写一个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

命令3
处理程序中执行此操作的方式是正确的(使用

您的问题是为
SND\u ASYNC
定义了错误的值。更改:

Private Const SND_ASYNC As Long = &H80
致:


非常感谢你的慷慨回应。在阅读了你的评论之后,我在下面的链接中遇到了一些关于我的问题的补充信息

声明说:“Playsound唯一的“抓到”是创建dwFlag。可能会添加太多标志,这将导致溢出错误。”


然后,它继续对可用标志的含义进行了有益的讨论。

您是否无法使用我的答案使其正常工作?我做了一个测试,并且能够成功地组合您正在使用的三个标志(file/loop/asnyc)。
Private Const SND_ASYNC As Long = &H1