Уроки PureBasic

Categories

Other Sites

Other Sites

Other Sites



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

     

                


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



Radio BASS  Scaler

Уроки PureBasic

MP3 плеер, с использованием библиотеки Bass.dll
Стрелочный индикатор уровня сигнала

radio bass


Уроки PureBasic

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




Enumeration #Window_0=33 #Window_2 #trac #Img_L #Img_R #ind #ind_ser #ind2 #Cont_1 #Play_ListMP3 #Text #fon #knop #kn_mp3 #kn_fm #kn_open #kn_play #mp3 #fm #open #play #wkl #skr #clos #v0: #v1: #v2: #v3: #v4: #v5: #v6: #v7: #v8: #v9: #v10 #vol_0: #vol_1: #vol_2: #vol_3: #vol_4: #vol_5: #vol_6: #vol_7: #vol_8: #vol_9: #vol_10 #fon_plist #ind_plist #beg_plist #bg_pl #ind_pl #Font_1 #Font_2 #Text_1 #trek #bar EndEnumeration IncludeFile "bass.pbi" UsePNGImageDecoder() Global xL, yL, xR, yR, Handle, Rep.s, put.s, SongPlaying, NbSongs, xx, yy, PlayAll, WinMain, min, mp3, ident, id,volume.f=0.5, speed.f=1, xxx.f, Nname.s 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, time, len, SongPlaying dL=0 dR=0 yL=0 yR=0 xL=3 yL=3 xR=3 yR=3 mp3=0 PlayAll= 0 xx=0 ; координата серого индикатора yy=1000 ; координата кнопок Nname.s = "...RADIO BASS... ...Onlain FM radio... ...Каналов-0...0 kHz... ...PureBasic... ...http://purebasic.info/..." xxx = 20 wkl=0 LoadFont(#Font_1, "MicroTech", 10, 16) ; шрифт времени LoadFont(#Font_2, "Arial", 8, 16) ; шрифт времени CreateImage(#Img_L, 105,61) ; стрелочный индикатор CreateImage(#Img_R, 105,61) ; стрелочный индикатор CreateImage(#bg_pl, 273,12) ; бег стр плейлиста CreateImage(#ind_pl,352,49) ; индикатор плейлиста CreateImage(#bar, 340,2 ) ; трек бар CatchImage(#ind, ?Im1, ?Im1End -?Im1) CatchImage(#ind2,?Im2, ?Im2End -?Im2) CatchImage(#fon, ?Im3, ?Im3End -?Im3) ; фон CatchImage(#knop,?Im4, ?Im4End -?Im4) ; кнопка нажата CatchImage(#mp3, ?Im5, ?Im5End -?Im5) ; надпись mp3 CatchImage(#fm, ?Im6, ?Im6End -?Im6) ; надпись fm CatchImage(#open,?Im7, ?Im7End -?Im7) ; надпись open CatchImage(#play,?Im8, ?Im8End -?Im8) ; надпись play CatchImage(#wkl, ?Im9, ?Im9End -?Im9) ; подсветка вкл/скрыть/выйти CatchImage(#ind_ser, ?Im10, ?Im10End -?Im10) ; серый индикатор CatchImage(#v0, ?Im21, ?Im21End -?Im21) ; volume 0 CatchImage(#v1, ?Im11, ?Im11End -?Im11) ; volume 1 CatchImage(#v2, ?Im12, ?Im12End -?Im12) ; volume 2 CatchImage(#v3, ?Im13, ?Im13End -?Im13) ; volume 3 CatchImage(#v4, ?Im14, ?Im14End -?Im14) ; volume 4 CatchImage(#v5, ?Im15, ?Im15End -?Im15) ; volume 5 CatchImage(#v6, ?Im16, ?Im16End -?Im16) ; volume 6 CatchImage(#v7, ?Im17, ?Im17End -?Im17) ; volume 7 CatchImage(#v8, ?Im18, ?Im18End -?Im18) ; volume 8 CatchImage(#v9, ?Im19, ?Im19End -?Im19) ; volume 9 CatchImage(#v10,?Im20, ?Im20End -?Im20) ; volume 20 CatchImage(#vol_0, ?Im22, ?Im22End -?Im22) ; vol-0 CatchImage(#vol_1, ?Im23, ?Im23End -?Im23) ; vol-1 CatchImage(#vol_2, ?Im24, ?Im24End -?Im24) ; vol-2 CatchImage(#vol_3, ?Im25, ?Im25End -?Im25) ; vol-3 CatchImage(#vol_4, ?Im26, ?Im26End -?Im26) ; vol-4 CatchImage(#vol_5, ?Im27, ?Im27End -?Im27) ; vol-5 CatchImage(#vol_6, ?Im28, ?Im28End -?Im28) ; vol-6 CatchImage(#vol_7, ?Im29, ?Im29End -?Im29) ; vol-7 CatchImage(#vol_8, ?Im30, ?Im30End -?Im30) ; vol-8 CatchImage(#vol_9, ?Im31, ?Im31End -?Im31) ; vol-9 CatchImage(#vol_10,?Im32, ?Im32End -?Im32) ; vol-10 CatchImage(#fon_plist,?Im33, ?Im33End -?Im33) ; фон плейлиста CatchImage(#ind_plist,?Im34, ?Im34End -?Im34) ; индикатор плейлиста CatchImage(#beg_plist,?Im35, ?Im35End -?Im35) ; бегущая строка плейлиста Procedure IsMouseOver(wnd) ; Эта процедура определяет находится ли курсор мышки над заданым окном или гаджетом GetWindowRect_(wnd,re.RECT) GetCursorPos_(pt.POINT) Result.l = PtInRect_(@re, pt\x | (pt\y<<32) ) ProcedureReturn Result EndProcedure Procedure LOWORD(Value) ; Макрокоманда извлекает младшее слово из данного 32-разрядного значения (левый индикатор ур) ProcedureReturn Value & $FFFF EndProcedure Procedure HIWORD(Value) ; Макрокоманда извлекает старшее слово из данного 32-разрядного значения (правый индикатор ур) ProcedureReturn (Value >> 16) & $FFFF EndProcedure Procedure Play() File.s = put.s+GetGadgetText(#Play_ListMP3) ; получаем путь из суммы директории и имени с плей листа BASS_StreamFree(Handle) Handle=BASS_StreamCreateFile(0, @File, 0, 0, 0) BASS_ChannelPlay(Handle,0) BASS_ChannelSetAttribute( Handle,#BASS_ATTRIB_VOL,volume) PlayAll=1 kol= CountGadgetItems(#Play_ListMP3) poz= GetGadgetState(#Play_ListMP3) SetGadgetState(#mp3,ImageID(#mp3)) mp3=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) ; получаем название трека 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 =Nn.s ; выводим имя + название трека + время Else ; если нет тега выводим название файла Nname.s=Str(pozis)+"/"+Str(max)+" "+ Nn.s EndIf EndIf SetGadgetText(#Text_1,GetPathPart(Rep)) EndProcedure Procedure Indikator() If BASS_ChannelIsActive(Handle) ; если канал активен level=BASS_ChannelGetLevel(Handle) L=HIWORD(level) R=LOWORD(level) xR= R*90/32768 xL= L*90/32768 ;-------------------------- If xL>dL yL=xL-(xL*xL)/100 dR=xR xR=xR+1 ElseIf xL<dL yL=xL-(xL*xL)/100 dR=xR xR=xR-1 EndIf ;-------------------------- If xR>dR yR=xR-(xR*xR)/100 dL=xL xL=xL+1 ElseIf xR<dR yR=xR-(xR*xR)/100 dL=xL xL=xL+1 EndIf ;------0000----------- If xL>=0 And xL<=5 xL=5 yL=5 EndIf If xR>=0 And xR<=5 xR=5 yR=5 EndIf ;-------пауза---------- If xL>=150 xL=5 yL=5 EndIf If xR>=150 xR=5 yR=5 EndIf ;--------------------- StopDrawing() EndIf ;---------------Левый------------------------------ StartDrawing(ImageOutput(#Img_L)) DrawImage(ImageID(#ind), 0, 0 ,105,61) DrawImage(ImageID(#ind_ser), xx, 0 ,105,61) ; серый индикатор LineXY(52, 61, xL, 40-yL, RGB(255, 255, 255)) DrawImage(ImageID(#ind2), 24, 40 ,57,21) StopDrawing() SetGadgetState(#Img_L,ImageID(#Img_L)) ;---------------Правый----------------------------- StartDrawing(ImageOutput(#Img_R)) DrawImage(ImageID(#ind), 0, 0 ,105,61) DrawImage(ImageID(#ind_ser), xx, 0 ,105,61) ; серый индикатор LineXY(52, 61, xR, 40-yR, RGB(255, 255, 255)) DrawImage(ImageID(#ind2), 24, 40 ,57,21) StopDrawing() SetGadgetState(#Img_R,ImageID(#Img_R)) ;------------вывод информации--------------------------- 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") ; преобразование секунд в мин.сек minute$ = Str(Minute(tim)) sekunde$ = Str(Second(tim)) rez$ = minute$+":"+sekunde$ max = CountGadgetItems(#Play_ListMP3) pozis = GetGadgetState(#Play_ListMP3)+1 StartDrawing(ImageOutput(#ind_pl)) DrawImage(ImageID(#ind_plist), 0, 0 ,352,49) DrawingMode(#PB_2DDrawing_Transparent) DrawingFont(FontID(#Font_1)) DrawText(45, 24,"таймер: "+text$,RGB(255, 255, 255)) DrawText(160, 24,"время: "+rez$, RGB(255, 255, 255)) DrawText(280, 24, Str(pozis)+"/"+Str(max), RGB(255, 255, 255)) StopDrawing() SetGadgetState(#ind_pl,ImageID(#ind_pl)) ;--------------бегущая строка---------------------- StartDrawing(ImageOutput(#bg_pl)) DrawImage(ImageID(#beg_plist), 0, 0 ,273,12) DrawingMode(#PB_2DDrawing_Transparent) xxx-speed If xxx<0-TextWidth(Nname)-20 ;(если больше края на длину текста) xxx=230 ; Отправляем назад на длину окна - 20px EndIf DrawingFont(FontID(#Font_1)) DrawText(xxx, -1,Nname,RGB(255, 255, 255)) StopDrawing() SetGadgetState(#bg_pl,ImageID(#bg_pl)) ;--------------------Бар трек---------------------------------------------------- StartDrawing(ImageOutput(#bar)) Box(0,0,340,2,RGB(25, 25, 25)) ; фон бара If tim>0 Box(0,0,(time*340)/tim,2,RGB(231, 100, 17)) ; бар EndIf StopDrawing() SetGadgetState(#bar,ImageID(#bar)) EndProcedure Procedure Direct() ; Ск. директории NbSongs = 0 put.s = 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 Animate_Gadget() ; Развернуть/Свернуть плейлист If min=1 ; Развернуть плейлист HideWindow(#Window_2,0) For i=0 To 400 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=400 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) SetGadgetState(#open,0) If mp3=1 SetGadgetState(#mp3,ImageID(#mp3)) Else SetGadgetState(#mp3,0) 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)+204,#PB_Ignore,#PB_Ignore) EndSelect EndSelect ProcedureReturn Result EndProcedure Procedure EventButton1(Event, Gadget, Type, ImageGadget) ; курсор mp3 Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#kn_mp3)) Button=1 SetGadgetState(#kn_mp3,ImageID(#knop)) ElseIf Button=1 Button=0 SetGadgetState(#kn_mp3,0) EndIf EndIf EndProcedure Procedure EventButton2(Event, Gadget, Type, ImageGadget) ; курсор fm Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#kn_fm)) Button=1 SetGadgetState(#kn_fm,ImageID(#knop)) ElseIf Button=1 Button=0 SetGadgetState(#kn_fm,0) EndIf EndIf EndProcedure Procedure EventButton3(Event, Gadget, Type, ImageGadget) ; курсор open Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#kn_open)) Button=1 SetGadgetState(#kn_open,ImageID(#knop)) ElseIf Button=1 Button=0 SetGadgetState(#kn_open,0) EndIf EndIf EndProcedure Procedure EventButton4(Event, Gadget, Type, ImageGadget) ; курсор play Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#kn_play)) Button=1 SetGadgetState(#kn_play,ImageID(#knop)) ElseIf Button=1 Button=0 SetGadgetState(#kn_play,0) EndIf EndIf EndProcedure Procedure HAND(Event, Gadget, Type, ImageGadget) ; курсор play Static Button If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#kn_mp3)) Or IsMouseOver(GadgetID(#kn_fm)) Or IsMouseOver(GadgetID(#kn_open)) Or IsMouseOver(GadgetID(#kn_play)) Or IsMouseOver(GadgetID(#v0)) Or IsMouseOver(GadgetID(#v1)) Or IsMouseOver(GadgetID(#v2)) Or IsMouseOver(GadgetID(#v3)) Or IsMouseOver(GadgetID(#v4)) Or IsMouseOver(GadgetID(#v5)) Or IsMouseOver(GadgetID(#v6)) Or IsMouseOver(GadgetID(#v7)) Or IsMouseOver(GadgetID(#v8)) Or IsMouseOver(GadgetID(#v9)) Or IsMouseOver(GadgetID(#v10)) Or IsMouseOver(GadgetID(#bar)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука EndIf EndIf EndProcedure Procedure Resize(ident,id) ; процедура громкость BASS_ChannelSetAttribute( Handle,#BASS_ATTRIB_VOL,volume) ;---------------------------------------------------------------- ResizeGadget(#vol_0, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_1, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_2, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_3, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_4, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_5, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_6, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_7, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_8, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_9, 2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#vol_10,2840,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(ident,284,#PB_Ignore,#PB_Ignore,#PB_Ignore) ;---------------------------------------------------------------- SetGadgetState(#v0, 0) SetGadgetState(#v1, 0) SetGadgetState(#v2, 0) SetGadgetState(#v3, 0) SetGadgetState(#v4, 0) SetGadgetState(#v5, 0) SetGadgetState(#v6, 0) SetGadgetState(#v7, 0) SetGadgetState(#v8, 0) SetGadgetState(#v9, 0) SetGadgetState(#v10,0) SetGadgetState(id,ImageID(id)) EndProcedure ;{------------------Окно-------------------------------- OpenWindow (#Window_0,0,0,400,200,"Стрелочный индикатор",#PB_Window_ScreenCentered|#PB_Window_Invisible|#PB_Window_BorderLess) SetWinBackgroundImage(WindowID(#Window_0),ImageID(#fon)) ImageGadget(#Img_L, 10, 10, 105, 61, ImageID(#Img_L)) ; индикатор ImageGadget(#Img_R, 120,10, 105, 61, ImageID(#Img_R)) ; индикатор ImageGadget(#kn_mp3, 14, yy, 50, 25, 0) ; кнопка mp3 ImageGadget(#mp3, 25, 105, 26, 9 , 0) ; надпись mp3 ImageGadget(#kn_fm, 66, yy, 50, 25, 0) ; кнопка fm ImageGadget(#fm, 79, 105, 26, 9 , 0) ; надпись fm ImageGadget(#kn_open,119, yy, 50, 25,0) ; кнопка open ImageGadget(#open, 127, 105, 26, 9 ,0) ; надпись open ImageGadget(#kn_play,172, yy, 50, 25,0) ; кнопка pausa ImageGadget(#play, 178, 105, 26, 9 ,0) ; надпись pausa ImageGadget(#wkl, 330, 0, 26, 13,0) ;включить ImageGadget(#skr, 348, 0, 26, 13,0) ;скрыть ImageGadget(#clos, 366, 0, 26, 13,0) ;закрыть ImageGadget(#v0, 1000, 145, 11, 8, 0) ; volume 0 ImageGadget(#v1, 1000, 121, 11, 8, 0) ; volume 1 ImageGadget(#v2, 1000, 93, 11, 8, 0) ; volume 2 ImageGadget(#v3, 1000, 63, 11, 8, 0) ; volume 3 ImageGadget(#v4, 1000, 45, 11, 8, 0) ; volume 4 ImageGadget(#v5, 1000, 38, 11, 8, 0) ; volume 5 ImageGadget(#v6, 1000, 46, 11, 8, 0) ; volume 6 ImageGadget(#v7, 1000, 67, 11, 8, 0) ; volume 7 ImageGadget(#v8, 1000, 95, 11, 8, 0) ; volume 8 ImageGadget(#v9, 1000, 123, 11, 8, 0) ; volume 9 ImageGadget(#v10, 1000, 145, 11, 8, 0) ; volume 10 ImageGadget(#vol_0, 2840, 67, 80, 80, ImageID(#vol_0)) ; #vol_0 ImageGadget(#vol_1, 2840, 67, 80, 80, ImageID(#vol_1)) ; #vol_1 ImageGadget(#vol_2, 2840, 67, 80, 80, ImageID(#vol_2)) ; #vol_2 ImageGadget(#vol_3, 2840, 67, 80, 80, ImageID(#vol_3)) ; #vol_3 ImageGadget(#vol_4, 2840, 67, 80, 80, ImageID(#vol_4)) ; #vol_4 ImageGadget(#vol_5, 2840, 67, 80, 80, ImageID(#vol_5)) ; #vol_5 ImageGadget(#vol_6, 2840, 67, 80, 80, ImageID(#vol_6)) ; #vol_6 ImageGadget(#vol_7, 2840, 67, 80, 80, ImageID(#vol_7)) ; #vol_7 ImageGadget(#vol_8, 2840, 67, 80, 80, ImageID(#vol_8)) ; #vol_8 ImageGadget(#vol_9, 2840, 67, 80, 80, ImageID(#vol_9)) ; #vol_9 ImageGadget(#vol_10,2840, 67, 80, 80, ImageID(#vol_10)) ; #vol_10 EnableWindowDrop(#Window_0, #PB_Drop_Files, #PB_Drag_Link) ;}------------------------------------------------------ ;{--------------Окно плейлиста------------------------------------------------ x= WindowX(#Window_0)+0 y= WindowY(#Window_0)+204 If OpenWindow (#Window_2,x,y,400,0, "Плейлист", #PB_Window_BorderLess|#PB_Window_Invisible) SetWinBackgroundImage(WindowID(#Window_2),ImageID(#fon_plist)) TextGadget(#Text_1,22,90,358,15,"Название",#PB_Text_Center) SetGadgetColor(#Text_1, #PB_Gadget_FrontColor, RGB(102,103,103)) ; текст SetGadgetColor(#Text_1, #PB_Gadget_BackColor, RGB(25,25,25)) ; фон RGB(9, 93, 197) SetGadgetFont (#Text_1, FontID(#Font_1)) ContainerGadget(#Cont_1,22,106,358,254) ; mp3 ; #Cont_1,8,92,234,300 ListViewGadget(#Play_ListMP3, -2, -2, 385, 274) SetGadgetColor(#Play_ListMP3,#PB_Gadget_FrontColor,RGB(95, 95, 95)) SetGadgetColor(#Play_ListMP3,#PB_Gadget_BackColor, RGB(25, 25, 25)) CloseGadgetList() ImageGadget(#bg_pl, 64, 21, 273, 12, ImageID(#bg_pl)) ; индикатор ImageGadget(#ind_pl, 24, 11, 352, 49, ImageID(#ind_pl)) ; индикатор ImageGadget(#bar, 30, 68, 340, 2, ImageID(#bar)) ; трек бар ;-----Чтение пути----------------- If OpenPreferences("imf.pcs") Rep.s = ReadPreferenceString("Путь", "Нет") Poz.s = ReadPreferenceString("Позиция", "Нет") ClosePreferences() EndIf SongPlaying = Val(Poz.s) Direct() EnableWindowDrop(#Window_2, #PB_Drop_Files, #PB_Drag_Link) 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,@Indikator()) HideWindow(#Window_0,0) ;{-----------------Главный цикл------------------------- Repeat Event = WaitWindowEvent() Window = EventWindow() Gadget = EventGadget() mx.l = WindowMouseX(#Window_0) ; координаты x my.l = WindowMouseY(#Window_0) ; координаты y ;----перетягивание------------------------ 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 ;-------------------курсор включить------------------- If ((mx > 335 And mx < 349) And (my > 0 And my < 7)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука SetGadgetState(#wkl,ImageID(#wkl)) Else SetGadgetState(#wkl,0) EndIf ;-------------------курсор скрыть------------------- If ((mx > 353 And mx < 367) And (my > 0 And my < 7)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука SetGadgetState(#skr,ImageID(#wkl)) Else SetGadgetState(#skr,0) EndIf ;--------------------курсор закрыть программу---------- If ((mx > 370 And mx < 387) And (my > 2 And my < 7)) SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука SetGadgetState(#clos,ImageID(#wkl)) Else SetGadgetState(#clos,0) EndIf ;----------------переключение треков-------------------- If BASS_ChannelIsActive(Handle) ; если канал активен Else If PlayAll=1 SongPlaying = GetGadgetState(#Play_ListMP3)+ 1 If SongPlaying < NbSongs SetGadgetState(#Play_ListMP3, SongPlaying ) Play() EndIf EndIf EndIf Select Event ;///////////////перетягивание файла в окно программы////////// Case #PB_Event_WindowDrop f.s=EventDropFiles() Rep.s = f.s Direct() ;---Совпадение #Play_ListMP3 и открываемого файла------------------- Nasd.s= GetFilePart(f.s) ; извлекаем имя For n=0 To 1000 SetGadgetState(#Play_ListMP3, n) If Nasd.s =GetGadgetText(#Play_ListMP3) SetGadgetState(#Play_ListMP3, n) Break EndIf Next ;------------------------------------------------------- Play() ;///////////////////////////////////////////////////////////////// Case #WM_LBUTTONDBLCLK ; обработка события на двойной клик If Gadget = #Play_ListMP3 ; MP3 Play() SetGadgetState(#play,0) Pausa=0 EndIf ;----------------------------------------------------- Case #WM_RBUTTONUP ; нажата правая кнопка ;man = man ! 1 If wkl=1 min = min ! 1 Animate_Gadget() ; анимированное появление плейлиста EndIf ;----------------------------------------------------- Case #PB_Event_Gadget Select EventGadget() Case #kn_mp3 If EventType()=#PB_EventType_LeftClick SetGadgetState(#mp3,ImageID(#mp3)) SetGadgetState(#fm, 0) SetGadgetState(#open,0) SetGadgetState(#play,0) 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 ;-------------------------------------------------------- Play() EndIf Case #kn_fm SetGadgetState(#mp3, 0) SetGadgetState(#fm,ImageID(#fm)) SetGadgetState(#open,0) SetGadgetState(#play,0) Case #kn_open SetGadgetState(#mp3, 0) SetGadgetState(#fm, 0) SetGadgetState(#open,ImageID(#open)) SetGadgetState(#play,0) min = min ! 1 Animate_Gadget() ; анимированное появление плейлиста Case #kn_play SetGadgetState(#mp3, 0) SetGadgetState(#fm, 0) SetGadgetState(#open,0) SetGadgetState(#play,ImageID(#play)) Pausa = Pausa ! 1 If Pausa BASS_ChannelPause(Handle) Else BASS_ChannelPlay(Handle,0) SetGadgetState(#play,0) If mp3=1 SetGadgetState(#mp3,ImageID(#mp3)) Else SetGadgetState(#mp3,0) EndIf EndIf Case #wkl If EventType()=#PB_EventType_LeftClick wkl=wkl ! 1 If wkl=1 ; включить xx=1000 xL=5 yL=5 xR=5 yR=5 ;--------------------------------------------------------- ResizeGadget(#kn_mp3, #PB_Ignore,76,#PB_Ignore,#PB_Ignore) ResizeGadget(#kn_fm, #PB_Ignore,76,#PB_Ignore,#PB_Ignore) ResizeGadget(#kn_open,#PB_Ignore,76,#PB_Ignore,#PB_Ignore) ResizeGadget(#kn_play,#PB_Ignore,76,#PB_Ignore,#PB_Ignore) ;--------------------------------------------------------- ResizeGadget(#v0, 271,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v1, 253,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v2, 250,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v3, 260,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v4, 283,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v5, 316,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v6, 350,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v7, 372,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v8, 379,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v9, 375,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v10,361,#PB_Ignore,#PB_Ignore,#PB_Ignore) Resize(#vol_5,#v5) ;------------------------------------------------------- Else ; выключить PlayAll=0 xx=0 xL=3 yL=3 xR=3 yR=3 ;----------------------------------------------------------- ResizeGadget(#kn_mp3, #PB_Ignore,1000,#PB_Ignore,#PB_Ignore) ResizeGadget(#kn_fm, #PB_Ignore,1000,#PB_Ignore,#PB_Ignore) ResizeGadget(#kn_open,#PB_Ignore,1000,#PB_Ignore,#PB_Ignore) ResizeGadget(#kn_play,#PB_Ignore,1000,#PB_Ignore,#PB_Ignore) ;----------------------------------------------------------- ResizeGadget(#v0, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v1, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v2, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v3, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v4, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v5, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v6, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v7, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v8, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v9, 1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ResizeGadget(#v10,1000,#PB_Ignore,#PB_Ignore,#PB_Ignore) ;------------------------------------------------------- If min =1 For i=384 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 min =0 ;------------------------------------------------------- SetGadgetState(#mp3, 0) SetGadgetState(#fm, 0) SetGadgetState(#open,0) SetGadgetState(#play,0) BASS_ChannelStop(Handle) EndIf EndIf Case #skr ; скрыть If EventType()=#PB_EventType_LeftClick ShowWindow_(WindowID(#Window_0),#SW_MINIMIZE) EndIf Case #clos ; выйти ;----Запись параметров перед выходом----------- OpenPreferences("imf.pcs") WritePreferenceString("Путь",Rep.s) WritePreferenceString("Позиция",Str(GetGadgetState(#Play_ListMP3))) ClosePreferences() ;--------------------------------------------- Break Case #v0 volume=0 Resize(#vol_0,#v0) Case #v1 volume=0.1 Resize(#vol_1,#v1) Case #v2 volume=0.2 Resize(#vol_2,#v2) Case #v3 volume=0.3 Resize(#vol_3,#v3) Case #v4 volume=0.4 Resize(#vol_4,#v4) Case #v5 volume=0.5 Resize(#vol_5,#v5) Case #v6 volume=0.6 Resize(#vol_6,#v6) Case #v7 volume=0.7 Resize(#vol_7,#v7) Case #v8 volume=0.8 Resize(#vol_8,#v8) Case #v9 volume=0.9 Resize(#vol_9,#v9) Case #v10 volume=1 Resize(#vol_10,#v10) Case #bar ; управление трек баром x=WindowMouseX(#Window_2) ;Возвращает X координату положения курсора мыши во внутренней области окна cx=x-GadgetX(#bar) ;GadgetX(289)-Возвращает координату X указанного #Gadget pos=cx*((len)/340) ; 340 - длина бара (pos меняет значение от 0 до len ) BASS_ChannelSetPosition(Handle, pos, #BASS_POS_BYTE) EndSelect EndSelect EventButton1(Event, Gadget, Type, ImageGadget) EventButton2(Event, Gadget, Type, ImageGadget) EventButton3(Event, Gadget, Type, ImageGadget) EventButton4(Event, Gadget, Type, ImageGadget) HAND(Event, Gadget, Type, ImageGadget) If Event = #PB_Event_CloseWindow Break EndIf ForEver ;}------------------------------------------------------- DataSection Im1: IncludeBinary "стрелочный-индикатор-2.png" ; индикатор Im1End: Im2: IncludeBinary "hhh-2.png" ; индикатор Im2End: Im3: IncludeBinary "22_06_04.png" ; фон Im3End: Im4: IncludeBinary "кнопка.png" ; кнопка нажата Im4End: Im5: IncludeBinary "mp3.png" ; надпись mp3 Im5End: Im6: IncludeBinary "fm.png" ; надпись fm Im6End: Im7: IncludeBinary "открыть.png" ; надпись open Im7End: Im8: IncludeBinary "играть.png" ; надпись play Im8End: Im9: IncludeBinary "вкл.png" ; включить Im9End: Im10: IncludeBinary "индикатор-серый.png" ; индикатор Im10End: ;----------громкость цифры--------------------- Im11: IncludeBinary "1.png" Im11End: Im12: IncludeBinary "2.png" Im12End: Im13: IncludeBinary "3.png" Im13End: Im14: IncludeBinary "4.png" Im14End: Im15: IncludeBinary "5.png" Im15End: Im16: IncludeBinary "6.png" Im16End: Im17: IncludeBinary "7.png" Im17End: Im18: IncludeBinary "8.png" Im18End: Im19: IncludeBinary "9.png" Im19End: Im20: IncludeBinary "10.png" Im20End: Im21: IncludeBinary "0.png" Im21End: ;----------громкость ручка--------------------- Im22: IncludeBinary "vol-0.png" Im22End: Im23: IncludeBinary "vol-1.png" Im23End: Im24: IncludeBinary "vol-2.png" Im24End: Im25: IncludeBinary "vol-3.png" Im25End: Im26: IncludeBinary "vol-4.png" Im26End: Im27: IncludeBinary "vol-5.png" Im27End: Im28: IncludeBinary "vol-6.png" Im28End: Im29: IncludeBinary "vol-7.png" Im29End: Im30: IncludeBinary "vol-8.png" Im30End: Im31: IncludeBinary "vol-9.png" Im31End: Im32: IncludeBinary "vol-10.png" Im32End: ;-------------------------------------------------- Im33: IncludeBinary "плейлист.png" ; фон плейлиста Im33End: Im34: IncludeBinary "индикатор-плейлиста.png" ; индикатор плейлиста Im34End: Im35: IncludeBinary "фон-бег-строки.png" ; фон бегущей строки Im35End: 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>