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