PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Видео и Аудио Плеер


Видео и Аудио Плеер

Сообщений 1 страница 21 из 21

1

Начал писать свой видео и аудио плеер, верней для начала аудио :) Уже столкнулся с проблемой постановки иконок в ToolBar. Не могу понять как их туда загрузить в виде картинок. И что, там уже предусмотрены стандартные иконки, так как внизу в коде??

Код:
If CreateToolBar(1, WindowID(1) )
   ; Добавляем две кнопки, дублирующие пункты "Открыть" и "Сохранить" меню
   ToolBarStandardButton(0,#PB_ToolBarIcon_Open)
   ToolBarSeparator()
   ToolBarStandardButton(2,#Здесь нужна моя иконка)
   ; Добавляем всплывающие подсказки к кнопкам
   ToolBarToolTip(1, 0, "Открыть") 
  EndIf

как ее прописать, если она будет находиться с папкой проекта???

Отредактировано daiomik (01.02.2010 07:37:25)

0

2

Вот пример

Код:
CatchImage(0,?Icon1) ; Загрузка иконок из памяти
CatchImage(1,?Icon2)

If OpenWindow(0, 0, 0, 150, 50, "ToolBar", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateToolBar(0, WindowID(0))
      ToolBarImageButton(0, ImageID(0))
      ToolBarImageButton(1, ImageID(1))
    EndIf
    
    Repeat
      Event = WaitWindowEvent()
      If Event = #PB_Event_Menu
        Debug "ToolBar ID: "+Str(EventMenu())
      EndIf
    Until Event = #PB_Event_CloseWindow 
  EndIf

DataSection ; Загрузка файлов в исполняемый файл на этапе компиляции
  Icon1:
    IncludeBinary "1.ico"
  Icon2:
    IncludeBinary "2.ico"
EndDataSection

Иконки на этапе компиляции помещаются внутрь исполняемого файла и уже нет необходимости в том, чтобы они находись рядом с программой.

Вот все требуемые файлы http://depositfiles.com/files/6yulw6oas

0

3

Не могу понять в чем дело. На своем примере сделал как ты показал, а иконки не высвечиваются, точнее не отображаются. Проект

Код:
  CatchImage(0,?Icon1) ; Загрузка иконок из памяти
  CatchImage(1,?Icon2)
  CatchImage(2,?Icon3)
  CatchImage(3,?Icon4)
  CatchImage(4,?Icon5)
  CatchImage(5,?Icon6)
  
  
  ; Создаём окно.
  OpenWindow(1,150,200,400,300,"Заголовок окна",#PB_Window_MinimizeGadget)
  If CreateMenu(0, WindowID(1)) 
      MenuTitle("Файл")
        MenuItem(1, "Открыть"+Chr(9)+"Ctrl+O")
        MenuBar()
        MenuItem(2,"Выход")
      MenuTitle("Проигрование")
        MenuItem(3,"Плей")
        MenuItem(4,"Пауза")
        MenuItem(5,"Стоп") 
        MenuBar() 
        MenuItem(6,"Следующая") 
        MenuItem(7,"Предыдущая") 
      MenuTitle("Настройки") 
        MenuItem(8,"Язык")
      MenuTitle("Помощь") 
        MenuItem(8,"О программе")
  EndIf
  
  If CreateToolBar(1, WindowID(1) )
   ; Добавляем две кнопки, дублирующие пункты "Открыть" и "Сохранить" меню
   ToolBarStandardButton(1, ImageID(0))
   ToolBarSeparator()
   ToolBarStandardButton(7, ImageID(1))
   ToolBarStandardButton(3, ImageID(2))
   ToolBarStandardButton(4, ImageID(3))
   ToolBarStandardButton(5, ImageID(4))
   ToolBarStandardButton(6, ImageID(5))
   
   
   ; Добавляем всплывающие подсказки к кнопкам
   ToolBarToolTip(1, 0, "Открыть") 
  EndIf
 

  
  
  Repeat ; Начало главного цикла.
  Event=WaitWindowEvent() ; Узнаём текущее событие в программе
  Menu=EventMenu()  ; Получаем идентификатор активного пункта меню
  
    If Event=#PB_Event_Menu ; Условие будет выполнено, если произойдёт событие в меню
     Select Menu ; Запоминаем идентификатор меню для последующего сравнения в операторах Case
      Case 2 ;Произошло событие в пункте и идентификатором 2
       End ; Завершение программы
     EndSelect ; Этот оператор зератором Select
    EndIf 
  
  
  Until Event = #PB_Event_CloseWindow ; Прерываем цикл если в переменной "Event" будет число равное числу в константе.
  End ; Директива, завершающая программу.
  
  DataSection ; Загрузка файлов в исполняемый файл на этапе компиляции
  Icon1:
    IncludeBinary "my_documents.ico"
  Icon2:
    IncludeBinary "rewind.ico"
  Icon3:
    IncludeBinary "play.ico"
  Icon4:
    IncludeBinary "pause.ico"  
  Icon5:
    IncludeBinary "stop.ico"  
  Icon6:
    IncludeBinary "forward.ico"    
 
  EndDataSection

0

4

Ты хоть бы иконки прикрепил :tomato:

0

5

haav написал(а):

Ты хоть бы иконки прикрепил

daiomik написал(а):

а иконки не высвечиваются, точнее не отображаются. Проект

0

6

У Петра ToolBarImageButton (твои загруженные иконки)

У тебя ToolBarStandardButton (стандартные иконки винды для которых есть различные константы   #PB_ToolBarIcon_New   #PB_ToolBarIcon_Open  #PB_ToolBarIcon_Save)

0

7

Эээх, невнимательный я. Спасибо, получилось

0

8

Такой вопрос. Как разместить точно ТрэкБар на панеле. Ну или как правильно будет. Я пока к вышенаписанному коду добавил

Код:
TrackBarGadget(0, 10,  40, 250, 20, 0, 10000)

Но он у меня не в определенном месте оказался

0

9

Там иконки много весили, да и в одном файле были и 16х16 и 32х32. В итоге, прога использовала 32х32 что негативно отражалось на их качестве.
Подредактировал их http://depositfiles.com/files/8qge10taq

0

10

daiomik написал(а):

Но он у меня не в определенном месте оказался

В окне отображается.
А где его место по твоему мнению.

PS.
Вот когда-то пробовал сделать видео плеер, но забросил из-за недостатка свободного времени. http://depositfiles.com/files/v7t469snr

А вообще в КодАрхиве есть несколько примеров плееров

0

11

Спасибо, буду пока разбираться

0

12

Хм..не пойму. Для того что бы Открыть аудиофайл, запустить,нажать паузу, стоп нужно процедуры объявлять?? Смотрю примера, на которые ты мне ссылку дал, вот один из них:

Код:
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=2786&highlight=
; Author: GPI (updated for PB4.00 by blbltheworm)
; Date: 09. November 2003
; OS: Windows
; Demo: No

;Info: MCI-MP3-Commands 
Enumeration 0 
  #MP3_Unknown 
  #MP3_Stopped 
  #MP3_Playing 
  #MP3_Paused 
EndEnumeration 
Procedure MP3_GetStatus(Nb) 
  Result=#MP3_Unknown 
  a$=Space(#MAX_PATH) 
  i=mciSendString_("status MP3_"+Str(Nb)+" mode",@a$,#MAX_PATH,0) 
  If i=0 
    Debug a$ 
    Select a$ 
      Case "stopped":Result=#MP3_Stopped 
      Case "playing":Result=#MP3_Playing 
      Case "paused":Result=#MP3_Paused 
    EndSelect 
  EndIf 
  ProcedureReturn Result 
EndProcedure 
Procedure MP3_Load(Nb,file.s) 
  ;i=mciSendString_("open Sequencer!"+Chr(34)+file+Chr(34)+" alias mid"+Str(Nb),0,0,0) 
  i=mciSendString_("OPEN "+Chr(34)+file+Chr(34)+" Type MPEGVIDEO ALIAS MP3_"+Str(Nb),0,0,0) 
  If i=0 
    ProcedureReturn #True 
  Else 
    ProcedureReturn #False 
  EndIf 
EndProcedure 
Procedure MP3_Play(Nb) 
  i=mciSendString_("play MP3_"+Str(Nb),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_PlayStart(Nb) 
  i=mciSendString_("play MP3_"+Str(Nb)+" from "+Str(0),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_PlayPart(Nb,Start,endPos) 
  i=mciSendString_("play MP3_"+Str(Nb)+" from "+Str(Start)+" to "+Str(endPos),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_Pause(Nb) 
  i=mciSendString_("pause MP3_"+Str(Nb),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_Resume(Nb) 
  i=mciSendString_("resume MP3_"+Str(Nb),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_Stop(Nb) 
  i=mciSendString_("stop MP3_"+Str(Nb),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_Free(Nb) 
  i=mciSendString_("close MP3_"+Str(Nb),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_SetVolume(Nb,volume) 
  i=mciSendString_("SetAudio MP3_"+Str(Nb)+" volume to "+Str(volume),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_GetVolume(Nb) 
  a$=Space(#MAX_PATH) 
  i=mciSendString_("status MP3_"+Str(Nb)+" volume",@a$,#MAX_PATH,0) 
  ProcedureReturn Val(a$) 
EndProcedure 


Procedure MP3_SetSpeed(Nb,Tempo) 
  i=mciSendString_("set MP3_"+Str(Nb)+" Speed "+Str(Tempo),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure MP3_GetSpeed(Nb) 
  a$=Space(#MAX_PATH) 
  i=mciSendString_("status MP3_"+Str(Nb)+" Speed",@a$,#MAX_PATH,0) 
  ProcedureReturn Val(a$) 
EndProcedure 
Procedure MP3_GetLength(Nb) 
  a$=Space(#MAX_PATH) 
  i=mciSendString_("status MP3_"+Str(Nb)+" length",@a$,#MAX_PATH,0) 
  ProcedureReturn Val(a$) 
EndProcedure 
Procedure MP3_GetPosition(Nb) 
  a$=Space(#MAX_PATH) 
  i=mciSendString_("status MP3_"+Str(Nb)+" position",@a$,#MAX_PATH,0) 
  ProcedureReturn Val(a$) 
EndProcedure 
Procedure MP3_Seek(Nb,pos) 
  i=mciSendString_("Seek MP3_"+Str(Nb)+" to "+Str(pos),0,0,0) 
  ProcedureReturn i 
EndProcedure 
Procedure.s MP3_TimeString(Time) 
  Time/1000 
  sek=Time%60:Time/60 
  min=Time%60:Time/60 
  ProcedureReturn RSet(Str(Time),2,"0")+":"+RSet(Str(min),2,"0")+":"+RSet(Str(sek),2,"0") 
EndProcedure 
;Example 

Не соображу че к чему и как открыть файл. Где найти гаджит музыки? или такого нет\

Enumeration 1 
  #gadget_File 
  #Gadget_VolumeTxt 
  #Gadget_Volume 
  #Gadget_SpeedTxt 
  #Gadget_Speed 
  #Gadget_PositionTxt 
  #Gadget_Position 
  #Gadget_Load 
  #Gadget_Play 
  #Gadget_Stop 
  #Gadget_Pause 
  #Gadget_Resume 
EndEnumeration 

Procedure SetVol(x) 
  SetGadgetText(#Gadget_VolumeTxt,"Volume:"+Str(x)) 
  SetGadgetState(#Gadget_Volume,x) 
EndProcedure 
Procedure SetSpeed(x) 
  SetGadgetText(#Gadget_SpeedTxt,"Speed:"+Str(x)) 
  SetGadgetState(#Gadget_Speed,x) 
EndProcedure 
Procedure SetPosition(x,max) 
  SetGadgetText(#Gadget_PositionTxt,"Position:"+MP3_TimeString(x)+" : "+MP3_TimeString(max)) 
  If max>0 
    SetGadgetState(#Gadget_Position,x*1000/max) 
  Else 
    SetGadgetState(#Gadget_Position,0) 
  EndIf 
EndProcedure 

If OpenWindow(0, 100, 200, 310,310, "Simple MP3-Player", #PB_Window_SystemMenu |#PB_Window_ScreenCentered) 
  If CreateGadgetList(WindowID(0)) 
    top=5 
    TextGadget    (#gadget_File       ,5,top,300,20,"File:"):top+25 
    TextGadget    (#Gadget_VolumeTxt,  5,top,300,20,"Volume"):top+20 
    TrackBarGadget(#Gadget_Volume     ,5,top,300,25,0,100):top+30 
    TextGadget    (#Gadget_SpeedTxt   ,5,top,300,20,"Speed"):top+20 
    TrackBarGadget(#Gadget_Speed      ,5,top,300,25,0,200):top+30 
    TextGadget    (#Gadget_PositionTxt,5,top,300,20,"Position"):top+20 
    TrackBarGadget(#Gadget_Position   ,5,top,300,25,0,1000):top+30 
    ButtonGadget  (#Gadget_Load       ,5,top,300,20,"Load"):top+25 
    ButtonGadget  (#Gadget_Play       ,5,top,300,20,"Play"):top+25 
    ButtonGadget  (#Gadget_Pause      ,5,top,300,20,"Pause"):top+25 
    ButtonGadget  (#Gadget_Resume     ,5,top,300,20,"Resume"):top+25 
    ButtonGadget  (#Gadget_Stop       ,5,top,300,20,"Stop"):top+25 
    loaded=#False 
    Quit=#False 
    
    Repeat 
      EventID.l = WindowEvent() 

      Select EventID 
        Case 0 
          If loaded And max>0 
            x=MP3_GetPosition(1) 
            If GetGadgetState(#Gadget_Position)<>x*1000/max 
              SetPosition(x,max) 
            EndIf 
          EndIf 
          Delay(100) 
        Case #PB_Event_CloseWindow ; If the user has pressed on the close button 
          Quit=#True 
        Case #PB_Event_Gadget 
          Select EventGadget() 
            Case #Gadget_Load 
              File$=OpenFileRequester("","","Media (Wave,MP3,OGG)|*.wav;*.ogg;*.mp3|Wave|*.wav|mp3|*.mp3|OGG|*.OGG|ALL|*.*",0) 
              If File$<>"" 
                If loaded 
                  MP3_Free(1) 
                  loaded=#False 
                EndIf 
                If MP3_Load(1,File$) 
                  max=MP3_GetLength(1) 
                  SetVol(MP3_GetVolume(1)/10) 
                  SetSpeed(MP3_GetSpeed(1)/10) 
                  SetPosition(0,max) 
                  loaded=#True 
                  SetGadgetText(#gadget_File,"File:"+File$) 
                Else 
                  SetGadgetText(#gadget_File,"File") 
                EndIf 
              EndIf 
            Case #Gadget_Resume 
              If loaded 
                MP3_Resume(1) 
              EndIf 
            Case #Gadget_Pause 
              If loaded 
                MP3_Pause(1) 
              EndIf 
            Case #Gadget_Play 
              If loaded 
                MP3_Play(1) 
              EndIf 
            Case #Gadget_Stop 
              If loaded 
                MP3_Stop(1) 
              EndIf 
            Case #Gadget_Position 
              If loaded And max>0 
                x=GetGadgetState(#Gadget_Position)*max/1000 
                SetPosition(x,max) 
                MP3_Seek(1,x) 
                MP3_Resume(1) 
              EndIf 
            Case #Gadget_Volume 
              If loaded 
                x=GetGadgetState(#Gadget_Volume) 
                SetVol(x) 
                MP3_SetVolume(1,x*10) 
              EndIf 
            Case #Gadget_Speed 
              If loaded 
                x=GetGadgetState(#Gadget_Speed) 
                SetSpeed(x) 
                MP3_SetSpeed(1,x*10) 
              EndIf 
          EndSelect 
      EndSelect 
      
    Until Quit 
    If loaded 
      MP3_Stop(1) 
      MP3_Free(1) 
    EndIf 
  EndIf 
EndIf 

End

так и не разобрался как открыть аудиофайл.И где найди аудио гаджет

Отредактировано daiomik (01.02.2010 16:31:42)

0

13

daiomik написал(а):

Для того что бы Открыть аудиофайл, запустить,нажать паузу, стоп нужно процедуры объявлять??

Нет, это сделано лишь для удобочитаемости кода. Ну чтобы можно было бы быстрее найти требуемый участок.
Например, за открытие файла отвечает процедура MP3_Load, а за воспроизведение MP3_Play.

daiomik написал(а):

так и не разобрался как открыть аудиофайл

За это отвечает такая строка из процедуры MP3_Load

Код:
i=mciSendString_("OPEN "+Chr(34)+file+Chr(34)+" Type MPEGVIDEO ALIAS MP3_"+Str(Nb),0,0,0)
daiomik написал(а):

И где найди аудио гаджет

А его просто нет.
Воспроизведение музыки реализовано с помощью API функции mciSendString, которой передаются требуемые данные и дальше уже музыка воспроизводится средствами операционной системы.

0

14

По теме плееров можно найти несколько примеров здесь
Там есть примеры, воспрозведения музыки как с диска, так и потокового аудио и видео с интернета

0

15

Вот простейшй плеер.

Код:
If InitMovie() = 0
  MessageRequester("Error", "Can't initialize movie playback !", 0) 
  End
EndIf

MovieName$ = OpenFileRequester("Choose the movie to play", "", "Movie/Audio files|*.avi;*.mpg;*.asf;*.mp3;*.wav;*.mid|All Files|*.*", 0)
If MovieName$
  If LoadMovie(0, MovieName$)
  
    OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "PureBasic - Movie")
    PlayMovie(0, WindowID(0))
      
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  Else
    MessageRequester("Error", "Не удалось загрузить аудио или видео", 0)
  EndIf
EndI

Поддерживаются форматы avi, mpg, asf, mp3, wav, midi.

0

16

Возникла проблема с отображением загруженного видео в плеере. Если просто отображать на форме то получается, а в нижеописанном примере я создал изображение и туда загружаю видео и пишет ошибка. Да и вообще как лучше отображать видео и что бы при этом при расширении окна, изменение размеров пропорции сохранялись. Вот проект Вот код:   

Код:
  CatchImage(0,?Icon1) ; Загрузка иконок из памяти
  CatchImage(1,?Icon2)
  CatchImage(2,?Icon3)
  CatchImage(3,?Icon4)
  CatchImage(4,?Icon5)
  CatchImage(5,?Icon6)
  CatchImage(6,?Icon7)
  
  
  ; Создаём окно.
  OpenWindow(1,150,200,600,500,"Заголовок окна",#PB_Window_MinimizeGadget)
  If CreateMenu(0, WindowID(1)) 
      MenuTitle("Файл")
        MenuItem(1, "Открыть"+Chr(9)+"Ctrl+O")
        MenuBar()
        MenuItem(2,"Выход")
      MenuTitle("Проигрование")
        MenuItem(3,"Плей")
        MenuItem(4,"Пауза")
        MenuItem(5,"Стоп") 
        MenuBar() 
        MenuItem(6,"Следующая") 
        MenuItem(7,"Предыдущая") 
      MenuTitle("Настройки") 
        MenuItem(8,"Язык")
      MenuTitle("Помощь") 
        MenuItem(8,"О программе")
  EndIf
  
  If CreateToolBar(1, WindowID(1) )
   ToolBarImageButton(1, ImageID(0))
   ToolBarSeparator()
   ToolBarImageButton(7, ImageID(1))
   ToolBarImageButton(3, ImageID(2))
   ToolBarImageButton(4, ImageID(3))
   ToolBarImageButton(5, ImageID(4))
   ToolBarImageButton(6, ImageID(5))
   ToolBarSeparator()
   ToolBarImageButton(8, ImageID(6))
   
   ; Добавляем всплывающие подсказки к кнопкам
   ToolBarToolTip(1, 1, "Открыть") 
   ToolBarToolTip(1, 7, "Предыдущая") 
   ToolBarToolTip(1, 3, "Плей") 
   ToolBarToolTip(1, 4, "Пауза") 
   ToolBarToolTip(1, 5, "Стоп") 
   ToolBarToolTip(1, 6, "Следующая") 
  EndIf
  
  ImageGadget(2,5,25,590,450,0,#PB_Image_Border)
  
  
 

  If InitMovie() = 0
    MessageRequester("Error", "Can't initialize movie playback !", 0) 
    End
  EndIf
  
  Repeat ; Начало главного цикла.
  Event=WaitWindowEvent() ; Узнаём текущее событие в программе
  Menu=EventMenu()  ; Получаем идентификатор активного пункта меню
  
    If Event=#PB_Event_Menu ; Условие будет выполнено, если произойдёт событие в меню
     Select Menu ; Запоминаем идентификатор меню для последующего сравнения в операторах Case
      Case 1
       MovieName$ = OpenFileRequester("Choose the movie to play", "", "Movie/Audio files|*.swf;*.avi;*.mpg;*.asf;*.mp3;*.wav;*.mid|All Files|*.*", 0)
        If MovieName$
         If LoadMovie(0, MovieName$)
            PlayMovie(0, WindowID(2))
         Else
            MessageRequester("Error", "Не удалось загрузить аудио или видео", 0)
         EndIf
        EndIf
      Case 2 ;Произошло событие в пункте и идентификатором 2
       End ; Завершение программы
     EndSelect ; Этот оператор зератором Select
    EndIf 
  
  
  Until Event = #PB_Event_CloseWindow ; Прерываем цикл если в переменной "Event" будет число равное числу в константе.
  End ; Директива, завершающая программу.
  
  DataSection ; Загрузка файлов в исполняемый файл на этапе компиляции
  Icon1:
    IncludeBinary "my_documents.ico"
  Icon2:
    IncludeBinary "rewind.ico"
  Icon3:
    IncludeBinary "play.ico"
  Icon4:
    IncludeBinary "pause.ico"  
  Icon5:
    IncludeBinary "stop.ico"  
  Icon6:
    IncludeBinary "forward.ico" 
  Icon7:
    IncludeBinary "010194.ico"    
 
  EndDataSection

Отредактировано daiomik (02.02.2010 16:48:23)

0

17

daiomik написал(а):

пишет ошибка

Это потому, окна с идентификатором 2 в программе нет, а ведь в строке PlayMovie(0, WindowID(2)) производится попытка получить его идентификатор.
Скорее всего, ты хотел получить идентификатор ImageGadget.

Код:
  CatchImage(0,?Icon1) ; Загрузка иконок из памяти
  CatchImage(1,?Icon2)
  CatchImage(2,?Icon3)
  CatchImage(3,?Icon4)
  CatchImage(4,?Icon5)
  CatchImage(5,?Icon6)
  CatchImage(6,?Icon7)
  
  
  ; Создаём окно.
  OpenWindow(1,150,200,600,500,"Заголовок окна",#PB_Window_MinimizeGadget|#PB_Window_SizeGadget)
  SmartWindowRefresh(1, 1)
  If CreateMenu(0, WindowID(1)) 
      MenuTitle("Файл")
        MenuItem(1, "Открыть"+Chr(9)+"Ctrl+O")
        MenuBar()
        MenuItem(2,"Выход")
      MenuTitle("Проигрование")
        MenuItem(3,"Плей")
        MenuItem(4,"Пауза")
        MenuItem(5,"Стоп") 
        MenuBar() 
        MenuItem(6,"Следующая") 
        MenuItem(7,"Предыдущая") 
      MenuTitle("Настройки") 
        MenuItem(8,"Язык")
      MenuTitle("Помощь") 
        MenuItem(8,"О программе")
  EndIf
  
  If CreateToolBar(1, WindowID(1) )
   ToolBarImageButton(1, ImageID(0))
   ToolBarSeparator()
   ToolBarImageButton(7, ImageID(1))
   ToolBarImageButton(3, ImageID(2))
   ToolBarImageButton(4, ImageID(3))
   ToolBarImageButton(5, ImageID(4))
   ToolBarImageButton(6, ImageID(5))
   ToolBarSeparator()
   ToolBarImageButton(8, ImageID(6))
   
   ; Добавляем всплывающие подсказки к кнопкам
   ToolBarToolTip(1, 1, "Открыть") 
   ToolBarToolTip(1, 7, "Предыдущая") 
   ToolBarToolTip(1, 3, "Плей") 
   ToolBarToolTip(1, 4, "Пауза") 
   ToolBarToolTip(1, 5, "Стоп") 
   ToolBarToolTip(1, 6, "Следующая") 
  EndIf
  
  ImageGadget(2,5,25,590,450,0,#PB_Image_Border) : DisableGadget(2,1)
  
  
 

  If InitMovie() = 0
    MessageRequester("Error", "Can't initialize movie playback !", 0) 
    End
  EndIf
  
  Repeat ; Начало главного цикла.
  Event=WaitWindowEvent() ; Узнаём текущее событие в программе
  Menu=EventMenu()  ; Получаем идентификатор активного пункта меню
  
    If Event=#PB_Event_Menu ; Условие будет выполнено, если произойдёт событие в меню
     Select Menu ; Запоминаем идентификатор меню для последующего сравнения в операторах Case
      Case 1
       MovieName$ = OpenFileRequester("Choose the movie to play", "", "Movie/Audio files|*.swf;*.avi;*.mpg;*.asf;*.mp3;*.wav;*.mid|All Files|*.*", 0)
        If MovieName$
         If LoadMovie(0, MovieName$)
            Width = MovieWidth(0)
            Height = MovieHeight(0)
            ResizeGadget(2,#PB_Ignore, #PB_Ignore,Width+2, Height+2)
            ResizeWindow(1,#PB_Ignore, #PB_Ignore,Width+10, Height+48)
            For i=0 To 100
              WindowEvent()
            Next i
            PlayMovie(0, GadgetID(2))
         Else
            MessageRequester("Error", "Не удалось загрузить аудио или видео", 0)
         EndIf
        EndIf
      Case 2 ;Произошло событие в пункте и идентификатором 2
       End ; Завершение программы
     EndSelect ; Этот оператор зератором Select
     
     
    ElseIf Event=#PB_Event_SizeWindow
      Width = WindowWidth(1)
      Height = WindowHeight(1)
      ResizeGadget(2,#PB_Ignore, #PB_Ignore,Width-10, Height-48)
      If IsMovie(0)
        ResizeMovie(0, 0, 0, Width-12, Height-50)
      EndIf
    EndIf 
  
  
  Until Event = #PB_Event_CloseWindow ; Прерываем цикл если в переменной "Event" будет число равное числу в константе.
  End ; Директива, завершающая программу.
  
  DataSection ; Загрузка файлов в исполняемый файл на этапе компиляции
  Icon1:
    IncludeBinary "my_documents.ico"
  Icon2:
    IncludeBinary "rewind.ico"
  Icon3:
    IncludeBinary "play.ico"
  Icon4:
    IncludeBinary "pause.ico"  
  Icon5:
    IncludeBinary "stop.ico"  
  Icon6:
    IncludeBinary "forward.ico" 
  Icon7:
    IncludeBinary "010194.ico"    
 
  EndDataSection

0

18

Спасибо, понял

0

19

Столкнулся с очередной проблемой. Не могу четко до конца выровнить (расширить) изображение на форме. (Почемуто при расширении экрана полосы остаются-что то напоминает не прорисовку графики). Так же возникает точно такая же проблема (выровнить) и с TrackBarGadget, да к тому же его цвет не сходится с цветом панели инструментов и почему - то он не двигается при запуске проги. Так же не знаю как его трансформировать при растяжке окна. Видимо нужно опять делать с помощью ResizeGadget?? Да и вообще как значения полосы связать с процессом проигрования. Смотрите вышенаписанный код Петра
PS: извеняюсь за множество глупых вопросов.

Отредактировано daiomik (02.02.2010 20:35:06)

0

20

Профи отзовитесь :)

0

21

daiomik написал(а):

Не могу четко до конца выровнить (расширить) изображение на форме. (Почемуто при расширении экрана полосы остаются-что то напоминает не прорисовку графики).

А можно на скрин взглянуть?
У меня вроде всё нормально работало.

daiomik написал(а):

TrackBarGadget, да к тому же его цвет не сходится с цветом панели инструментов

Какой цвет должен быть? Непонятно.

daiomik написал(а):

Так же не знаю как его трансформировать при растяжке окна. Видимо нужно опять делать с помощью ResizeGadget

Да.

daiomik написал(а):

Да и вообще как значения полосы связать с процессом проигрования

К сожалению я и сам этого не знаю..

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Видео и Аудио Плеер