Iniziamo a parlare di cose più serie, oggi creeremo una finestra!
Per creare una finestra, bisogna fare una semplice chiamata alla funzione CreateWindow!
NON E’ TUTTO!
CreateWindow richiede dei parametri!
Il primo rappresenta la “classe di finestra” da creare… Come vedremo, esistono delle classi gia predefinite, come per esempio i pulsanti(button). Questa classe di finestra di solito è connessa ad una “procedura di finestra” chiamata anche “WINDOW PROCEDURE”. Questa procedura serve a processare gli eventi che arrivano alla finestra e la vedremo in dettaglio tra poco.
Facciamo quindi una panoramica sull’architettura di Windows..
Uno sguardo all’architettura di Windows
Di
solito cosa potrebbe essere per noi una finestra? Beh semplicemente
potrebbe essere quella che abbiamo in casa nostra
ma parlando per
una volta seriamente, immaginiamo di avere un contenitore principale!
Di solito contiene un titolo, un icona a fianco, e quei pulsanti di
riduzione e chiusura, e che… possiamo spostare. A
volte contiene anche un menù.. altre volte no.. Anche
le finestre di dialogo sono finestre.
Le
finestre a sua volta contengono le caselle di testo, I pulsanti…
Anche queste… SONO FINESTRE!
Più in dettaglio sono FINESTRE
FIGLIE(Child
Windows), i comuni controlli che troviamo
nelle applicazioni.
L’
utente vede queste finestre come oggetti sullo schermo e interagisce
direttamente con loro usando la tastiera o il mouse. La finestra(cioè
contenitore e widgets vari)
riceve l’input dell’utente sotto forma di MESSAGGI.
Una finestra può
inviare messaggi anche ad altre finestre!
Capire come usarli, è importante per imparare a scrivere
applicazioni Windows.
Facendo
un esempio fesso; come sai, molti programmi a finestre, hanno un
bordo che può essere ridimensionato. Quando cambi la
dimensione della finestra il programma risponde ridimensionando ed
adattando gli elementi al suo interno.
Questo
perché Windows infatti SA
di quello che succede, infatti, è lui ad inviare i messaggi
alla finestra indicando il ridimensionato, e il programma a questa
risposta ridimensiona la finestra e adatta il contenuto. (Vabbe
vabbe… Manco io ci ho capito un accidente di questo… Per ora!)
-
Cosa potrebbe significare?
- Come può un sistema
operativo inviare messaggi ad un programma?
Quando
io dico che Windows invia messaggi ad un programma, intendo dire che
Windows chiama una funzione nel programma, una funzione scritta da
te!.. E che è una parte essenziale del programma. I parametri
di questa funzione descrivono un particolare messaggio inviato da
Windows e ricevuto dal tuo programma. Questa funzione è
conosciuta come la WINDOW
PROCEDURE(Ascoltatore di finestra, nà
cosa simile).
AHHH
Finalmente si capisce una mezza cosa!
Ad
ogni finestra che un programma può creare, è associata
una WINDOW PROCEDURE. Questa funzione puoi scriverla nel tuo
programma o anche in una DLL separata; quindi, per ricapitalore:
Windows invia messaggi alla finestra chiamando la Window Procedure,
la funzione sempre menzionata elabora e processa il messaggio(in base
al tipo di evento farà qualcosa), infine ritorna il controllo
a Windows!
CAPITO?
Abbiamo
accennato poco fa che ogni finestra è sempre creata in base ad
una sua classe.
Qquesta classe di finestra
identifica la sua WINDOW PROCEDURE
che processa i messaggi che ci arrivano… L’uso della classe di
finestra(WINDOW CLASS)
permette anche di creare più istanze della stessa finestra che
a sua volta usano la stessa WINDOW PROCEDURE!
CHE
FIGATA!
Per
esempio, tutti i pulsanti in tutti i programmi di Windows sono basati
su una classe di finestra(Quei button che clicchiamo, abbiamo detto
che anche loro sono finestre!). Avendo fatto la corrispondenza che ad
una classe di finestra(WINDOW CLASS) corrisponde una WINDOW
PROCEDURE, nei bottoni la WINDOW PROCEDURE è locata
in una DLL particolare di Windows che processa i messaggi di tutti i
pulsanti.
Spesso
i messaggi che arrivano alla WINDOW PROCEDURE sono input da
tastiera o da mouse. Per esempio, consideriamo un pulsante e
premiamolo; Windows riconosce che il pulsante è stato ciccato.
Altri messaggi dicono ad una finestra che inizia un ridimensionamento
o quando la finestra deve essere ridisegnata.
Quando
un programma Windows inizia la sua esecuzione, Windows crea per lui
una coda di messaggi in cui può immagazzinare i messaggi che
arrivano alla finestra. Di solito un normale programma Windows
include un piccolo pezzo di codice chiamato MESSAGE
LOOP che
preleva i messaggi dalla coda, li traduce e li invia alla WINDOW
PROCEDURE…
Altri messaggi sono inviati direttamente alla Window Procedure senza
essere messi nella coda di messaggi. Tutto
comincia a prendere forma!
E nella prossima puntata vedrete…
