Radio BASS Scaler
MP3 плеер, с использованием библиотеки
Bass.dll
Стрелочный индикатор уровня сигнала
Скачать архив
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 xLdR
yR=xR-(xR*xR)/100
dL=xL
xL=xL+1
ElseIf xR=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