Je viens de tester en faisant afficher une vidéo dans la fenêtre qui supporte les commandes.
Ca a l'air de plutôt bien fonctionner aussi.
Pour passer en plein ecran, tu cliques sur le bouton, et pour revenir en mode fenêtre, tu appuies sur Espace.
Code : Tout sélectionner
; IncludeFile "VideoLib.pb"
; IncludeFile "Video_Res.pb"
;- Constantes Fenêtres
Enumeration
#Win_Player
EndEnumeration
;- Constantes Gadgets
Enumeration
#Btn_Eject
#Btn_Load
#Btn_Pause
#Btn_Stop
#Txt_Title
#Progress
#Frame0
#Frame1
#Btn_Play
#Btn_FullScreen
#Trk_Seek
#Trk_LeftVolume
#Trk_RightVolume
#Trk_GeneralVolume
EndEnumeration
;- Constantes diverses
#Video = 0
#PBM_SETRANGE32 = #WM_USER + 6
#PBM_GETRANGE = #WM_USER + 7
;- Constantes StatusBar
Enumeration
#Status
EndEnumeration
;- Variables
Global hSeek, hProg, hPlayer, Change
Global Re.RECT
;- Procédures
Procedure Open_Win_Player()
If OpenWindow(#Win_Player, 299, 97, 490, 600, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Multi_Player")
;155
hWinPlayer = WindowID(#Win_Player)
If CreateStatusBar(#Status, WindowID())
AddStatusBarField(150)
AddStatusBarField(150)
StatusBarText(#Status, 0, "Durée : 00:00:00")
StatusBarText(#Status, 1, "Ecoulé : 00:00:00")
EndIf
If CreateGadgetList(WindowID())
ButtonGadget(#Btn_Eject, 305, 105, 50, 20, "Ejecter")
GadgetToolTip(#Btn_Eject, "Supprimer le fichier")
ButtonGadget(#Btn_Load, 355, 105, 50, 20, "Charger")
GadgetToolTip(#Btn_Load, "Charger un fichier unique")
ButtonGadget(#Btn_Pause, 160, 105, 50, 20, "Pause")
GadgetToolTip(#Btn_Pause, "Mettre le fichier en pause")
ButtonGadget(#Btn_Stop, 210, 105, 50, 20, "Stop")
GadgetToolTip(#Btn_Stop, "Arrêter la lecture")
TextGadget(#Txt_Title, 10, 25, 395, 20, "", #PB_Text_Center | #PB_Text_Border)
hProg = ProgressBarGadget(#Progress, 10, 50, 395, 10, 0, 10, #PB_ProgressBar_Smooth)
Frame3DGadget(#Frame0, 5, 5, 405, 60, "Fichier en cours")
Frame3DGadget(#Frame1, 5, 65, 405, 65, "Commandes ")
ButtonGadget(#Btn_Play, 110, 105, 50, 20, "Lecture")
GadgetToolTip(#Btn_Play, "Lire le fichier ouvert")
ButtonGadget(#Btn_FullScreen, 10, 105, 50, 20, "Full")
GadgetToolTip(#Btn_FullScreen, "Lire la vidéo en mode Plein Ecran")
hSeek = TrackBarGadget(#Trk_Seek, 10, 80, 395, 20, 0, 10)
GadgetToolTip(#Trk_Seek, "Déplacer le point de lecture de la vidéo")
hLVol = TrackBarGadget(#Trk_LeftVolume, 415, 5, 20, 125, 0, 1000, #PB_TrackBar_Vertical)
GadgetToolTip(#Trk_LeftVolume, "Modifier le volume gauche")
hRVol = TrackBarGadget(#Trk_RightVolume, 435, 5, 20, 125, 0, 1000, #PB_TrackBar_Vertical)
GadgetToolTip(#Trk_RightVolume, "Modifier le volume droit")
hGVol = TrackBarGadget(#Trk_GeneralVolume, 465, 5, 20, 125, 0, 1000, #PB_TrackBar_Vertical)
GadgetToolTip(#Trk_GeneralVolume, "Modifier le volume général")
EndIf
ProcedureReturn hWinPlayer
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1
StatusBarText(#Status, 1, "Ecoulé : " + GetTime(VideoPosition(#Video)))
SetGadgetState(#Progress, VideoPosition(#Video))
SetGadgetState(#Trk_Seek, VideoPosition(#Video))
SetGadgetState(#Trk_LeftVolume, VideoGetLeftVolume(#Video))
SetGadgetState(#Trk_RightVolume, VideoGetRightVolume(#Video))
SetGadgetState(#Trk_GeneralVolume,VideoGetVolume(#Video))
EndSelect
EndSelect
EndProcedure
Procedure CallBack(Hnd,msg,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
If Hnd = WindowID(#Win_Player)
Select msg
Case #WM_MOVE
InvalidateRect_(Hnd,@Re,#False)
Case #WM_PAINT
InvalidateRect_(Hnd,@Re,#False)
EndSelect
EndIf
ProcedureReturn Resultat
EndProcedure
;- Programme
hPlayer = Open_Win_Player()
If hPlayer = 0 : End : EndIf
SetWindowCallback(@CallBack())
ReportErrors(#True)
Repeat;{
Select WaitWindowEvent()
Case #WM_KEYDOWN
If GetAsyncKeyState_(#VK_SPACE) And Full = 1
RestoreVideo(#Video)
Full = 0
EndIf
Case #PB_EventGadget
Select EventGadgetID()
Case #Btn_Eject
If VideoLoaded
StopVideo(#Video)
FreeVideo(#Video)
SetGadgetState(#Progress, 0)
SetGadgetState(#Trk_Seek, 0)
StatusBarText(#Status, 0, "Durée : 00:00:00")
StatusBarText(#Status, 1, "Ecoulé : 00:00:00")
SetGadgetText(#Txt_Title, "")
KillTimer_(hPlayer, 1)
EndIf
Case #Btn_Load
Film$ = OpenFileRequester("Ouvrir une vidéo","Fichiers vidéo","Fichiers vidéo|*.wmv;*.avi;*.mpg|Tout type|*.*",0)
If Film$
If LoadVideo(#Video, Film$)
SetVideoFormat(#Video, #VIDEO_MSECONDE)
StatusBarText(#Status, 0, "Durée : " + GetTime(VideoLength(#Video)))
SendMessage_(hProg,#PBM_SETRANGE32,0,VideoLength(#Video))
SendMessage_(hSeek,#TBM_SETRANGEMAX,#True,VideoLength(#Video))
SetGadgetText(#Txt_Title, GetTitle(Film$))
SetGadgetState(#Trk_LeftVolume, VideoGetLeftVolume(#Video))
SetGadgetState(#Trk_RightVolume, VideoGetRightVolume(#Video))
SetGadgetState(#Trk_GeneralVolume,VideoGetVolume(#Video))
Debug VideoWidth(#Video)
VideoLoaded = 1
Timer_1 = SetTimer_(hPlayer, 1, 100, @TimerProc())
EndIf
EndIf
Case #Btn_Pause
If VideoLoaded
If VideoStatus(#Video) = #VIDEO_PLAYING
PauseVideo(#Video)
ElseIf VideoStatus(#Video) = #VIDEO_PAUSED
ResumeVideo(#Video)
EndIf
EndIf
Case #Btn_Stop
If VideoLoaded
StopVideo(#Video)
EndIf
Case #Btn_Play
If VideoLoaded
PlayVideo(#Video, hPlayer)
Re\left = 0 : Re\top = 150
Re\right = WindowWidth(): Re\bottom = WindowHeight()-27
ResizeVideo(#Video, 0,150,WindowWidth(), WindowHeight()-173)
SetVideoCaption(#Video, GetTitle(Film$))
EndIf
Case #Btn_FullScreen
;SetTimer_(hPlayer, 2, 10000, @TimerProc())
VideoFullScreen(#Video)
Full = 1
Case #Trk_Seek
PauseVideo(#Video)
VideoSeek(#Video, GetGadgetState(#Trk_Seek))
ResumeVideo(#Video)
Case #Trk_GeneralVolume
VideoSetVolume(#Video, GetGadgetState(#Trk_GeneralVolume))
Case #Trk_LeftVolume
VideoSetLeftVolume(#Video, GetGadgetState(#Trk_LeftVolume))
Case #Trk_RightVolume
VideoSetRightVolume(#Video, GetGadgetState(#Trk_RightVolume))
EndSelect
Case #PB_EventCloseWindow
Quit = #True
EndSelect
Until Quit ;}
End
;