Con il seguente codice guidato imparerete
a fare questo: (c'è icon error perchè non avevo icone adatte)
;=======Inizio codice
;Costruzione dialog
dialog mp3 {
title "Mp3 Player"
size -1 -1 267 179
option pixels
text "00:00", 1, 0 4 66 32, center
list 2, 66 2 201 35, size
list 3, -1 38 268 100, size
text "Nessun file in esecuzione", 4, 0 139 266
16, center
list 5, -1 156 269 24, size
}
on *:dialog:mp3:*:*:{
if $devent == init {
;Mdx init
mdx SetMircVersion $version
mdx MarkDialog $dname
;Settaggio font
mdx SetFont 1 25 800 Verdana
mdx SetFont 4 13 600 Verdana
;Creazione Trackbar
mdx SetControlMDX $dname 5 TrackBar
> $bars
did -i $dname 5 1 params 0 0 100000
* * * * 16
;Creazione toolbar
mdx SetControlMDX $dname 2 ToolBar
list arrows flat wrap nodivider > bars.mdx
did -i $dname 2 1 bmpsize 32 32
did -i $dname 2 1 setimage icon
large play.ico ;Sostituite con le vostre icone
did -i $dname 2 1 setimage icon
large pause.ico
did -i $dname 2 1 setimage icon
large stop.ico
did -i $dname 2 1 setimage icon
large load.ico
did -a $dname 2 -
did -a $dname 2 +a 1 $chr(9) $+
Ascolta la canzone
did -a $dname 2 +a 2 $chr(9) $+
Mette in pausa la canzone
did -a $dname 2 +a 3 $chr(9) $+
Ferma la canzone
did -a $dname 2 -
did -a $dname 2 +a 4 $chr(9) $+
Carica directory
loadir ;Carica la directory
%path
mdx SetBorderStyle 2,5 ;Toglie
i bordi a toolbar e trackbar
}
if $devent == sclick {
if $did == 2 { ;Se
l'utente preme sul secondo ID (la toolbar)
var %d = $calc($did(2).sel
- 2) ;Escludiamo la prima riga (è quella per il caricamento
della bars.mdx) e la seconda (è il separatore)
if %d == 1 && $did(3).sel
{ ;Primo pulsante
if !$insong
{ ;Se non vi è nessuna canzone in esecuzione fa partire
quella selezionata nella lista ID 3
splay
-p %path $+ $did(3).seltext
.timermp3pos
-o 0 1 mp3pos
}
else { splay
-p resume } ;Altrimenti, se era stata messa la pausa,
riprende la canzone
}
if %d == 2 && !$insong.pause
{ splay -p pause } ;(Secondo pulsante) Mette la canzone
in pausa
if %d == 3 && $insong
{ ;(Terzo pulsante) Ferma la canzone in esecuzione
splay
-p stop
.timermp3pos
off
did -ra
mp3 1 00:00
did -ra
mp3 4 Nessun file in esecuzione
}
if %d == 5 { set %path
$sdir($iif(%path,$v1,$mircdir),Scegli la directory con i
file mp3) | loadir } ;(Quarto pulsante) Seleziona
la directory
}
if $did == 5 { splay -p $insong.fname
$gettok($did(5).seltext,1,32) } ;Premendo sulla trackbar
si "seeka" nella canzone in ascolto
}
}
;Alias per il caricamento della directory tramite
listfiles.dll
alias loadir {
var %var = $shortfn(mp3.txt)
if $isfile(%var) { .remove %var }
else { write %var }
var %l = listfiles.dll
var %u = $dll(%l,setoutput,) $dll(%l,listfiles,
af > $mircdirmp3.txt > %path > *.mp3 > 0 ) ;Qui facciamo
una lista dei file .mp3 presenti in %path
did -r mp3 3
if $lines(%var) { loadbuf $lines(%var) -o mp3
3 %var } ;Qui carichiamo la lista mp3 sulla list
}
;Alias che sposta gli indicatori di posizione e determina
la canzone in ascolto
alias mp3pos {
;Questo alias, se la dialog è aperta, riporta i dati
di avanzamento.
if !$dialog(mp3) { halt }
did -ra mp3 1 $asctime($calc($insong.pos / 1000)
,nn:ss) ;Avanzamento in numeri
did -ra mp3 4 $nopath($insong.fname) ;
Nome canzone in ascolto
did -i mp3 5 1 params $insong.pos 0 $insong.length
* * * * 16 ;Avanzamento sulla trackbar
}
;=======Fine codice
Ricordatevi di eliminare ogni riga di commento (quelle con
il ";", ";" compreso).
"mdx" è un alias che sostituisce "dll mdx.dll"
Questo è tutto. Se avete dubbi o problemi contattatemi.
A I R U S
|