2015-07-02 2 views
1

Я пишу программу VB6 и нуждаюсь в помощи с синтаксисом объявления функции PlaySound. Я написал прикрепленный фрагмент, и ему удается сыграть Tada.wav, но не отражает все флаги.Как объявить несколько флагов в инструкции функции PlaySound в VB6?

Могу ли я иметь более одного 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 

ответ

1

, как вы сделали это в вашем Command3 обработчик правильно (с использованием Or).

Ваша проблема в том, что вы указали неправильное значение для SND_ASYNC. Изменение:

Private Const SND_ASYNC As Long = &H80 

к:

Private Const SND_ASYNC As Long = &H1 
0

Большое спасибо за вашу щедрость в реагировании. Прочитав ваши замечания, я встретил дополнительную информацию по моему вопросу по следующей ссылке http://www.vb6.us/tutorials/playsound-api.

В заявлении говорится: «Единственное« gotcha »с Playsound - это создание dwFlag. Можно добавить слишком много флагов, что приведет к ошибке переполнения».

Затем он продолжил обсуждение полезной информации о доступных флажках.

+0

Вы не смогли заставить его работать, используя мой ответ? Я сделал тест и смог успешно объединить три используемых вами флага (файл/loop/asnyc). – Bond