ElwoOOod
Messages postés3Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention25 août 2009
-
27 oct. 2008 à 12:44
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024
-
27 oct. 2008 à 14:38
Bjr,
J'ai un probleme recurent.
J'ai codé pas mal de petit jeu et j'utilise midas pour la musique de fond et playsound pour les effets audio.
Cela fonctionne tres bien, sauf que j'ai des plantage aleatoire lors de la lecture d'un son. Quand cela plante, le son n'est pas joué et le programme cesse purement et simplement. Si je suis sous vb, c'est carrement tout vb qui quitte.
A noter que le bug se produit avec ou sans musique midas en fond.
Le code du son classique:
'Partie dans le module public
'Declare dor PlayWave
Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (lpData As Any, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Const SND_SYNC = &H0 'Attend la fin du son pour continuer
Const SND_ASYNC = &H1 'Continue l'execution du code pendant la lecture du son
Const SND_NODEFAULT = &H2
Const SND_LOOP = &H8
Const SND_NOSTOP = &H10
Const SND_MEMORY = &H4 ' lpszSoundName points to a memory file.
(je joue les sons en ressource)
Public Sub PlayResWave(ByVal SndID As Long, ByRef wFlag As Byte)
Static BySnd() As Byte, z As Long
If SoundON Then
BySnd = LoadResData(SndID, "WAVE")
If wFlag = 0 Then
PlaySound BySnd(0), 0, SND_MEMORY Or SND_ASYNC Or SND_NODEFAULT
Else
PlaySound BySnd(0), 0, SND_MEMORY Or SND_SYNC Or SND_NODEFAULT
End If
End If
End Sub
Mes sons sont appelé le plus simplement par un
PlayResWave 101, False
(101 etant le numero de la ressource et false pour le sync ou async)
ElwoOOod
Messages postés3Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention25 août 2009 27 oct. 2008 à 14:21
(desole, opera me fait souvent le coup, je refais mon post avec firefox)
Bjr, J'ai un probleme recurent.
J'ai codé pas mal de petit jeu et
j'utilise midas pour la musique de fond et playsound pour les effets
audio.
Cela fonctionne tres bien, sauf que j'ai des plantage aleatoire
lors de la lecture d'un son. Quand cela plante, le son n'est pas joué
et le programme cesse purement et simplement. Si je suis sous vb, c'est
carrement tout vb qui quitte.
A noter que le bug se produit avec ou
sans musique midas en fond.
Le code du son classique:
'Partie dans le
module public
'Declare dor PlayWave Declare Function PlaySound Lib
"winmm.dll" Alias "PlaySoundA" (lpData As Any, ByVal hModule As Long,
ByVal dwFlags As Long) As Long
Const SND_SYNC = &H0 'Attend la fin
du son pour continuer
Const SND_ASYNC = &H1 'Continue l'execution
du code pendant la lecture du son
Const SND_NODEFAULT = &H2
Const
SND_LOOP = &H8
Const SND_NOSTOP = &H10
Const SND_MEMORY =
&H4 ' lpszSoundName points to a memory file.
(je joue les sons en
ressource)
Public Sub PlayResWave(ByVal SndID As Long, ByRef wFlag As
Byte)
Static BySnd() As Byte, z As Long
If SoundON Then 'test si les sons sont activés
BySnd =
LoadResData(SndID, "WAVE")
If wFlag = 0 Then
PlaySound BySnd(0), 0,
SND_MEMORY Or SND_ASYNC Or SND_NODEFAULT
Else
PlaySound BySnd(0), 0,
SND_MEMORY Or SND_SYNC Or SND_NODEFAULT
End If
End If
End Sub
Mes sons
sont appelé le plus simplement par un
PlayResWave 101, False
(101 etant
le numero de la ressource et false pour le sync ou async)
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 27 oct. 2008 à 14:38
Bonjour,
Cela arrive parfois avec VB6, la cause courante, c'est un Handle pas ou mal libéré.
Je ne connais pas Midas (le garage ?), mais un peu DirectX.
Je ne pourrais donc te dire pourquoi ça se met en grève.
Il doit surement y avoir un forum concernant le système de restitution sonore des fichiers audio que tu utilises.