Уроки PureBasic

Categories

Other Sites

Other Sites

Other Sites



             Поиск по сайту

     

                


    Оставить мне сообщение:



Radio BASS  Record

Уроки PureBasic

Онлайновый FM радио и MP3 плеер, с использованием библиотеки Bass.dll
Записи в режиме онлайн FM радио.

Для версии PureBasic 4.40


radio bass


Запись:
radio bass


Уроки PureBasic

Скачать архив Radio BASS  record со всеми исходниками




Вариантов код:
;{-----------добавление в систеиу шрифта--------------- Enumeration #IncludeFile EndEnumeration Procedure CreateIncludeFile(Name.s, *StartFile, *EndFile) If CreateFile(#IncludeFile, Name) WriteData(#IncludeFile,*StartFile, *EndFile - *StartFile) CloseFile(#IncludeFile) ProcedureReturn #True EndIf ProcedureReturn #False EndProcedure If CreateIncludeFile(GetWindowsDirectory() + "\FONTS\MicroTech.TTF", ?StartFont1, ?EndFont1) AddFontResource_(GetWindowsDirectory() + "\FONTS\MicroTech.TTF") EndIf DataSection StartFont1: IncludeBinary "MicroTech.TTF" EndFont1: EndDataSection ;}------------------------------------------------------ Enumeration #Window_0 #Window_2 EndEnumeration Enumeration #im2 #im3 #im_fon #im_rec #Font_1 #Font_2 #Font_3 #Font_4 #spektr #open #fm #mp3 #Text_3 #sss ; подсветка #but_1 #pausa #rec #but_4 #plist #Cont_1 #Cont_2 #Play_ListFm #Play_ListMP3 #clos #vol #vol_in #tamer #hhh #PlayAll #bar #bar_1 #pods #play #playlist #time EndEnumeration IncludeFile "bass.pbi" Structure PlayList ; плёйлист URL.s Title.s EndStructure Global Handle, SongPlaying, Nname.s, Rep.s, Nasd.s, Poz.s, time, len, tim, NbSongs Global NewList PlayList.PlayList(), stil.s Global Dim fx(11), column,width,height,color Global *mem=AllocateMemory(400000), hData.l, StartRecord, BreakThread Global speed.f=1, xx.f, Nname.s, fon, fra, URL.s, Title.s, a, b, vol, volume.f, min, puti.s, WinMain Structure D3 ; информ fm id.s{13} tit.s{40} EndStructure Structure ID3v1 ; теги mp3 id.s{3}; title.s{30}; artist.s{30}; album.s{30}; year.s{4}; comment.s{30}; genre.b; EndStructure Global *tag.ID3v1, *tg.D3, Title.s, box, vn, vb, vcc UsePNGImageDecoder() LoadFont(#Font_1, "MicroTech", 10, 16) ; шрифт бегущей строки MicroTech LoadFont(#Font_2, "Arial", 7) ; шрифт закрыть LoadFont(#Font_3, "Tahoma", 7) ; громкость LoadFont(#Font_4, "MicroTech", 10, 16) ; шрифт времени Nname.s = "...RADIO BASS... ...Onlain FM radio... ...Каналов-0...0 kHz... ...PureBasic... ...http://purebasic.info/..." vol = 50 volume = 0.5 xx = 20 StartRecord=0 fon = RGB(9, 93, 197) fra = RGB(200, 200, 200) box=-100 vn=800 vb=800 vcc=13 CatchImage(#im_fon, ?Im1, ?Im1End -?Im1) ; фон CatchImage(#im_rec, ?Im2, ?Im2End -?Im2) ; фон запись CatchImage(#sss, ?Im3, ?Im3End -?Im3) ; кнопка 1 CatchImage(#hhh, ?Im4, ?Im4End -?Im4) ; фон эквалайзера CatchImage(#playlist,?Im5, ?Im5End -?Im5) ; фон плейлист ;{----------------------Параметры спектра----------------------------------- x=128 ;позиция от начала x y=29 ;позиция от начала y column=265 ;колличество столбов width=1 ;ширина столба height=13 ;высота столба h=1 ;ширина между столбами color=RGB(1, 95, 181) ;цвет ;}---------------------------------------------------------------------------- CreateImage(#bar, 228,1 ) ; трек бар CreateImage(#vol, 90,8 ) ; громкость CreateImage(#im2,226,14) ; фон бег стр CreateImage(#spektr,width,height) ; спектр CreateImage(#time, 110,17 ) Procedure Stroka() ;----------бегущаа строка------------------------------ StartDrawing(ImageOutput(#im2)) Box(0,0,226,14,fon) BackColor(fon) ; Устанавливает по умолчанию цвет фона xx-speed If xx<0-TextWidth(Nname)-20 ;(если больше края на длину текста) xx=230 ; Отправляем назад на длину окна - 20px EndIf DrawingFont(FontID(#Font_1)) DrawText(xx, 0,Nname,fra) StopDrawing() SetGadgetState(#im2, ImageID(#im2)) ;---------спектр---------------------------------------- Dim FFT.f(1024) BASS_ChannelGetData(Handle,@FFT(),#BASS_DATA_FFT2048) For f=0 To column Step 5 Val= Sqr(FFT(f)) * 50 ;получение параметра по частотам StartDrawing(ImageOutput(#spektr)) DrawImage(ImageID(#hhh),0,0,111,17) Box(0,box,20,height,fon) ;RGB(9, 93, 197) Box(0,height-Val,20,Val,fra) Box(0,height-Val,20,Val/6,RGB(255, 255, 255)) StopDrawing() SetGadgetState(303+f,ImageID(#spektr)) Next f ;-------------; выводим инф FM------------------------- If Handle *tg = BASS_ChannelGetTags(Handle, #BASS_TAG_META) If *tg tit.s = *tg\tit ; название песни Nname.s =Title.s+"....."+ tit ; назв.песни EndIf EndIf ;---------------громкость----------------------------------- StartDrawing(ImageOutput(#vol)) Box(0,0,100,8,RGB(24, 24, 24)) ; фон громкости Box(0,0,vol,5,RGB(158, 157, 132)) ; цвет графика громкости aa =1 For dd=0 To 53 LineXY(aa, 0, aa, 5, RGB(24, 24, 24)) aa = aa + 2 Next dd LineXY(0, 0, 0, 4,RGB(158, 157, 132)) LineXY(0, 7, 100, 7, RGB(71, 71, 71)) StopDrawing() SetGadgetState(#vol,ImageID(#vol)) ;--------------------------Таймер-------------------------------------------- time = BASS_ChannelBytes2Seconds(Handle, BASS_ChannelGetPosition(Handle, #BASS_POS_BYTE)) len=BASS_ChannelGetLength(Handle, #BASS_POS_BYTE) tim=BASS_ChannelBytes2Seconds(Handle, len) text$ = Str(time/60) + ":" + RSet(Str(time % 60), 2, "00") ; преобразование секунд в мин.сек If BASS_ChannelIsActive(Handle) = #BASS_ACTIVE_STOPPED Else minute$ = Str(Minute(tim)) sekunde$ = Str(Second(tim)) rez$ = minute$+":"+sekunde$ ; если канал активен начинаем отсчет StartDrawing(ImageOutput(#time)) Box(0,0,110,17, RGB(9, 93, 197)) DrawingMode(#PB_2DDrawing_Transparent) DrawingFont(FontID(#Font_4)) DrawText(65, 1,rez$,RGB(200, 200, 200)) DrawText(15, 1,text$,RGB(200, 200, 200)) StopDrawing() SetGadgetState(#time,ImageID(#time)) EndIf ;{--------------------Бар трек---------------------------------------------------- StartDrawing(ImageOutput(#bar)) Box(0,0,228,1,RGB(24, 24, 24)) ; фон бара If tim>0 Box(0,0,(time*228)/tim,1,RGB(101, 101, 101)) ; бар EndIf StopDrawing() SetGadgetState(#bar_1,ImageID(#bar)) ;}---------------------------------------------------------------------------- EndProcedure Procedure Load_FM(*x) ; Создание потокового звука, получаемыми из сети Интернет SetGadgetState(#PlayAll, 0) vn=800 SetGadgetText(#Text_3,Title) BASS_StreamFree(Handle) Handle=BASS_StreamCreateURL(PeekS(*x), 0, 0, #Null, 0) BASS_ChannelPlay(Handle,0) BASS_ChannelSetAttribute( Handle,#BASS_ATTRIB_VOL,volume) speed.f=1 xx= 20 HideGadget(#rec,0) HideGadget(#but_1,1) HideGadget(#but_4,1) ResizeGadget(#time,8000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем EndProcedure Procedure LoadPlayList() ; плейлист fm Protected Result=0 ClearList(PlayList()) ClearGadgetItems(#Play_ListFM) If OpenPreferences("radio.pls") x=1 PreferenceGroup(stil) Repeat URL.s=ReadPreferenceString("File"+Str(x), "") Title.s=ReadPreferenceString("Title"+Str(x), "") If URL="" Break EndIf AddElement(PlayList()) PlayList()\URL=URL PlayList()\Title=Title x+1 ForEver If x>1 Result=1 EndIf ClosePreferences() EndIf EndProcedure Procedure LoadFile(*mem) Protected Resutlt=0 *TempBuffer=AllocateMemory(1030) For i=1 To 100 If hData > 0 InternetReadFile_( hData,*TempBuffer, 1024, @CountBytes.l ) Else CountBytes = 0 EndIf CopyMemory(*TempBuffer, *mem+Resutlt, CountBytes) Resutlt=Resutlt+CountBytes If StartRecord=1 If CountBytes>0 If IsFile(1) WriteData(1, *TempBuffer, CountBytes) FlushFileBuffers(1) EndIf EndIf EndIf Next i FreeMemory(*TempBuffer) ProcedureReturn Resutlt EndProcedure Procedure Thread(*xx) Repeat CountBytes=LoadFile(*mem) Until BreakThread=1 EndProcedure Procedure.s Secundomer() ;- Сама процедура таймера - всего 3 строчки! a+1 If a=10:a=0:b=b+1:EndIf SetGadgetText(#tamer,"Запись: "+FormatDate("%ii:%ss", b)+":"+ Str(a)) EndProcedure Procedure Animate_Gadget() ; Развернуть/Свернуть плейлист If min=1 ; Развернуть плейлист HideWindow(#Window_2,0) For i=0 To 330 Step 6 ResizeWindow(#Window_2, #PB_Ignore, #PB_Ignore,#PB_Ignore,i) For x=1 To 10 WindowEvent() Next x Delay(8) Next i Else ; Свернуть плейлист For i=330 To 0 Step -6 ResizeWindow(#Window_2, #PB_Ignore, #PB_Ignore,#PB_Ignore,i) For x=1 To 10 WindowEvent() Next x Delay(8) Next i HideWindow(#Window_2,1) EndIf EndProcedure Procedure Direct() ; Ск. директории NbSongs = 0 puti = GetPathPart(Rep) ClearGadgetItems(#Play_ListMP3) If ExamineDirectory(0, GetPathPart(Rep), "*.*") Repeat FileType = NextDirectoryEntry(0) If FileType FileName.s = DirectoryEntryName(0) If FileName.s <> "." And FileName.s <> ".." Ext$ = LCase(Right(FileName.s,4)) If Ext$ = ".wav" Or Ext$ = ".mp3" Or Ext$ = ".mid" AddGadgetItem(#Play_ListMP3, -1, FileName.s) NbSongs = NbSongs + 1 EndIf EndIf EndIf SetGadgetState(#Play_ListMP3, SongPlaying ) Until FileType = 0 EndIf EndProcedure Procedure Play() ; играть пленлист BASS_StreamFree(Handle) ; очищаем поток File.s = puti+GetGadgetText(#Play_ListMP3) ; получаем путь из суммы директории и имени с плей листа Handle=BASS_StreamCreateFile(0, @File, 0, 0, 0) BASS_ChannelPlay(Handle,0) BASS_ChannelSetAttribute( Handle,#BASS_ATTRIB_VOL,volume) SetGadgetState(#PlayAll, 1) ; разрешаем проигрывание по очереди len=BASS_ChannelGetLength(Handle, #BASS_POS_BYTE) tim=BASS_ChannelBytes2Seconds(Handle, len) minute$ = Str(Minute(tim)) sekunde$ = Str(Second(tim)) rez$ = minute$+":"+sekunde$ Nn.s = GetGadgetText(#Play_ListMP3) ; получаем название трека max = CountGadgetItems(#Play_ListMP3) pozis = GetGadgetState(#Play_ListMP3)+1 If Handle *tag = BASS_ChannelGetTags(Handle, #BASS_TAG_ID3) If *tag artist.s = *tag\artist ; артист title.s = *tag\title ; название песни album.s = *tag\album ; альбом year.s = *tag\year ; год Nname.s =Str(pozis)+"/"+Str(max)+" "+ Nn.s +" "+ rez$+" минут" ; выводим имя + название трека + время Else ; если нет тега выводим название файла Nname.s=Str(pozis)+"/"+Str(max)+" "+ Nn.s EndIf EndIf HideGadget(#but_1,0) HideGadget(#but_4,0) HideGadget(#rec,1) vn=25 vb=80 ResizeGadget(#Text_3,8000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем ResizeGadget(#time, 13 ,#PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем EndProcedure Procedure IsMouseOver(wnd) ; Эта процедура определяет находится ли курсор мышки над заданым окном или гаджетом GetWindowRect_(wnd,re.RECT) GetCursorPos_(pt.POINT) Result.l = PtInRect_(@re, pt\x | (pt\y<<32) ) ProcedureReturn Result EndProcedure Procedure EventButton1(Event, Gadget, Type, ImageGadget) ; Обр. соб. от кнопки Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#but_1)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука Button=1 ResizeGadget(#pods,13,#PB_Ignore,#PB_Ignore,#PB_Ignore) ElseIf Button=1 Button=0 ResizeGadget(#pods,-100,#PB_Ignore,#PB_Ignore,#PB_Ignore) EndIf EndIf EndProcedure Procedure EventButton2(Event, Gadget, Type, ImageGadget) ; Обр. соб. от кнопки Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#pausa)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука Button=1 ResizeGadget(#pods,32,#PB_Ignore,#PB_Ignore,#PB_Ignore) ElseIf Button=1 Button=0 ResizeGadget(#pods,-100,#PB_Ignore,#PB_Ignore,#PB_Ignore) EndIf EndIf EndProcedure Procedure EventButton3(Event, Gadget, Type, ImageGadget) ; Обр. соб. от кнопки Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#play)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука Button=1 ResizeGadget(#pods,51,#PB_Ignore,#PB_Ignore,#PB_Ignore) ElseIf Button=1 Button=0 ResizeGadget(#pods,-100,#PB_Ignore,#PB_Ignore,#PB_Ignore) EndIf EndIf EndProcedure Procedure EventButton4(Event, Gadget, Type, ImageGadget) ; Обр. соб. от кнопки Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#rec)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука Button=1 ResizeGadget(#pods,70,#PB_Ignore,#PB_Ignore,#PB_Ignore) ElseIf Button=1 Button=0 ResizeGadget(#pods,-100,#PB_Ignore,#PB_Ignore,#PB_Ignore) EndIf EndIf EndProcedure Procedure EventButton5(Event, Gadget, Type, ImageGadget) ; Обр. соб. от кнопки Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#but_4)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука Button=1 ResizeGadget(#pods,89,#PB_Ignore,#PB_Ignore,#PB_Ignore) ElseIf Button=1 Button=0 ResizeGadget(#pods,-100,#PB_Ignore,#PB_Ignore,#PB_Ignore) EndIf EndIf EndProcedure Procedure EventButton6(Event, Gadget, Type, ImageGadget) ; Обр. соб. от кнопки Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#plist)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука Button=1 ResizeGadget(#pods,108,#PB_Ignore,#PB_Ignore,#PB_Ignore) ElseIf Button=1 Button=0 ResizeGadget(#pods,-100,#PB_Ignore,#PB_Ignore,#PB_Ignore) EndIf EndIf EndProcedure Procedure CallBack(WND,Message,lParam,wParam) ; перемещение окна доп с основным окном Result = #PB_ProcessPureBasicEvents Select WND Case WinMain Select Message Case #WM_MOVE ; если окно перемещается (основное) ResizeWindow(#Window_2,WindowX(#Window_0),WindowY(#Window_0)+75,#PB_Ignore,#PB_Ignore) EndSelect EndSelect ProcedureReturn Result EndProcedure ;{------------------Окно-------------------------------- OpenWindow (#Window_0,0,0,250,73,"Окно",#PB_Window_ScreenCentered|#PB_Window_BorderLess| #PB_Window_Invisible) SetWinBackgroundImage(WindowID(#Window_0), ImageID(#im_fon) ) ImageGadget(#im2,12,13, 226, 14,ImageID(#im2)) ; фон бег стр ImageGadget(#time,8000,28,110, 17,ImageID(#time)) ; фон таймер TextGadget(#Text_3,vcc,29,111,15,"Станция",#PB_Text_Center) SetGadgetColor(#Text_3, #PB_Gadget_FrontColor, RGB(200, 200, 200)) ; текст SetGadgetColor(#Text_3, #PB_Gadget_BackColor, RGB(9, 93, 197)) ; фон RGB(9, 93, 197) SetGadgetFont (#Text_3, FontID(#Font_1)) TextGadget (#tamer,13,29,111,15,"Запись: 00:00:00",#PB_Text_Center) SetGadgetColor(#tamer, #PB_Gadget_FrontColor, RGB(200, 200, 200)) ; текст SetGadgetColor(#tamer, #PB_Gadget_BackColor, RGB(9, 93, 197)) ; фон RGB(9, 93, 197) HideGadget (#tamer,1) ButtonID=ImageGadget(#but_1,13,55,17,12,0) ; <<<<< ButtonID=ImageGadget(#pausa,32,55,17,12,0) ; пауза ButtonID=ImageGadget(#play, 51,55,17,12,0) ; играть ButtonID=ImageGadget(#rec, 70,55,17,12,0) ; запись ButtonID=ImageGadget(#but_4,89,55,17,12,0) ; >>>>> ButtonID=ImageGadget(#plist,108,55,17,12,0) ; плейлист ImageGadget(#pods,-89,50,23,23,ImageID(#sss)) ;подсветка ImageGadget(#vol, 135,57, 0, 0 ,ImageID(#vol)) ; громкость HideGadget(#rec,1) HideGadget(#but_1,1) HideGadget(#but_4,1) TextGadget(#vol_in,230,55,15,10,"50") ; громкость SetGadgetColor(#vol_in, #PB_Gadget_BackColor, RGB(24, 24, 24)) SetGadgetColor(#vol_in, #PB_Gadget_FrontColor , RGB(158, 157, 132)) SetGadgetFont (#vol_in, FontID(#Font_3)) CheckBoxGadget(#PlayAll,0, 0, 0 , 0, "") SetGadgetState(#PlayAll, 0) ImageGadget(#bar_1,11, 51,0,0,ImageID(#bar)) ; вывод бара For f=0 To column Step 5 ImageGadget(303+f,x, y,0,0,ImageID(#spektr)) ; вывод спектра x=x+(width+h) Next f ;---------------------------------------------------- HyperLinkGadget(#clos,244,1,7,7,"*",RGB(206, 2, 4)) ; закрыть программу PureCOLOR_SetGadgetColor(#clos, #PureCOLOR_SystemColor,#PureCOLOR_DontSetBackColor ) SetGadgetFont(#clos, FontID(#Font_2)) ;{--------------Окно плейлиста------------------------------------------------ x= WindowX(#Window_0)+0 y= WindowY(#Window_0)+75 If OpenWindow (#Window_2,x,y,250,0, "Плейлист", #PB_Window_BorderLess) SetWinBackgroundImage(WindowID(#Window_2),ImageID(#playlist) ) HyperLinkGadget(#mp3,7,9,236,12," ----------------------- Список станций ------------------------",RGB(128, 128, 128)) ; #Text_2,7,79,236,12 SetGadgetColor(#mp3, #PB_Gadget_FrontColor, RGB(95, 95, 95)) ; текст SetGadgetColor(#mp3, #PB_Gadget_BackColor, RGB(24, 24, 24)) ; фон HyperLinkGadget(#open,3000,9,70,12,"Открыть mp3",RGB(128, 128, 128)) ;#open,30,79,70,12 SetGadgetColor(#open, #PB_Gadget_FrontColor, RGB(95, 95, 95)) ; текст SetGadgetColor(#open, #PB_Gadget_BackColor, RGB(24, 24, 24)) ; фон HyperLinkGadget(#fm,1300,9,100,12,"Список станций FM",RGB(128, 128, 128)) ;#fm,130,79,100,12 SetGadgetColor(#fm, #PB_Gadget_FrontColor, RGB(95, 95, 95)) ; текст SetGadgetColor(#fm, #PB_Gadget_BackColor, RGB(24, 24, 24)) ; фон ;--------------------------------------------------- ContainerGadget(#Cont_1,800,42,234,282) ; mp3 ; #Cont_1,8,92,234,300 ListViewGadget(#Play_ListMP3, -2, -2, 255, 288) SetGadgetColor(#Play_ListMP3,#PB_Gadget_FrontColor,RGB(95, 95, 95)) SetGadgetColor(#Play_ListMP3,#PB_Gadget_BackColor, RGB(24, 24, 24)) CloseGadgetList() ;--------------------------------------------------- ContainerGadget(#Cont_2,8,21,234,300) ; fm ; #Cont_2,8,92,234,300 ListViewGadget(#Play_ListFm, -2, -2, 255, 310) SetGadgetColor(#Play_ListFm,#PB_Gadget_FrontColor,RGB(95, 95, 95)) SetGadgetColor(#Play_ListFm,#PB_Gadget_BackColor, RGB(24, 24, 24)) CloseGadgetList() ;---------------------------------------------------- stil ="Всё подряд" LoadPlayList() ForEach PlayList() AddGadgetItem(#Play_ListFM,-1,PlayList()\Title) Next ;-----Чтение пути----------------- If OpenPreferences("imf.pcs") Rep.s = ReadPreferenceString("Путь", "Нет") Poz.s = ReadPreferenceString("Позиция", "Нет") ClosePreferences() EndIf SongPlaying = Val(Poz.s) Direct() EndIf WinMain_0 = WindowID(#Window_2) WinMain = WindowID(#Window_0) SetWindowCallback(@CallBack()) ;}------------------------------------------------------------------ BASS_Init(-1, 44100, 0, WindowID(#Window_0), #Null) SetTimer_(WindowID(#Window_0),Event,35,@Stroka()) HideWindow(#Window_0,0) HideWindow(#Window_2,1) ;{-----------------Главный цикл------------------------- Repeat Event = WaitWindowEvent() Window = EventWindow() Gadget = EventGadget() mx.l = WindowMouseX(#Window_0) ; координаты x my.l = WindowMouseY(#Window_0) ; координаты y ;------переключение треков----------------------- If GetGadgetState(#PlayAll) ; да или нет If BASS_ChannelIsActive(Handle) ; если канал активен Else SongPlaying = GetGadgetState(#Play_ListMP3)+ 1 If SongPlaying < NbSongs SetGadgetState(#Play_ListMP3, SongPlaying ) Play() EndIf EndIf EndIf ;----перетягивание------------------------ If Event = #WM_LBUTTONDOWN If Window=#Window_0 SendMessage_(WindowID(#Window_0),#WM_NCLBUTTONDOWN, #HTCAPTION,0) EndIf If Window=#Window_2 SendMessage_(WindowID(#Window_2),#WM_NCLBUTTONDOWN, #HTCAPTION,0) EndIf EndIf ;----------------------------------------- Select Event Case #WM_LBUTTONDBLCLK ; обработка события на двойной клик If Gadget = #Play_ListMP3 SetGadgetText(#Text_3,"MP3 Player") Play() EndIf ;------------------------------------------ If Gadget = #Play_ListFM ; FM onlain ;/////////////////////////////////////////////////////////////////// Row = GetGadgetState(#Play_ListFM) ; получаем позицию SelectElement(PlayList(),Row) URL.s =PlayList()\URL ; адрес Title.s=PlayList()\Title ; имя If IsThread(ThreadID)=0 ThreadID=CreateThread(@Load_FM(), @URL) xx= 40 speed.f=0 Nname.s="Загрузка адреса" Else MessageRequester("", "Идёт загрузка!", #MB_OK|#MB_ICONWARNING) EndIf ;/////////////////////////////////////////////////////////////////// vn=800 vb=800 ResizeGadget(#Text_3,13, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем EndIf Case #PB_Event_Gadget Select EventGadget() Case #im2, #Text_3 SendMessage_(WindowID(#Window_0),#WM_NCLBUTTONDOWN, #HTCAPTION,0) ; перетянуть за картинку Case #open ;----------Открытие mp3------------------------------------------------------------------- If EventType()=#PB_EventType_LeftClick Rep.s = OpenFileRequester("","","*.*|*.*",0) Direct() ;---Совпадение плейлиста и открыт. mp3------------------- Nasd.s= GetFilePart(Rep.s) ; извлекаем имя For n=0 To 1000 SetGadgetState(#Play_ListMP3, n) If Nasd.s =GetGadgetText(#Play_ListMP3) SetGadgetState(#Play_ListMP3, n) Break EndIf Next ;-------------------------------------------------------- BASS_StreamFree(Handle) Handle=BASS_StreamCreateFile(0, @Rep, 0, 0, 0) Play() EndIf Case #fm ResizeGadget(#mp3, 8, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; показываем выбор ResizeGadget(#Cont_2,8, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; показываем плейлист fm ResizeGadget(#fm, 1300,#PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем выбор ResizeGadget(#open, 3000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем открыть mp3 ResizeGadget(#Cont_1,800, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем плейлист мз3 SetGadgetText(#Text_3,Title.s) Case #mp3 ResizeGadget(#mp3, 800, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем выбор ResizeGadget(#Cont_2,800, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; убираем плейлист fm ResizeGadget(#fm, 130, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; показываем выбор ResizeGadget(#open, 30, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; показываем открыть mp3 ResizeGadget(#Cont_1,8, #PB_Ignore,#PB_Ignore,#PB_Ignore) ; показываем плейлист мз3 SetGadgetText(#Text_3,"MP3 Player") Case #but_1 ; <<<<< SongPlaying = GetGadgetState(#Play_ListMP3)- 1 If SongPlaying < NbSongs SetGadgetState(#Play_ListMP3, SongPlaying ) Play() EndIf Case #but_4 ; >>>>> SongPlaying = GetGadgetState(#Play_ListMP3)+ 1 If SongPlaying < NbSongs SetGadgetState(#Play_ListMP3, SongPlaying ) Play() EndIf Case #play Play() Case #rec ;---------------------запись------------------------------------- rec = rec ! 1 If rec=1 BreakThread=1 Count=0 Repeat Delay(50) Count+1 Until IsThread(ThreadID)=0 Or Count>20 If hInet InternetCloseHandle_(hInet) hInet=0 EndIf If hData InternetCloseHandle_(hData) hData=0 EndIf hInet = InternetOpen_( @agent,0,0,0,0 ) hData = InternetOpenUrl_( hInet, @URL.s, "", 0, $8000000, 0 ) BreakThread=0 ThreadID=CreateThread(@Thread(),0) File.s=FormatDate("%hh_%ii_%ss"+".mp3", Date()) If File<>"" If CheckFilename(GetFilePart(File)) If CreateFile(1,File) StartRecord=1 HideGadget (#tamer,0) a=0:b=0 StartTimer( 1 , 100 , @Secundomer()) EndIf EndIf EndIf fon=RGB(255, 26, 25) fra=RGB(255, 255, 255) box=0 SetGadgetColor(#tamer, #PB_Gadget_FrontColor, fra) SetGadgetColor(#tamer, #PB_Gadget_BackColor, fon) SetWinBackgroundImage(WindowID(#Window_0), ImageID(#im_rec) ) ;---------------------------стоп запись-------------------------------- Else BreakThread=1 Count=0 Repeat Delay(50) Count+1 Until IsThread(ThreadID)=0 Or Count>20 If hInet InternetCloseHandle_(hInet) hInet=0 EndIf If hData InternetCloseHandle_(hData) hData=0 EndIf StartRecord=0 Delay(200) If IsFile(1) CloseFile(1) EndIf HideGadget(#tamer,1) EndTimer(1) fon=RGB(9, 93, 197) fra=RGB(200, 200, 200) box=-100 SetGadgetColor(#Text_3, #PB_Gadget_FrontColor, fra) SetGadgetColor(#Text_3, #PB_Gadget_BackColor, fon) SetWinBackgroundImage(WindowID(#Window_0), ImageID(#im_fon) ) SetGadgetText(#Text_3,Title) EndIf Case #plist min = min ! 1 Animate_Gadget() ; анимированное появление fm Case #pausa ; пауза Pausa = Pausa ! 1 If Pausa HideGadget(#rec,1) BASS_ChannelPause(Handle) Else HideGadget(#rec,0) BASS_ChannelPlay(Handle,0) EndIf Case #clos If min =1 For i=330 To 0 Step -6 ResizeWindow(#Window_2, #PB_Ignore, #PB_Ignore,#PB_Ignore,i) For x=1 To 10 WindowEvent() Next x Delay(8) Next i EndIf ;----Запись параметров перед выходом----------- OpenPreferences("imf.pcs") WritePreferenceString("Путь",Rep.s) WritePreferenceString("Позиция",Str(GetGadgetState(#Play_ListMP3))) ClosePreferences() ;--------------------------------------------- Break Case #vol ; громкость x=WindowMouseX(#Window_0) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука vol=x-GadgetX(#vol) volume = vol/100 BASS_ChannelSetAttribute( Handle,#BASS_ATTRIB_VOL,volume) SetGadgetText(#vol_in, Str(vol)) Case #bar_1 ; управление трек баром x=WindowMouseX(#Window_0) ;Возвращает X координату положения курсора мыши во внутренней области окна cx=x-GadgetX(#bar_1) ;GadgetX(289)-Возвращает координату X указанного #Gadget pos=cx*((len)/228) ; 424 - длина бара (pos меняет значение от 0 до len ) BASS_ChannelSetPosition(Handle, pos, #BASS_POS_BYTE) EndSelect EndSelect EventButton1(Event, Gadget, Type, 1) EventButton2(Event, Gadget, Type, 1) EventButton3(Event, Gadget, Type, 1) EventButton4(Event, Gadget, Type, 1) EventButton5(Event, Gadget, Type, 1) EventButton6(Event, Gadget, Type, 1) ForEver ;}------------------------------------------------------- DataSection Im1: IncludeBinary "mini_новый_2.png" Im1End: Im2: IncludeBinary "mini_запись_2.png" Im2End: Im3: IncludeBinary "кнопка.png" Im3End: Im4: IncludeBinary "ddd.png" Im4End: Im5: IncludeBinary "плейлист.png" Im5End: EndDataSection </plaintext> </div><br><br><br><br> <br><br> </div> </div> <!-- copyright (t4) --><div align="center">Используются технологии <a href="http://www.ucoz.ru/" title="Создать сайт бесплатно"><b>uCoz</b></a><br /></div><!-- /copyright --> </body> </html>