Commandes :
PageUp pour monter le son
PageDown pour baisser le son
Right pour la balance à droite
Left pour la balance à gauche
Up pour avancer 250 frames. (Pas terminé, donc pas génial)
Down pour reculer 250 frames. (Pas terminé, donc pas génial)
Espace pour mettre en plein ecran/mettre à la taille du film
Entrée pour mettre en pause/remettre en lecture.
Code : Tout sélectionner
;/ Constantes Fenêtres
Enumeration
#WinMain
EndEnumeration
;/ Initialisations
If ExamineDesktops()
MainDesk = 0
EndIf
If InitMovie() = 0
MessageRequester("Erreur", "Problème d'initialisation de DirectX",#MB_ICONERROR)
EndIf
;/ Variables
Global Volume, Balance, L_Film
Style_1 = #PB_Window_TitleBar|#PB_Window_ScreenCentered
Volume = 50 : Balance = 0
TailleFilm = 1
S_Width = DesktopWidth(MainDesk)
S_Height = DesktopHeight(MainDesk)
Film$ = OpenFileRequester("Choisir votre film", "", "Fichiers vidéo|*.wmv;*.avi;*.mpg;|All Files|*.*", 0)
If Film$
LoadMovie(0,Film$)
H_Film = MovieHeight()
W_Film = MovieWidth()
L_Film = MovieLength()
EndIf
;/ Procédures
Procedure ShowTaskBar(Bar.b) ; 0 cache la barre de taches, 1 la montre
result = ShowWindow_(FindWindow_("Shell_TrayWnd", #Null), Bar)
EndProcedure
Procedure CallBack(Hnd,msg,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
If msg = #WM_MOVE Or msg = #WM_PAINT Or msg = #WM_SIZE
UpdateWindow_(Hnd)
EndIf
ProcedureReturn Resultat
EndProcedure
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Static PosFilm, Pause, FlagSeek
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1 ; timer à 300 ms : Pause et déplacements
If GetAsyncKeyState_(#VK_RETURN) <> 0 ; Pause
If Pause = 1 : Pause = 0 : Else : Pause = 1 : EndIf
If Pause = 1 : PauseMovie() : Else : ResumeMovie() : EndIf
EndIf
If GetAsyncKeyState_(#VK_UP) <> 0 Or GetAsyncKeyState_(#VK_DOWN) <> 0
If MovieStatus() > 0
FlagSeek = 1
EndIf
Else
FlagSeek = 0
EndIf
If FlagSeek = 1 And GetAsyncKeyState_(#VK_UP) <> 0 ; Avant 250 frames
PosFilm = MovieStatus()
If PosFilm < L_Film - 250
MovieSeek(PosFilm + 250)
Else
MovieSeek(L_Film)
EndIf
EndIf
If FlagSeek = 1 And GetAsyncKeyState_(#VK_DOWN) <> 0 ; Arriere 250 frames
PosFilm = MovieStatus()
If PosFilm > 250
MovieSeek(PosFilm - 250)
Else
MovieSeek(0)
EndIf
EndIf
Case 2 ; timer à 50 ms : Contrôle du volume et de la balance
If GetAsyncKeyState_(#VK_PRIOR) <> 0 ; Volume +
Volume +1 : If Volume >100 : Volume = 100 : EndIf
EndIf
If GetAsyncKeyState_(#VK_NEXT)<>0 ; Volume -
Volume -1 : If Volume <0 : Volume = 0 : EndIf
EndIf
If GetAsyncKeyState_(#VK_RIGHT) <> 0 ; Balance --> droite
Balance +1 : If Balance > 100 : Balance = 100 : EndIf
EndIf
If GetAsyncKeyState_(#VK_LEFT) <> 0 ; Balance --> gauche
Balance -1 : If Balance < -100 : Balance = -100 : EndIf
EndIf
EndSelect
EndSelect
EndProcedure
NomFilm$ = Left(GetFilePart(Film$), Len(GetFilePart(Film$))-Len(GetExtensionPart(Film$))-1)
;/ Début du programme
hMain = OpenWindow(#WinMain,0,0,W_Film,H_Film,Style_1,NomFilm$)
SetWindowCallback(@CallBack())
If hMain
SetTimer_(hMain,1,500,@TimerProc())
SetTimer_(hMain,2,50,@TimerProc())
PlayMovie(0,WindowID(#WinMain))
EndIf
OldStyle = GetWindowLong_(hMain,#GWL_STYLE)
If Film$
Repeat
MovieAudio(Volume, Balance)
Select WindowEvent()
Case #WM_KEYDOWN
Select EventwParam()
Case #VK_ESCAPE ; Fermeture
ShowTaskBar(1)
FreeMovie(0)
quit = #True
Case #VK_SPACE ; Taille Vidéo
; TailleFilm = 1 : Fenêtre à la taille de la vidéo
; TailleFilm = 0 : Fenêtre àla taille de l'écran
If TailleFilm = 0 : TailleFilm = 1 : Else : TailleFilm = 0 : EndIf
If TailleFilm = 1 ; Taille de la vidéo
ShowTaskBar(1)
ShowCursor_(#True)
SetWindowLong_(hMain,#GWL_STYLE,OldStyle)
UpdateWindow_(hMain)
MoveWindow(S_Width/2 - W_Film/2, S_Height/2 - H_Film/2)
ResizeWindow(W_Film, H_Film)
ResizeMovie(0,0,W_Film, H_Film)
ElseIf TailleFilm = 0 ; Taille du bureau
ShowTaskBar(0)
ShowCursor_(#False)
SetWindowLong_(hMain,#GWL_STYLE, GetWindowLong_(hMain,#GWL_STYLE)|#PB_Window_BorderLess & ~#WS_CAPTION)
UpdateWindow_(hMain)
MoveWindow(0, 0)
ResizeWindow(S_Width, S_Height)
ResizeMovie(0, 0, S_Width, S_Height)
EndIf
Case #PB_EventCloseWindow
ShowTaskBar(1)
ShowCursor_(#True)
FreeMovie(0)
quit = #True
EndSelect
EndSelect
Until quit
End
EndIf
Merci pour les reports