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

时间:2015-07-02 22:07:46

标签: vb6 flags

我正在编写一个VB6程序,需要一些PlaySound函数声明语法的帮助。我已经编写了附加的片段,它成功播放了Tada.wav,但没有反映所有的标志。

我可以拥有多个dwFlag,还是仅限于一个?

我希望dwFlags包含SND_ASYNCSND_FILENAMESND_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

2 个答案:

答案 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的创建。可能会添加太多标志,这将导致溢出错误。”

然后继续讨论可用标志的含义。