STRUCT name, field1 as type1 [, field2 as type2, ... ]
STRUCT name, field1 as type1 [, field2 as type2, ... ]
Omschrijving:
Dit statement zet een enkel geval op van gespecificeerde structuur die benodigd zal zijn
bij het maken van bepaalde API/DLL calls. Er wordt dus geen structuur type gedeclareerd,
maar er wordt één structuur opgezet.
Hier is een voorbeeld van het STRUCT statement waarbij een (Windows rect structure)
rechthoekig venster structuur kan worden opgezet. Deze structuur wordt in vele
Windows API calls toegepast:
'create the structure winRect
struct winRect, _
orgX as long, _
orgY as long, _
extentX as long, _
extentY as long
Een waarde wordt aan een veld toegewezen op dezelfde manier als wanneer we een waarde
aan een variabele toewijzen.
De naam van de STRUCT wordt eerst geplaatst, daarna volgt een punt,
gevolgd door de naam van het veld dat betreden wordt, dan weer een punt
en daarna tenslotte het woord "struct" .
Dit voorbeeld wijst een waarde van "100" toe aan het "orgX" gebied van struct "winRect":
winRect.orgX.struct = 100
De velden van de structure kunnen op de zelfde manier worden gebruikt als andere variabelen:
print winRect.orgX.struct
of:
newOriginX = offsetX + winRect.orgX.struct
Sommige API calls vereisen dat de grootte van een struct worden overgedragen als parameter.
Bepaal de lengte (grootte) van een struct met de functie LEN( ).
sizeStruct = len(winRect.struct)
Bij het overdragen van een structuur in een Calldll statement, specificeert u type "as struct",
zoals hier in dit voorbeeld wordt gedaan:
'WINRECT.BAS - show how to get window position and size
'and demonstrate how to use the struct statement
struct winRect, _
orgX as long, _
orgY as long, _
crnrX as long, _
crnrY as long
open "test me" for window as #win
open "user32.dll" for dll as #user
hndl = hwnd(#win)
calldll #user, "GetWindowRect", _
hndl as ulong, _
winRect as struct, _
result as long
print "Upper Left x, y of 'test me': "
print winRect.orgX.struct; ", "; winRect.orgY.struct
print
print "Lower Right x, y of 'test me': "
print winRect.crnrX.struct; ", "; winRect.crnrY.struct
close #user
close #win
wait
end
See also: CALLDLL, Using Types with STRUCT, Understanding Syntax