begin process at 2010 02 10 05:29:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Multimédia

 > 

DirectX

 > 

Mode Fenêtré


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mode Fenêtré

lundi 10 juillet 2006 à 21:15:39 | Mode Fenêtré

Kamary

Hello ! Depuis quelques temps je me suis planché sur l'utilisation de la DirectX7 dans le bon vieux Vb6.
Et dans mes recherches, j'ai découvert quelques tutorials un peu partout dans le net, et tous ont à peu près cette forme :

'Déclarations
Public DirectX As New DirectX7
Public DD As DirectDraw7
Public Primary As DirectDrawSurface7
Public BackBuffer As DirectDrawSurface7

Sub Form_Load()
  'Creation de l'objet DirectDraw
  Set DD = DirectDrawCreate("") 
  'Ici on configure la coopération du programme avec les autres applications en cours
  DD.SetCooperativeLevel Form1.hWnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE Or DDSCL_ALLOWREBOOT
  'On change le mode vidéo (longueur, largeur, profondeur de couleurs, rafraichissement en Hz, DDSDM_DEFAULT)
  DD.SetDisplayMode 640, 480, 16, 0, DDSDM_DEFAULT
 
  'Crée la surface primaire (voir flipping)
  Dim ddsd As DDSURFACEDESC2
  ddsd.lFlags = DDSD_BACKBUFFERCOUNT Or DDSD_CAPS
  ddsd.lBackBufferCount = 1
  ddsd.ddscaps.lCaps = DDSCAPS_COMPLEX Or DDSCAPS_FLIP Or DDSCAPS_PRIMARYSURFACE Or DDSCAPS_VIDEOMEMORY

  Set Primary = DD.CreateSurface(ddsd)

  'Obtient le Backbuffer
  Dim ddscaps As DDSCAPS2
  ddscaps.lCaps = DDSCAPS_BACKBUFFER Or DDSCAPS_VIDEOMEMORY
  Set Backbuffer = Primary.GetAttachedSurface(ddscaps)
 
  ' Efface le BackBuffer (au départ, il y a toujours des saletés dans la surface...)
  Dim rec As RECT
   rec.Bottom = 480
   rec.Left = 0
   rec.Right = 640
   rec.Top = 0
  Backbuffer.BltColorFill rec, 0
  Backbuffer.SetFontTransparency True
 
' Boucle principale
Do
  'Efface le Backbuffer
  Backbuffer.BltColorFill rec, 0
 
  'Ecrit l'heure et le titre dans le Backbuffer
  Backbuffer.SetForeColor RGB(256, 0, 0)
  Backbuffer.DrawText 300, 250, Time$, False
  Backbuffer.SetForeColor RGB(0, 256, 0)
  Backbuffer.DrawText 40, 450, "DirectDraw Sample 1 - Affichage de l'heure dans une surface ", False
  DoEvents
  ' Si l'utilisateur tape sur une touche, alors quitte (voir Form_Keypress plus loin)
  If ok% = -1 Then GoTo suib
  '"Flippe" vers la surface primaire
  Primary.Flip Nothing, DDFLIP_WAIT

Loop
suib:
' Surtout à la fin du programme, il faut "relâcher" les objets.
Set Primary = Nothing
Set Backbuffer = Nothing
Set DD = Nothing
Set DirectX = Nothing

End Sub

Et dans l'evénement KeyPress :

Private Sub Form_KeyPress(KeyAscii As Integer)
  If KeyAscii = 27 Then ok%=-1
End Sub


Et voici ma Question ; Ce code présenté précédement affiche EN PLEIN ECRAN l'heure, mais moi je voudrai savoir comment faire la même chose en mode FENÊTRE. J'ai bien essayer de modifier certains paramètres du code mais des erreurs surviennent à chaque fois.
Je remerci à l'avance tout ceux qui voudront bien partager leur savoir avec moi.

DnaStee
lundi 10 juillet 2006 à 21:37:46 | Re : Mode Fenêtré

casy

Membre Club
Je ne connais absolument rien à DirectDraw mais je pense que ton problème viens de cette ligne :
DD.SetCooperativeLevel Form1.hWnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE Or DDSCL_ALLOWREBOOT

Apparement tu définierais ta form en mode plein écran (à priori y compris sans bordure), en mode exclusif (je penserais à un mode Modal au niveau du système)

Par contre je ne saurais te dire quoi mettre à la place, il va falloir que tu cherche, dans le msdn peut-etre ou directement sur le site de microsoft.


Sevyc64  (alias Casy)

# LE PARTAGE EST NOTRE FORCE #
mardi 11 juillet 2006 à 08:55:39 | Re : Mode Fenêtré

Kamary

Merci du conseil.
Ouais! C'est là qu'est le problème car j'ai changé

DD.SetCooperativeLevel Form1.hWnd,
DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE Or DDSCL_ALLOWREBOOT

par :

DD.SetCooperativeLevel Form1.hWnd,
DDSCL_NORMAL


car c'est l'expression le "flag" approprié pour le mode fenêtré mais ensuite une erreur survient dans les lignes qui le précèdent, notemment :

Set Primary = DD.CreateSurface(ddsd)

Peut être que je dois changé encore d'autre paramètres



Cette discussion est classée dans : set, rec, backbuffer, ddscaps, ddsd


Répondre à ce message

Sujets en rapport avec ce message

DirectDraw sous Vb [ par Mike ] À l'ouverture de mon programme je charge en mémoire TOUT mes sprites pour ensuite placersur ma surface 2d (directdraw) mes éléments.Mais dans mon prog code menu fait avec direct draw [ par DarklordBioopo ] bonjour,je viens de realiser mon premier code en direct draw,et j'aimerais que qqun le regarde et me dise coment l'ameliorer.Public bRunning As Boolea un seul enregistrement de la base dans le DBGrid [ par nikita342004 ] Bonjour, J'ai un problème lors d'une requete qui retourne 3 enregistrement. J'aimerais qu'elle ne retourne les enregistrements où deux champs sont di DirectDraw et la transparence [ par yatoocar ] Bonjour a tous,Je souhaite effectuer avec directX et VB6 l'affichage de 2 images en les superposant dans une pictureBox.Mes 2 images font 465 pixels d Ouvrir base de données access avec vba [ par StephMaster72 ] Bonjour, j'ai un soucis avec mon programme vba, j'ai ouvert une base de données access et j'ai une erreur que j'arrive pas à comprnedre. Je vois aucun Requete avec ODBC [ par gar6more ] SalutJ'ai une application qui accede a une base Access. Je souhaite maintenant me connecter à une base MySQL via ODBC. Mais j'arrive pas à faire les m PRobleme Directx7 et directDraw [ par izords ] Salut j'aimerais savoir pkoi lorsque je dessine une line a l'aide du backbuffer dans un boucle il m'affiche seuelement la derniere ligne comme s'il ne DirectDraw [ par fragmatyc ] Bon je veux faire bouger un bonhomme avec directdraw:sa marche povoici mon code trouver lerreur:Module:Public DX As New DirectX7Public DD As DirectD DirectDraw7 mode fenêtre [ par jeffise57 ] Bonjour je debute en directdraw est je voudrait créer une source simple avec comme but le mode fenêtre et non en mode plein écran. Mon premier test es problème de verrou [ par kamisatom ] salut à tous,voila un problème que je traine depuis une semaine et que je n'arrive pas à régler.Je me connecte à ma base de donnée , pas de problème,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales