intanto vi spiego semplicemente che cos'è una GUI, essa è semplicemente composta da una o piu finestre, ciascuna delle quali contiene una o più controlli.
la spiegazione è molto semplice ma precisa.
su autoit è abbastanza semplice creare una gui.
le gui possono contenere:
label: semplice testo
button: pulsanti semplici
input: caselle di testo dove si possono inserire dei dati
edit: simili alle input, su queste si puo pero inserire qualcosa su piu righe
checkbox: una casella che puo essere selezionata o deselezionata
radio: casella circolare che puo essere selezionata o deselezionata (solo una tra tutte puo essere scelta)
combo: lista di oggetti tutti raggruppati in una casella
list: elenco di oggetti non raggruppati
date: fornisce la data del giorno
pic: contiene un'immagine
icon: si puo inserire un'icona
progress: una barra con senato un progresso
tab: gruppo di controlli che possono cambiare a seconda della "linguetta" che si seleziona (per esempio nelle proprietà del desktop il modo in cui ci si sposta, per esempio, da desktop a screen saver)
updown: piccola casela in cui si puo selezionare un numero (per esempio quando si seleziona la dimensione di un carattere)
avi: si puo inserire un videoclip in formato AVI
menu: menu in cima alla gui (esempio: il menu che permette di salvare, aprire, ecc su notepad)
treeview: apertura di cartelle con simboli + e - (esempio: modalità esplora)
oltre a questi ce ne sono ancora 2 o 3 che però sono ancora piu complicati, quindi per ora ci limiteremo a questi.
Come creare una GUI
- Codice:
-
#include <GUIConstants.au3>
GUICreate("My GUI")
GUISetState (@SW_SHOW)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
notate che viene incluso il file guiconstants.au3, indispensabile per l'esecuizione della GUI.
viene usata poi l'istruzione guicreate, che serve per creare la gui vera e propria, i parametri richiesti sono solo il titolo della GUI, ma se volete potrete anche determinare l'altezza e la lunghezza della gui.
notate poi il ciclo while, quello dovrete lasciarlo cosi, se togliete quel ciclo la gui non potrà esistere, in poche parole serve per verificare che la richiesta della gui sia attiva (ovvero la gui esiste finche non viene premuto il pulsante chiudi [X].
i pulsanti
per creare un pulsante in una gui basta l'istruzione
guictrlcreatebutton ('testo nel pulsante', coordinate x e y, altezza, lunghezza)
in questo modo verrà creata una guicon il nostro pulsante, collocato nella posizione che abbiamo deciso.
vediamo ora un'esempio di pulsante:
- Codice:
-
#include <GUIConstants.au3>
GUICreate("pulsanti")
GUISetState (@SW_SHOW)
$button = guictrlcreatebutton ('esegui notepad', 100, 130)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
select
case $msg = $button
run ('notepad.exe')
endselect
Wend
notate che è stato creato un pulsante e che gli è stata assegnata la variabile $button.
nel ciclo while ho aggiunto un select, seguito da case e endselect; queste tre operazioni funzionano un po'come if, elseif e endif, quindi si potrebbe leggere cosi:
se la variabile $msg è uguale alla variabile $button allora esegui notepad.
avrete capito che la variabile $msg viene utilizzata per decretare la scelta eseguita dal'utente, e in base a essa esegue delle operazioni, abbastanza chiaro?
l'unico problema forse è determinare le coordinate del pulsante e degli altri oggetti, fate come me, ho un metodo infallibile: provo a caso finche non trovo la posizione che voglio...
andiamo avanti con gli studi delle gui...
impariamo a inserire un'avi.
per inserire un'avi dobbiamo usare:
guictrlcreateavi ('percorso del file avi compreso il nome.avi, subfileid, coordinate x e y)
forse non saprete cos'è il subfileid, poco male, io ne ho solo una vaga idea, è semplicemente il numero di identificazione del videoclip se nel file selezionato ci sono piu video, giusto per complicarci un po'la vita... serve solo se il video da caricare si trova, per esempio, in file .dll, se invece volete aprire un normale .avi allora dove vi chiede il subfile id inserite -1, il resto è abbastanza semplice, vi chiede percorso del file e coordinate...
vediamo un'esempio pratico:
- Codice:
-
#include <GUIConstants.au3>
GUICreate ("animazione",300,200)
GUISetState (@SW_SHOW)
$ani1 = GUICtrlCreateAvi (@SystemDir & "\shell32.dll",150, 50,10)
$buttonstart = GUICtrlCreateButton ("start",50,150,70,22)
$buttonstop = GUICtrlCreateButton ("stop",150,150,70,22)
While 1
$msg = GUIGetMsg()
Select
case $msg = $GUI_EVENT_CLOSE
ExitLoop
case $msg = $buttonstart
GUICtrlSetState ($ani1, 1)
case $msg = $buttonstop
GUICtrlSetState ($ani1, 0)
EndSelect
Wend
allora, viene creata l'animazione che verrà presa dalla shell32.dll nella cartella system32, il clip preso è quello della torcia che illumina la cartella... in questo script c'è pure un modo per far partire e stoppare l'avi, infatti sono stati creati due pulsanti, uno per farlo partire e l'altro per farlo fermare; gli sono state assegnate due variabili e nel ciclo select viene fatto in modo che se viene premuto il pulsante start viene inpostato il valore 1 (esegue) a $ani1 (ovvero la variabile assegnata a guictrlcreateavi), se viene premuto stop allora inposta il valore 0 (ferma) a $ani1, tutto cio grazie a GUICtrlSetState che permette di settare il valore di un'oggetto della gui.
tutto ok?
vediamo ancora qualcosina di piu semplice, come le label, che sono statiche e quindi non si fa un grande sforzo a metterle:
le label
per inserire una label basta mettere:
guictrlcreatelabel ('testo della label, coordinate x e y)
niente di difficile, vero?
ora facciamo una vera gui...
- Codice:
-
#include <GUIConstants.au3>
GUICreate ("label")
guictrlcreaelabel ('questa è una label...', 100, 300)
GUISetState (@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
Wend
semplice...
usiamo ora le input, tramite
guictrlcreateinput ('testo nella input lascia vuoto se la vuoi lasciare vuota, coordinaet x e y)
semplice
- Codice:
-
#include <GUIConstants.au3>
GUICreate ('input')
GUISetState (@SW_SHOW)
$input = guictrlcreateinput('', 100, 121)
$button = guictrlcreatebutton ('click qui', 1,1)
While 1
$msg = GUIGetMsg()
Select
case $msg = $GUI_EVENT_CLOSE
ExitLoop
case $msg = $button
msgbox (0, '', guictrlread ($input))
endselect
Wend
allora, viene creata una input e un pulsante, se viene permuto il pulsante, tramite guictrlread si puo "catturare" il testo della input e in questo caso della input a cui è stato assegnata la variabile $input, quindi ho creato una messagebox con testo il testo della input.
so che non sono il massimo nell'esprimermi, quindi se non capite qualcosa non esitate a chiedermi in questo topic, ok?
se avete capito tutti scrivetelo che cosi posso procedere con delle altre spiegazioni...
ciao
darkjoker