Directx9/directdraw

Signaler
Messages postés
43
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
1 septembre 2008
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
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

Messages postés
43
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
1 septembre 2008

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
Messages postés
43
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
1 septembre 2008

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.
Messages postés
43
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
1 septembre 2008

bon voici un lien vers mon code
http://rafb.net/p/h0XUwD85.html
merci d'y preter attention
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
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