Gli operatori logici in Visual Basic Net? Li trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Le API: le strutture nelle dichiarazioni delle funzioni


Come già si è visto le strutture sono molto frequenti all'interno delle dichiarazioni delle funzioni. Questo perchè con un solo puntatore ad una struttura è possibile richiamare un numero di informazioni molto superiore a quello assegnabile ad un singolo parametro. Se infatti definiamo puntatore ad una struttura l'indicatore di passaggio da una dichiarazione di una funzione ad una struttura, ad esempio:

ByVal lplf As LOGFONT

possiamo notare che il parametro lplf della funzione in questione porta con se tutte le informazioni della struttura LOGFONT.
Probabilmente un esempio chiarirà meglio le idee. Si consideri due funzioni che compiono le stesse operazioni e ottengono il medesimo risultato, come CreateFont e CreateFontIndirect. Qual'è la differenza sostanziale tra le due? La seconda ossia CreateFontIndirect, come rivela il nome, ha un utilizzo indiretto nel senso che passa prima per la struttura LOGFONT mentre la prima racchiude in sè tutti i parametri necessari. E vedendo le due dichiarazioni non si può dire che la CreateFont sia di più semplice interpretazione della CreateFontIndirect:

Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, _
ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, _
ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, _
ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long

Notare che nella dichiarazione della CreateFontIndirect basta un unico parametro:

Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont _
As LOGFONT) As Long

In realtà il vantaggio associato all'uso di una struttura non è la minore lunghezza del codice. Infatti non si deve scordare che se una funzione utilizza un puntatore ad una struttura deve necessariamente essere dichiarata anche la struttura. Perciò nel caso della CreateFontIndirect la dichiarazione completa di struttura sarebbe la seguente:

Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont _
As LOGFONT) As Long
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName(1 To LF_FACESIZE) As Byte
End Type

Il vantaggio sta invece nella semplicità di utilizzo e nell'ordine imposto all'uso della funzione.

Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it