Pour récupérer les dimensions, il y a une fonction MCI_GetRect.
Ca te retourne une chaine avec la largeur, un espace, et la hauteur.
Il suffit d'utiliser Val(StringField()) pour avoir les valeurs.
Pour la redimensionner, j'ai pas réussi à trouver.
Pour le rafraichissement, si tu utilises la fenêtre créée par défaut à l'ouverture, tu n'as pas besoin de t'en occuper.
Par contre, si tu crée une fenêtre toi même, c'est à toi de le faire dans une callback.
J'ai trouvé un truc pour rafraichir, mais ça n'a pas l'air trop top.
Voilà déjà ce que ça donne.
Code : Tout sélectionner
IncludeFile "MCI_Procs.pb"
;- Window Constants
Enumeration
#Win_Main
EndEnumeration
;- Gadget Constants
Enumeration
#Ecran
#Progress
#Trk_Position
#Btn_Load
#Btn_Eject
#Btn_Pause
#Btn_Stop
#Btn_Play
#Cont_Commands
EndEnumeration
#PBM_SETRANGE32 = #WM_USER + 6
#PBM_GETRANGE = #WM_USER + 7
#PBM_SETBARCOLOR = #WM_USER + 9
S_Width = GetSystemMetrics_(#SM_CXSCREEN)
S_Height = GetSystemMetrics_(#SM_CYSCREEN)
Structure FILM_INFO
Handle.l
Titre.s
Largeur.l
Hauteur.l
EndStructure
Global Info.FILM_INFO
Global hScreen, IsLoaded, S_Width, S_Height, hMain
Procedure Open_Win_Main()
If OpenWindow(#Win_Main, 350, 69, 340, 330, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Cinéma")
hMain = WindowID(#Win_Main)
If CreateGadgetList(WindowID())
hScreen = ContainerGadget(#Ecran, 0, 0, 340, 265)
CloseGadgetList()
ContainerGadget(#Cont_Commands, 0, 265, 340, 65)
ProgressBarGadget(#Progress, 5, 5, 330, 10, 0, 10)
TrackBarGadget(#Trk_Position, 5, 15, 330, 20, 0, 10)
ButtonGadget(#Btn_Load, 5, 40, 45, 20, "Load")
ButtonGadget(#Btn_Eject, 50, 40, 45, 20, "Eject")
ButtonGadget(#Btn_Pause, 235, 40, 45, 20, "Pause")
ButtonGadget(#Btn_Stop, 290, 40, 45, 20, "Stop")
ButtonGadget(#Btn_Play, 190, 40, 45, 20, "Play", #PB_Button_Default)
CloseGadgetList()
EndIf
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure LoadFilm(Movie$, IdFilm)
If MCI_Load(IdFilm, Movie$)
IsLoaded = 1
MCI_Parent(0,hScreen)
MCI_SetTimeMSFormat(IdFilm)
t$ = MCI_GetRect(IdFilm)
Info\Handle = MCI_GetHandle(IdFilm)
Info\Largeur = Val(StringField(t$,1," "))
Info\Hauteur = Val(StringField(t$,2," "))
Info\Titre = Left(GetFilePart(Movie$), Len(GetFilePart(Movie$))-Len(GetExtensionPart(Movie$))-1)
ResizeWindow(Info\Largeur, Info\Hauteur +65)
ResizeGadget(#Ecran, -1,-1,Info\Largeur, Info\Hauteur)
ResizeGadget(#Cont_Commands,-1,Info\Hauteur,WindowWidth(),-1)
ResizeGadget(#Progress,-1,-1,GadgetWidth(#Cont_Commands)-10,-1)
ResizeGadget(#Trk_Position, -1,-1,GadgetWidth(#Cont_Commands)-10,-1)
MoveWindow(S_Width/2 - WindowWidth()/2, S_Height/2 - WindowHeight()/2)
SendMessage_(hProg,#PBM_SETRANGE32,0,MCI_GetLength(IdFilm))
SendMessage_(hSeek, #TBM_SETRANGEMAX,#True,MCI_GetLength(IdFilm))
ProcedureReturn #True
Else
IsLoaded = 0
MessageRequester("Erreur de chargement","Chargement du fichier impossible")
ProcedureReturn #False
EndIf
EndProcedure
Procedure CallBack(Hnd,msg,wParam,lParam)
Resultat = #PB_ProcessPureBasicEvents
Select msg
Case #WM_MOVE
InvalidateRect_(hScreen, 0, #False)
Case #WM_SIZE
InvalidateRect_(hScreen, 0, #False)
ResizeGadget(#Ecran, -1,-1,WindowWidth(), WindowHeight()-65)
ResizeGadget(#Cont_Commands,-1,WindowHeight()-65,WindowWidth(),-1)
ResizeGadget(#Progress,-1,-1,GadgetWidth(#Cont_Commands)-10,-1)
ResizeGadget(#Trk_Position, -1,-1,GadgetWidth(#Cont_Commands)-10,-1)
Rect$ = "0 0 "+Str(GadgetWidth(#Ecran))+" "+Str(GadgetHeight(#Ecran))
Case #WM_PAINT
InvalidateRect_(hScreen, 0, #False)
EndSelect
ProcedureReturn Resultat
EndProcedure
If Open_Win_Main()
SetWindowCallback(@CallBack())
Else
End
EndIf
Repeat
Select WindowEvent()
Case 0
Delay(20)
Case #PB_EventGadget
Select EventGadgetID()
Case #Trk_Position
Case #Btn_Load
Film$ = OpenFileRequester("Ouvrir une vidéo","","Fichiers vidéo|*.wmv;*.avi;*.mpg|Fichiers Audio|*.mp3;*.wav",0)
If Film$
LoadFilm(Film$, 0)
EndIf
Case #Btn_Eject
Case #Btn_Pause
Case #Btn_Stop
Case #Btn_Play
MCI_Play(0)
EndSelect
Case #PB_EventCloseWindow
Quit = #True
EndSelect
Until Quit
End