Le API: Riferimenti ad oggetti e a periferiche, puntatori e flags
Come si può indicare al sistema o in modo indiretto all'applicazione a quale
oggetto riferirsi? Con un riferimento ad un oggetto, cosiddetto handle dell'oggetto.
Le API utilizzano tali riferimenti per tenere una mappa di tutti gli oggetti
presenti nel progetto (ma non solo). In realtà ogni oggetto presente sullo schermo anche non in
fase di progettazione ha un numero di riferimento. E ciò rappresenta per un programmatore l'unica possibilità di gestire
e manipolare gli oggetti nonchè lo standard disponibile, anche perchè questo è il sistema comunemente utilizzato
da Windows.
In realtà gli handles sono strutture interne a Windows che al loro interno custodiscono tutte le informazioni e le
proprietà di un oggetto. La loro struttura è composta da un
numero intero a 32 bit, utilizzato nelle chiamate API.
In ogni caso, nel modo in cui è concepito Visual Basic, non
c'è grossa differenza in fase iniziale tra un riferimento ad un oggetto e un qualsiasi
altro semplice intero a 32 bit: i riferimenti acquistano valore e diventano
tali nel momento in cui vengono passati come parametri ad una
funzione API. E del resto non ci sarebbe certo necessità di conoscere il numero identificatore
di un oggetto se non fosse possibile associarlo ad una funzione che lo elabori (e che
naturalmente faccia altrettanto con l'oggetto in questione...).
Ricapitolando sommariamente quanto detto, la maggior parte degli oggetti supportati
da Windows è accompagnata da un numero di riferimento.
La lista di tali oggetti comprende praticamente qualsiasi cosa
appaia sullo schermo: menu, pulsanti, finestre, textbox e così
via. Una volta creato uno degli oggetti menzionati, viene "attaccato"
a tale oggetto una particolare proprietà, hWnd che non
è altro che il numero di riferimento a tale oggetto. O meglio a tale finestra.
Questo perchè è da tenere presente che per Windows i pulsanti, le
forms, le textbox sono considerati speciali tipi di finestre. Ecco perchè
possiamo tradurre hWnd come handle (of the) Window.
Facciamo un esempio: abbiamo su un piano (la form) un pulsante. Manteniamo
le denominazioni degli oggetti dati per default da Microsoft: Command1 e Form1.
Se vogliamo scoprire qual'è l'intero col quale Windows fa riferimento a Command1
dal momento stesso in cui è stato creato, possiamo utilizzare questa linea
di codice:
|