12.06.2013 Views

1 - Amiga Magazine Online

1 - Amiga Magazine Online

1 - Amiga Magazine Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Colour(primo piano, sfondo=O)<br />

che imposta i colori di primopiano e di sfondo per tutte<br />

le funzioni che non hanno un parametro colore esplicito,<br />

come per esempio la TextF( ). I parametri devono indica-<br />

re il numero di registro colore che si intende utilizzare, il<br />

cui valore è limitato dal tipo di schermo su cui si opera.<br />

Per finire, è possibile cambiare la rastport di disegno con<br />

la funzione:<br />

vecchia := SetStdRast(nuova)<br />

che imposta stdmst a nuova, e al tempo stesso ritorna il<br />

vecchio valore. nuova deve essere una RastPort valida,<br />

che puo essere ottenuta dal campo rastport di uno scher-<br />

mo o dal campo vport di una finestra.<br />

Nel listato 1 potete vedere un semplice esempio di uso<br />

di queste funzioni, che mette a frutto quanto abbiamo<br />

già appreso riguardo alla ricorsione;per inciso, notate co-<br />

me tutti i triangoli siano disegnati da Box( ), che traccia<br />

soltanto rettangoli!<br />

PROC main()<br />

DEF s<br />

IF s:=0penS(640,512,1,$8004,'Schenno di E')<br />

ric1(60,20,240)<br />

Delay(500)<br />

CloseS ( s )<br />

ENDIF<br />

ENDPROC<br />

PROC ricl(x,y,len)<br />

IF len>O<br />

Box(x,y,x+len,y+len)<br />

ricl(x+len,y,len/Z)<br />

ricl(x+len,y+len,len/Z)<br />

ricl(x,y+len,len/2)<br />

ENDIF<br />

ENDPROC<br />

Gadget e altro<br />

Abbiamo visto che la OpenW( ) ha fra i suoi parametri<br />

un puntatore a una lista di gadget. Questa lista può esse-<br />

re costruita "a mano", come era d'uso con 1'<strong>Amiga</strong>OS 1.3,<br />

compilando le strutture gadget di Intuition, oppure trami-<br />

te il ricorso alla gadtools.library o ad altre librerie analo-<br />

ghe, non ultima la "EasyGUI" di E, di cui parleremo in<br />

futuro.<br />

Per evitare queste complicazioni, E offre la funzione<br />

Gadget( ), i cui parametri sono i seguenti:<br />

nuovobuf:=Gadget( precbuf, buffer, id,<br />

tipo, x, Y,<br />

larghezza, testo )<br />

i parametri precbuf e buffer servono alla funzione per<br />

costruire la lista di gadget, e vedremo fra poco un esem-<br />

pio del loro uso; basterà dire che il buffer allocato deve<br />

avere dimensione pari al prodotto del numero di gadget<br />

che si intendono allocare per la costante predefinita<br />

GADGETSIZE. L'id è semplicemente un identificatore nu-<br />

merico che serve a riconoscere il gadget, mentre tipo in-<br />

dica (appunto) il tipo di di gadget: O indica un normale<br />

"pulsante", 1 indica un pulsante booleano e 3 un pulsan-<br />

te booleano selezionato. Come già per le altre funzioni, x<br />

e y indicano le coordinate del gadget, relative alla fine-<br />

stra, e 1ar;ghezza deve essere sufficiente a contenere il te-<br />

sto indicato.<br />

Purtroppo, la funzione Gadget( ) può soltanto creare p~il-<br />

santi (i cosiddetti "button gadget"), ma nessuno degli altri<br />

tipi ormai familiari (liste, "radio button", "checkmark",<br />

ecc.). inoltre, i gadget creati sono particolarmente brutti,<br />

e non esibiscono il look 3D che caratterizza tutto l'Ami-<br />

gaOS dalla versione 2: in altre parole, è bene usare la<br />

Gadget( ) soltanto in utility estremamente semplici, o a<br />

scopo personale, preferendo l'uso della gadtools.library o<br />

di una delle sue equivalenti per programmi destinati a<br />

una piti ampia diffusione.<br />

Ed eccoci finalmente alla ricezione e interpretazione dei<br />

messaggi di Intuition, richiesti tramite i flag IDCMP della<br />

finestra. La funzione più interessante che E mette a di-<br />

sposizione a questo riguardo è:<br />

che preleva un messaggio, sospendendo l'applicazione<br />

finché esso non arriva. Ciascun messaggio trasporta quat-<br />

tro informazioni fondamentali, dette classe (class), codice<br />

(code), qualficatore (qualifier) e indirizzo (address). La<br />

classe indica il tipo di evento che si è verificato, e corri-<br />

sponde ai jlag IDCMP; spesso la sola classe è sufficiente

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!