Test
Publié : mar. 30/nov./2004 19:05
Qui peut tester ça sous Windows 98, Me, ou 2000.
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.
C'est un début de programme pour lire les fichiers vidéo, si tout fonctionne correctement, je vais essayer de mettre l'affichage des fonctions en surimression sur l'écran.
Merci pour les reports
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