Directx9/directdraw

Vb6Malade Messages postés 43 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 1 septembre 2008 - 15 août 2007 à 10:53
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 15 août 2007 à 14:32
Salut a toi qui viens partager mes soucis  mais laisse moi te les exposer.
Voila apres quelques lectures a propos de directdraw sur le sdk et sur le Net je me suis essayé au codage d'une animation avec directdraw.
avant la catastrophe que tu vas lire(càd le code) je tiens a te preciser que ce code fonctionne uniquement si je le met en fullscreenexclusive or je souhaite l'afficher dans une form toute conne alors j'ai mi normal mais la ca marche PAS!!
Si tu comprends d'où vient l'erreur,ou que mes commentaires parraissent faux ou bien encore que c'est bourré de trucs inutils fais-le
 moi savoir.
Merci voici le code(ne pas oublier les references directx et directdraw)


ps:j'utilise directx9.c et vb20005
pps:moi j'ai l'erreur a cette ligne:Surface = New Surface(SDescription, Device)







'====================code=====================




Imports Microsoft.DirectX



Imports



Microsoft.DirectX.DirectDraw


Public






Class
Form1


Dim
Device

As
Device


Dim
Surface

As
Surface


Dim
Surface_Temp

As
Surface


Dim
Clip

As
Clipper


Dim
Fin

As



Boolean
=

False 








Private



Sub
Form1_Leave(

ByVal
sender

As



Object
,

ByVal
e

As
System.EventArgs)

Handles



Me
.LeaveFin =


True






End



Sub






Private



Sub
Form1_Load(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles



MyBase
.LoadDevice =


New
Device()Device.SetCooperativeLevel(


Me
, CooperativeLevelFlags.Normal)

'pas en gd ecran

Initialisation()


LaBoucle()







End



Sub 

 








Public



Sub
Initialisation()


Dim
SDescription

As



New
SurfaceDescription

'variable de description des surfaces utilisées

SDescription.SurfaceCaps.PrimarySurface =




True



'on utilise une primarysurf

SDescription.SurfaceCaps.Flip =




True



'moyen de remplissage

SDescription.SurfaceCaps.Complex =




True



'plus d'une surface est crée

SDescription.BackBufferCount = 1




'c'est le nbre de surface 2daires






Dim
caps

As



New
SurfaceCapscaps.PrimarySurface =


True

SDescription.SurfaceCaps = caps


 


 


Clip =




New
Clipper(Device)

'initialise le clipper

Clip.Window =




Me

Surface =




New
Surface(SDescription, Device)

'initialise la surface principale

Surface.Clipper = Clip


 


SDescription.Clear()




'on vide SDescription pour pouvoir initialiser surface_temp sans creer une autre var






Dim
SDescription1 =

New
SurfaceDescriptionSDescription.SurfaceCaps.BackBuffer =


True



'indique que cette surface sera le buffer




Surface_Temp =




New
Surface(SDescription1, Device)Surface_Temp = Surface.GetAttachedSurface(SDescription.SurfaceCaps)


'on relie les 2 surfaces






End



Sub






Public



Sub
LaBoucle()


Do



While



Not
FinAfficher()

Application.DoEvents()


Loop

Fermer()







End



Sub






Public



Sub
Fermer()Surface.Dispose()

Surface_Temp.Dispose()

Device.Dispose()

Clip.Dispose()


End






End



Sub






Public



Sub
Afficher()Surface_Temp.ColorFill(Color.Chartreuse)


'rempli la surface d'une couleur a la con

Surface.Flip(Surface_Temp, FlipFlags.DoNotWait)




'pis on colle la surface temp dans la surface principale






End



Sub






Private



Sub
Form1_MouseClick(

ByVal
sender

As



Object
,

ByVal
e

As
System.Windows.Forms.MouseEventArgs)

Handles



Me
.MouseClickFin =


True






End






End



Sub 









End






Class

4 réponses

Vb6Malade Messages postés 43 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 1 septembre 2008
15 août 2007 à 10:56
bon apparament vbfrance n'a pas aimé mon code il en manque qque bouts le revoici


Imports Microsoft.DirectX



Imports



Microsoft.DirectX.DirectDraw


Public






Class
Form1


Dim
Device

As
Device


Dim
Surface

As
Surface


Dim
Surface_Temp

As
Surface


Dim
Clip

As
Clipper


Dim
Fin

As



Boolean
=

False 








Private



Sub
Form1_Leave(

ByVal
sender

As



Object
,

ByVal
e

As
System.EventArgs)

Handles



Me
.LeaveFin =


True






End



Sub






Private



Sub
Form1_Load(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles



MyBase
.LoadDevice =


New
Device()Device.SetCooperativeLevel(


Me
, CooperativeLevelFlags.Normal)

'pas en gd ecran

Initialisation()


LaBoucle()







End



Sub 

 








Public



Sub
Initialisation()


Dim
SDescription

As



New
SurfaceDescription

'variable de description des surfaces utilisées

SDescription.SurfaceCaps.PrimarySurface =




True



'on utilise une primarysurf

SDescription.SurfaceCaps.Flip =




True



'moyen de remplissage

SDescription.SurfaceCaps.Complex =




True



'plus d'une surface est crée

SDescription.BackBufferCount = 1




'c'est le nbre de surface 2daires






Dim
caps

As



New
SurfaceCapscaps.PrimarySurface =


True

SDescription.SurfaceCaps = caps


 


 


Clip =




New
Clipper(Device)

'initialise le clipper

Clip.Window =




Me

Surface =




New
Surface(SDescription, Device)

'initialise la surface principale

Surface.Clipper = Clip


 


SDescription.Clear()




'on vide SDescription pour pouvoir initialiser surface_temp sans creer une autre var






Dim
SDescription1 =

New
SurfaceDescriptionSDescription.SurfaceCaps.BackBuffer =


True



'indique que cette surface sera le buffer




Surface_Temp =




New
Surface(SDescription1, Device)Surface_Temp = Surface.GetAttachedSurface(SDescription.SurfaceCaps)


'on relie les 2 surfaces






End



Sub






Public



Sub
LaBoucle()


Do



While



Not
FinAfficher()

Application.DoEvents()


Loop

Fermer()







End



Sub






Public



Sub
Fermer()Surface.Dispose()

Surface_Temp.Dispose()

Device.Dispose()

Clip.Dispose()


End






End



Sub






Public



Sub
Afficher()Surface_Temp.ColorFill(Color.Chartreuse)


'rempli la surface d'une couleur marrante

Surface.Flip(Surface_Temp, FlipFlags.DoNotWait)




'pis on colle la surface temp dans la surface principale






End



Sub






Private



Sub
Form1_MouseClick(

ByVal
sender

As



Object
,

ByVal
e

As
System.Windows.Forms.MouseEventArgs)

Handles



Me
.MouseClickFin =


True






End






End



Sub


End



Class
0
Vb6Malade Messages postés 43 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 1 septembre 2008
15 août 2007 à 10:59
si qqun sait comment supprimer et modifier un message qu'il me dise comment et si un modo passe par la je lui serait gré de supprimer ce message et celui d'avant merci.
0
Vb6Malade Messages postés 43 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 1 septembre 2008
15 août 2007 à 11:15
bon voici un lien vers mon code
http://rafb.net/p/h0XUwD85.html
merci d'y preter attention
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 août 2007 à 14:32
Salut

puisque greg ... bref, on va etre oblige de mettre son message d'erreur a sa place...

<Greg> L'exception Microsoft.DirectX.DirectDraw.NoExclusiveModeException n'a pas été gérée
<Greg> error string "DDERR_NOEXCLUSIVEMODE"
<Greg> error code -2005532447

selon ce qu'il a dit sur irc avant de s'enerver...

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
0
Rejoignez-nous