Movie

Previous Next

Функции для работы с музыкой и видео

Описание

Примеры для Movie, идущие во вкладках с функциями не используют своего окна, а используют окно рабочего стола. Сделал это только для упрощения примеров. Но для полноты картины, все же решил здесь показать на примере простого плеера, как можно использовать видео в своем созданном окне. Как вы увидите ниже, ничего сложного нет.

Пример

#Include "window9.bi"
Dim Shared As Integer event,mov8,MOV_FLAG
Dim Shared As HWND  hwnd
hwnd=OpenWindow("Video",10,10,350,350) : CenterWindow(hwnd)
ButtonGadget(1,10,280,20,20,"X"):GadgetToolTip(1,"STOP")
ButtonGadget(2,40,280,20,20,"|>"):GadgetToolTip(2,"PLAY")
ButtonGadget(3,70,280,20,20,"||"):GadgetToolTip(3,"PAUSE")
ButtonGadget(6,100,280,20,20,"<<"):GadgetToolTip(6,"Playback speed")
ButtonGadget(7,130,280,20,20,">>"):GadgetToolTip(7,"Increase the playback speed")
ButtonGadget(8,160,280,20,20,"+"):GadgetToolTip(8,"Open File")
ImageGadget(4,6,0,320,240)
TrackBarGadget(5,5,250,320,20,0,10,TBS_NOTICKS  )
Sub resize
  Static As integer Width_,height
  If  Width_<>WindowWidth(hwnd)-30 Or height<>WindowHeight(hwnd)-110 Then
     Width_=WindowWidth(hwnd)-30 : height=WindowHeight(hwnd)-110
     ResizeGadget(4,,,Width_,height)
     If MOV_FLAG=1 Then
        ResizeMovie(mov8,0,0,width_,height-30)
     endif
     Var resH=WindowHeight(hwnd)-70
     ResizeGadget(1,,resH)
     ResizeGadget(2,,resH)
     ResizeGadget(3,,resH)
     ResizeGadget(5,,resH-30,width_)
     ResizeGadget(6,,resH)
     ResizeGadget(7,,resH)
     ResizeGadget(8,,resH)
  EndIf
  If MOV_FLAG=1 Then
     SetTrackBarPos(5,Int(MovieGetCurrentPosition(mov8)/1000000))
  EndIf
End Sub
SetTimer(hwnd,1,10,Cast(TIMERPROC,@resize))
Do
  event=WaitEvent()
  If Event=EventClose Then Exit Do
  If event=EventGadget Then
     Select case EventNumber
        Case 1 : If mov8 Then stopmovie(mov8)
        Case 2 : If mov8 Then Playmovie(mov8):SetRateMovie(mov8,1)
        Case 3 : If mov8 Then Pausemovie(mov8)
        case 5
           If GetAsyncKeyState(1)<0 Then
              if mov8 Then
                 MovieSetPositions(mov8,cast(double,getTrackBarPos(5))*1000000,GetEndPosMovie(mov8) )
              EndIf
           EndIf
        Case 6 : If mov8 Then SetRateMovie(mov8,GetRateMovie(mov8)-0.5)
        Case 7 : If mov8 Then SetRateMovie(mov8,GetRateMovie(mov8)+0.5)
        Case 8
           #ifdef UNICODE
              Var OFR = OpenFileRequester("","C:\","Media files (*.avi, *.mp3, *.wmv, *.wav, *.mp4, *.mp2, *.mp1)|*.avi; *.mp3; *.wmv; *.wav; *.mp4; *.mp2; *.mp1|")          
           #else
              Var OFR = OpenFileRequester("","C:\","Media files (*.avi, *.mp3, *.wmv, *.wav, *.mp4, *.mp2, *.mp1)"+Chr(0)+"*.avi; *.mp3; *.wmv; *.wav; *.mp4; *.mp2; *.mp1"+Chr(0))          
           #EndIf
           If OFR<>"" Then
              If mov8 Then
                 FreeMovie(mov8)
              EndIf
              mov8=loadmovie(GadgetID(4),OFR,0,0,WindowWidth(hwnd)-30,WindowHeight(hwnd)-110)
              SetTrackBarMaxPos(5,Int(GetEndPosMovie(mov8)/1000000 ))
              Playmovie(mov8):SetRateMovie(mov8,1)
              MOV_FLAG=1
           EndIf
     End Select
  EndIf
Loop
if mov8 then FreeMovie(mov8)

Результат

Created with the Personal Edition of HelpNDoc: Easily create CHM Help documents