&&
------------------------------------------------------------------------------
                  CURSUS ASSEMBLER  -  WERKEN MET WINDOWS 2
------------------------------------------------------------------------------

Bekijken we nu het eigenlijke deel van het programma. Het openen van een
window wordt vooraf gegaan door het definieren van dat window. De computer
moet weten hoe het window er uit komt te zien. Daarvoor hebben we een window-
struktuur. In het programma heet die NewWindow.

Zo'n window-struktuur is een stukje geheugen waar een aantal gegevens van het
window staat opgeslagen. Het is dus eigenlijk een lijst van gegevens.

  NewWindow:
  DC.W     10               ; X.
  DC.W     10               ; Y.
  DC.W     100              ; Breedte.
  DC.W     100              ; Hoogte.

De eerste vier getallen zijn steeds 1 woord lang (0-65535) en bevatten de
plaats en de maat van het window.
Als eerste de X-coordinaat, gevolgd door de Y-coordinaat. Dan de breedte van
het window en de hoogte.
Omdat we op een WorkBench-scherm werken mag X plus de breedte niet boven de
640 en Y plus de hoogte niet boven de 256 uitkomen.
&&
  DC.B     1                ; Letterkleur 1.
  DC.B     3                ; Achtergrondkleur 3.

De volgende twee waarden zijn 1 byte lang en bevatten de kleuren die gebruikt
worden als er in het window geschreven of getekend wordt.
Omdat de WorkBench slechts 4 kleuren heeft zijn hier de waarden 0-3 mogelijk.

De achtergrondkleur is overigens niet de kleur van het scherm, maar de kleur
die gebruikt wordt als een punt gewist wordt.

  DC.L     0                ; IDCMP-vlaggen (geen).

Deze vlag geeft aan welke gebeurtenissen door de intuition aan ons gemeld
moeten worden. Later komen we hier op terug.

  DC.L     $1000!1!2!4!8    ; Window-mogelijkheden.

Dit is een vlag die het window vertelt wat allemaal gebruikt kan worden en wat
zichtbaar is. Elk bit heeft een speciale waarde. In de Seka-Assembler staat
het !-teken voor EN. 1!2!4!8 = %1111 = $F = 15. Tellen we daar de $1000 bij op
dan krijgen we $100F. Omdat het een lang-woord is wordt de eigenlijke waarde :
$0000100F.
&&
De eigenlijke betekenissen van de bits zijn de volgende :

$1000  - AKTIVATE. Geeft aan of het window na het openen meteen aktief moet
         zijn.
$0001  - WINDOWSIZING. Als dit bit gezet is kan de maat van het window met de
         muis veranderd worden.
$0002  - WINDOWDRAG. Als dit bit gezet is kunt u met de muis het window ver-
         plaatsen op het scherm.
$0004  - WINDOWDEPTH. Hiermee is het mogelijk het window voor of achter een
         ander window te zetten.
$0008  - WINDOWCLOSE. Het venster krijgt een sluit-symbool. U kunt het echter
         nog niet sluiten. Daarvoor zijn de IDCMP-vlaggen nodig.

  DC.L     0                ; Gadgets.
  DC.L     0                ; Grafisch.

Speciale voorwaarden voor gadgets op het window. Omdat we geen gadgets ge-
bruiken zijn beide lange woorden nul.

  DC.L     WindowTitel      ; Adres van de titel van het window.

In dit lange woord staat het adres van de naam van het window. Niet de naam
zelf, maar een pointer naar de naam. Deze staat in de variabelen-tabel aan het
einde van het programma.
De titel moet met een 0 zijn afgesloten om het einde te laten vinden.
&&
  DC.L     0                ; Adres van het screen (0=WorkBench).
  DC.L     0                ; Adres van de bitmap (geen).

Het eerste lange woord maakt het mogelijk het window op een ander scherm te
openen als het WorkBench-scherm. Op deze plaats moet dan het adres van het
scherm komen te staan.
Het tweede is voor speciale toepassingen van een eigen scherm.

  DC.W     20               ; Breedte minimaal.
  DC.W     20               ; Hoogte minimaal.
  DC.W     629              ; Breedte maximaal.
  DC.W     246              ; Hoogte maximaal.

Met deze vier woorden wordt de mogelijke veranderingen in de maat van het
scherm vast gelegd. De intuition zorgt zelf dat u niet over deze waarden heen
kunt gaan.

  DC.W     1                ; Scherm-type WorkBench.

Het type van het scherm staat hier. Daarbij staat 1 voor het WorkBench-scherm,
een andere waarde is b.v. 15 voor een Custom-scherm.
&&
Het programma staat op deze diskette, zowel als source voor de Seka-Assembler
en als uitvoerbaar programma vanuit de CLI. Ga daarvoor naar de CLI en tik in:

Assembler/Window


In het derde stuk bekijken we hoe we zelf het window kunnen sluiten.



















- EINDE ----------------------------------------------------------------------
&&
