' Doppel-Klick
'
' GFA BASIC Amiga 3.0
' T.Ströter 15.2.1990
'
' Bringt ein Fenster bei Doppel-Klick mit der linken
' Maustaste auf volle Größe. Das Zeitintervall für den
' Doppel-Klick wird mit dem Programm "Preferences"
' von der Workbench eingestellt.
'
idcmp%=&H208    ! CloseWindow|Mousebuttons
flags%=&H1100F  ! RMBTrap|ActivateWindow|Drag|Depth|Close
'
OPENW #1,200,50,200,100,0,flags%
ON MESSAGE GOSUB fertig                 ! Fenster schließen
ON MENU BUTTON GOSUB klick              ! Maustasten
'
~CurrentTime(V:s_sec%,V:s_mic%)         ! Systemzeit für Doppel-Klick
ende!=FALSE
dc!=FALSE
~@set_idcmp(WINDOW(1),idcmp%)           ! Messages erlauben
'
REPEAT
  ON MENU
UNTIL ende!
'
> PROCEDURE klick
  LOCAL wad%,wnr|
  '
  wad%=MENU(9)                  ! Adresse der Fenster-Struktur
  wnr|=WINDOW(wad%)             ! GFA BASIC- Fensternummer
  ~@no_idcmp(wad%)              ! keine weiteren Messages erlauben
  '
  SELECT MENU(2)                    ! Welche Maustaste
  CASE 232
    '
    ' linke Maustaste losgelassen
    '
    IF DoubleClick(s_sec%,s_mic%,MENU(7),MENU(8))
      dc!=NOT dc!
      IF dc!
        FULLW #wnr|                 ! Volle Fenstergröße
      ELSE
        CLOSEW #wnr|
        OPENW #wnr|,200,50,200,100,0,flags%
      ENDIF
    ELSE
      ~CurrentTime(V:s_sec%,V:s_mic%) ! Zeit aktualisieren
    ENDIF
    '
  CASE 105
    '
    ' rechte Maustaste losgelassen
    '
    IF DoubleClick(s_sec%,s_mic%,MENU(7),MENU(8))
      PRINT "Doppel-Klick rechts"
    ELSE
      ~CurrentTime(V:s_sec%,V:s_mic%)
    ENDIF
  ENDSELECT
  ~@set_idcmp(WINDOW(wnr|),idcmp%)
RETURN
> PROCEDURE fertig
  CLOSEW #WINDOW(MENU(9))       ! schließe Fenster
  ende!=TRUE
RETURN
'
FUNCTION no_idcmp(wad%)
  LOCAL old_idcmp%
  old_idcmp%=LONG{ADD(wad%,82)}
  RETURN old_idcmp%
ENDFUNC
FUNCTION set_idcmp(wad%,flags%)
  ' IDCMP-Flags setzen
  RETURN ModifyIDCMP(wad%,flags%)
ENDFUNC
