Code : Tout sélectionner
NbCDDrives = InitAudioCD()
If NbCDDrives = 0
MessageRequester("Error", "No CD Audio drives found...", 0)
End
EndIf
Global Null$
Procedure.s GetHourFormat(LengthInSeconds)
Minutes = LengthInSeconds/60
Seconds = LengthInSeconds-Minutes*60
If Seconds < 10 : Null$ = "0" : Else : Null$ = "" : EndIf
ProcedureReturn Str(Minutes)+":"+Null$+Str(Seconds)
EndProcedure
; Initialize constants for easier code reading
;
#GADGET_Play = 0
#GADGET_Stop = 1
#GADGET_Eject = 2
#GADGET_Close = 3
#GADGET_Select = 4
#GADGET_Status = 5
#GADGET_Time = 6
#GADGET_AudioCDDrive = 7
#GADGET_SelectDrive = 8
If OpenWindow(0, 100, 200, 265, 144, "PureBasic - AudioCD Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ButtonGadget (#GADGET_Play , 10, 10, 60 , 24, "Play")
ButtonGadget (#GADGET_Stop , 70, 10, 60 , 24, "Stop")
ButtonGadget (#GADGET_Eject , 130, 10, 60 , 24, "Ouvrir")
ButtonGadget (#GADGET_Close , 190, 10, 60 , 24, "Fermer")
ComboBoxGadget(#GADGET_Select , 10, 43, 240, 400)
TextGadget (#GADGET_Status , 10, 70, 180, 16, "Status: stopped")
TrackBarGadget(#GADGET_Time , 10, 110, 240, 30, 0,100)
TextGadget (#GADGET_AudioCDDrive, 10, 94, 140, 24, "Select the CD-Audio drive :")
ComboBoxGadget(#GADGET_SelectDrive , 150, 90, 40, 200)
For k=1 To NbCDDrives
UseAudioCD(k-1)
AddGadgetItem(#GADGET_SelectDrive, -1, Left(AudioCDName(),2))
Next
SetGadgetState(#GADGET_SelectDrive, 0)
UseAudioCD(0)
If NbCDDrives = 1
DisableGadget(#GADGET_SelectDrive, 1)
EndIf
EndIf
Gosub RefreshCD
Repeat
Repeat
EventID = WindowEvent() ; This time we use the WindowEvent(), non-blocking command to allow time refreshing
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #GADGET_Play
CurrentTrack = GetGadgetState(4)+1
PlayAudioCD(CurrentTrack, CurrentTrack)
Case #GADGET_Stop
StopAudioCD()
Case #GADGET_Eject
EjectAudioCD(1)
Case #GADGET_Close
EjectAudioCD(0)
Case #GADGET_SelectDrive
UseAudioCD(GetGadgetState(#GADGET_SelectDrive))
Gosub RefreshCD
EndSelect
ElseIf EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit=1
Delay(20) ; Wait 20 ms, which is a long period for the processor, to don't steal the whole CPU power
; for our little application :)
CurrentTrack = AudioCDStatus()
If CurrentTrack > 0
SetGadgetText(#GADGET_Status, "Playing Track "+Str(CurrentTrack)+" (Length: "+GetHourFormat(AudioCDTrackLength(CurrentTrack))+")")
SetGadgetText(#GADGET_Time, "Time: "+GetHourFormat(AudioCDTrackSeconds()))
DisableGadget(#GADGET_Play, 1)
DisableGadget(#GADGET_Stop, 0)
DisableGadget(#GADGET_Select, 0)
Else
SetGadgetText(#GADGET_Status, "Status: Stopped")
SetGadgetText(#GADGET_Time, "")
DisableGadget(#GADGET_Play, 0)
DisableGadget(#GADGET_Stop, 1)
If CurrentTrack = -1 ; CD Drive not ready
DisableGadget(#GADGET_Select, 1)
Else
DisableGadget(#GADGET_Select, 0)
EndIf
EndIf
Until Quit = 1
EndIf
For k=0 To NbCDDrives-1 ; Stop all the CD drives, if some are playing together
UseAudioCD(k)
StopAudioCD()
Next
End
;-----------------------------------------------------------------
; SubRoutines
;
RefreshCD:
ClearGadgetItemList(#GADGET_Select)
NbAudioTracks = AudioCDTracks()
For k=1 To NbAudioTracks
AddGadgetItem(#GADGET_Select, -1, "Track "+Str(k))
Next
SetGadgetState(#GADGET_Select, 0)
Return
La lecture de la Doc est trés importante, alors il ne faut pas courrir pour écrire un code.