MrDogbert
Messages postés133Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention20 juillet 2004
-
9 mars 2004 à 20:37
MrDogbert
Messages postés133Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention20 juillet 2004
-
9 mars 2004 à 22:43
j ai un petit soucis:
pour faire un moteur directDraw, je veux utiliser un thread qui boucle pour afficher sans cesse a l ecran le backbuffer(pour ceux qui connaissent)
Le thread est declaré avec en param l adresse de cette fonction :
Private Sub doFrame()
'Boucle principale pour l affichage
Do
'traiter les demandes de modification
If refaireBB = True Then traiter()
'renvoyer le tout a l ecran
afficher()
Application.DoEvents() 'relacher un peu la pression
Loop While sortir = False
sortir = False
End Sub
Le probleme c est que dès la premiere iteration j ai le msg d erreur suivant :
-------------------------------------------
Une exception non gérée du type 'System.InvalidCastException' s'est produite dans testDirectX.exe
Informations supplémentaires : Échec de QueryInterface pour l'interface DxVBLib.DirectDrawSurface7.
-------------------------------------------
Le code fonctionne parfaitement lorsque je n utilise pas de thread mais cela ne m arrange pas de laisser le trhread principal de l appli se charger de ca.
Les objets cités dans le code ont bien le bon type, normalement il y a tout ce qu il faut. alors? avez vous une solution docteur?
merci d avance a celui ou ceux qui pourront m aider
MrDogbert
Messages postés133Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention20 juillet 20041 9 mars 2004 à 20:54
Petite rectification, le code que j ai donné appel en fait ce code ci :
Private Sub redrawBackground()
If sortir = False Then
backBuffer.Blt(backBufferRect, _
background, _
backgroundRect, DDBLT_WAIT)
End If
End Sub
et c'est lui qui plante.
Precision, c est le premier code parcouru à traiter avec directX, si je le desactive, le suivant plantera avec le meme msg d erreur.