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