VB-sfaturi 145-154

Sfaturi pentru cei care programează pe Visual Basic (87b)

Andrei Kolesov, Olga Pavlova

Sfat 87b. Cum de a juca fișier WAV

„Am fost mult timp de lucru în VB și nu poate ști - cum să lucreze cu fișiere de sunet * .WAV cu excepția au fost folosite SOUND RECORDER Daca ai putea alege -.. HELP“

„Eu pun această întrebare. Ca și în VB 4.0 prin apăsarea butonului mouse-ului opredelsnny reda un fișier WAV.“

Raspuns Alekseya Fedorova:

Deci, prin apăsarea butonului mouse-ului pentru a reda fișier WAV pentru a juca WAV fișier ar trebui să utilizeze funcția standard pentru Windows API sndPlaySound, care este în WINMM.DLL sistem DLL-bibliotecă. Această funcție are doi parametri: primul specifică numele de fișier WAV, al doilea este un steag, care determină tipul funcției efectuate:

Declare privată Funcția sndPlaySound _
Lib "winmm.dll" Alias ​​"sndPlaySoundA" _
(ByVal lpszName Ca String, ByVal dwFlags Atâta timp) _
Atâta timp
'
„Descrierea valorilor parametrilor dwFlags:

Const SND_SYNC = fișier H0nbspnbspnbspnbspnbspnbsp“este redat în mod sincron
nbspnbspnbspnbspnbspnbsp „, iar funcția nu se întoarce până la sfârșitul jocului

Const SND_ASYNC = H1nbspnbsp „Fișierul este redat asincronă
nbspnbspnbspnbspnbspnbsp „și funcția returnează imediat după
nbspnbspnbspnbspnbspnbsp „redare de pornire. Pentru a
nbspnbspnbspnbspnbspnbsp „întrerupe redarea, apel
Funcția sndPlaySound nbspnbspnbspnbspnbspnbsp“cu numele fișierului la«»

Const SND_NODEFAULT = H2 „Specifică faptul că în cazul în care fișierul
nbspnbspnbspnbspnbspnbsp „specificat de primul parametru nu este găsit, nu ar trebui
nbspnbspnbspnbspnbspnbsp „reda fișierul implicit

Const SND_MEMORY = H4 „indică faptul că numele fișierului
nbspnbspnbspnbspnbspnbsp „corespunde fișier WAV în memorie,
nbspnbspnbspnbspnbspnbsp „de exemplu, încărcat dintr-o resursă

Const SND_LOOP = H8nbspnbsp „Fișierul este redat de la început până la
Sfârșitul nbspnbspnbspnbspnbspnbsp“al unui număr infinit de ori, atâta timp cât nu
nbspnbspnbspnbspnbspnbsp „a cauzat funcția sndPlaySound cu un nume de fișier pentru a«».
nbspnbspnbspnbspnbspnbsp „Atunci când o astfel de reproducere să fie specificate și pavilion
nbspnbspnbspnbspnbspnbsp „SND_ASYNC

Const SND_NOSTOP = Funcția H10nbspnbsp“returnează FALSE, dacă
nbspnbspnbspnbspnbspnbsp „în momentul apelului joacă deja orice fișier

„În consecință, recursul real,
„Pentru funcția sndPlaySound ar putea arata asa

nbspResult = sndPlaySound ( "c: \ wav \ demo.wav", SDN_ASYNC)

Acum, o altă întrebare - cum se face fișierul se joacă atunci când faceți clic pe mouse-ul pe formular? Pentru a face acest lucru, puneți trimiterea la sndPlaySound în proces bazat pe evenimente:

Sub Form_MouseDown (buton ca Integer, _
nbspnbspnbspShift Ca Integer, X Ca Single, Y Ca Single)
'
nbspnbspResult = sndPlaySound ( "c: \ wav \ demo.wav", SDN_ASYNC)
end Sub

În acest caz, fișierul va fi redat atunci când apăsați butonul mouse-ului pe orice parte a zonei client a ferestrei. Pentru a împărți acest domeniu în sub-zone, fiecare dintre care joacă un fișier WAV, trebuie să verificați coordonatele în care a fost apăsat butonul mouse-ului. Acestea sunt transmise ca parametrii MouseDown handler. În cazul în care coordonatele de verificare nu este necesar, puteți utiliza o tratare a evenimentului click.

Un ultim lucru, în cazul în care zona de pe ecran sunt suficient de mari, puteți folosi butoanele pentru a le face invizibile. În handler, apăsați fiecare buton de pe un control adecvat prin intermediul funcției sndPlaySound va produce WAV fișierul dorit.