Code : Tout sélectionner
If InitMovie() = 0
MessageRequester("Error", "Impossible d'initialiser DirectX", 0)
End
EndIf
MovieName$ = OpenFileRequester("Ouvrez une video", "", "Video (avi; mpg; mpeg; asf; wmv)|*.avi;*.mpg;*.asf;*.mp3;*.wav;*.wmv|All Files|*.*", 0)
If MovieName$
If LoadMovie(0, MovieName$)
If MovieWidth()<520
ResizeMovie(0,0,MovieWidth()*2,MovieHeight()*2)
MW=MovieWidth()*2
MH=MovieHeight()*2
Else
MW=MovieWidth()
MH=MovieHeight()
EndIf
longvid=MovieLength()
hWnd= OpenWindow(0, 100, 150, MW, MH+ 60, #PB_Window_BorderLess|#PB_Window_ScreenCentered, "PureBasic - Movie")
SetWindowPos_(WindowID(0), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
px=WindowX()
py=WindowY()
PlayMovie(0, WindowID())
CreateGadgetList(WindowID())
TextGadget(10,10,MH+10,140,40,"Chargement en cours")
ButtonGadget(11,160,MH+10,60,20,"Pause")
ButtonGadget(15,160,MH+35,60,20,"Lire")
ProgressBarGadget(14,230,MH+10,200,10,1,500,#PB_ProgressBar_Smooth)
TrackBarGadget(12,230,MH+35,200,20,1,500)
ButtonGadget(13,450,MH+10,60,20,"Image+1")
ButtonGadget(16,450,MH+35,60,20,"Image-1")
ButtonGadget(19,520,MH+10,60,20,"Image+50")
ButtonGadget(20,520,MH+35,60,20,"Image-50")
ButtonGadget(17,590,MH+10,60,20,"Quitter")
ButtonGadget(18,590,MH+35,60,20,"Sauver")
MovieAudio(100,0)
MoveWindow(px-1,py-1)
MoveWindow(px,py)
DisableGadget(18,1)
SetTimer_(WindowID(),0,50,0) ; Défini un temps d'attente
Repeat
Select WaitWindowEvent()
Case #WM_LBUTTONDOWN
SendMessage_(hWnd, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
Case #WM_RBUTTONDOWN
te= MessageRequester("Quitter ?","Voulez-vous quitter le programme?",#PB_MessageRequester_YesNo)
If te=6
Quit=1
EndIf
Case #PB_EventGadget
Select EventGadgetID()
Case 11 ; PAUSE
If a=0
PauseMovie()
DisableGadget(12,1)
SetGadgetText(11,"Continuer")
DisableGadget(18,0)
a=1
Else
ResumeMovie()
DisableGadget(12,0)
SetGadgetText(11,"Pause")
DisableGadget(18,1)
a=0
EndIf
Case 12 ; TRACKBAR
MovieSeek(GetGadgetState(12)*longvid/500)
SetGadgetState(10,"Trame actuelle : "+Str(GetGadgetState(12)*longvid/500))
Case 13 ; IMAGE+1
ResumeMovie()
MovieSeek(po+1)
SetGadgetText(10,"Trame actuelle : "+Str(po+1))
PauseMovie()
DisableGadget(12,1)
po=po+1
a=1
SetGadgetState(12,po*500/longvid)
SetGadgetState(14,po*500/longvid)
SetGadgetText(11,"Continuer")
DisableGadget(18,0)
Case 16 ; IMAGE-1
ResumeMovie()
MovieSeek(po-1)
SetGadgetText(10,"Trame actuelle : "+Str(po-1))
PauseMovie()
DisableGadget(12,1)
po=po-1
a=1
SetGadgetState(12,po)
SetGadgetState(14,po)
SetGadgetText(11,"Continuer")
DisableGadget(18,0)
Case 19 ; IMAGE+50
ResumeMovie()
MovieSeek(po+50)
SetGadgetText(10,"Trame actuelle : "+Str(po+50))
PauseMovie()
DisableGadget(12,1)
po=po+50
a=1
SetGadgetState(12,po*500/longvid)
SetGadgetState(14,po*500/longvid)
SetGadgetText(11,"Continuer")
DisableGadget(18,0)
Case 20 ; IMAGE-50
ResumeMovie()
MovieSeek(po-50)
SetGadgetText(10,"Trame actuelle : "+Str(po-50))
PauseMovie()
DisableGadget(12,1)
po=po-50
a=1
SetGadgetState(12,po)
SetGadgetState(14,po)
SetGadgetText(11,"Continuer")
DisableGadget(18,0)
Case 15 ; LIRE OU STOPPER
If b<>0
StopMovie()
DisableGadget(11,1)
DisableGadget(12,1)
Else
PlayMovie(0, WindowID())
DisableGadget(11,0)
DisableGadget(12,0)
b=MovieStatus()
EndIf
Case 17 ; QUITTER
Quit=1
Case 18 ; SAUVER IMAGE
posvid=GetGadgetState(14)*longvid/500
file$=SaveFileRequester("Sauver image",GetPathPart(MovieName$),"BMP|*.bmp",0)
If file$
If GetExtensionPart(file$)<>"bmp"
file$=file$+".bmp"
EndIf
CreateImage(293,mw,mh)
For a=1 To mh
For b=1 To mw
StartDrawing(WindowOutput())
coul=Point(b,a)
StopDrawing()
UseImage(293)
StartDrawing(ImageOutput())
Plot(b,a,coul)
StopDrawing()
Next
SetGadgetState(14,a*500/mh)
Next
SaveImage(293,file$)
SetGadgetState(14,posvid)
EndIf
EndSelect
Case #WM_TIMER ; STATUS DE LA VIDEO
If b>0
po=b
SetGadgetText(10,"Trame actuelle : "+Str(b))
SetGadgetState(14,b*500/longvid)
SetGadgetText(15,"Stop")
DisableGadget(11,0)
DisableGadget(13,0)
DisableGadget(16,0)
DisableGadget(19,0)
DisableGadget(20,0)
If Abs(b-r)>5
r=b+5
SetGadgetState(12,b*500/longvid)
EndIf
ElseIf b=<0
SetGadgetText(15,"Lire")
;DisableGadget(11,1)
;DisableGadget(13,1)
;DisableGadget(16,1)
EndIf
b=MovieStatus()
EndSelect
Until Quit=1
Else
MessageRequester("Erreur", "Impossible de lire la vidéo", 0)
EndIf
EndIf