Mausabfrage ganz einfach ?!

Vielleicht ist Ihnen dieses Problem und die Lösung schon bekannt, doch ich glaube, vielen, besonders Anfängern, wird es sicher helfen, um Programme mit Maussteuerung zu schreiben.

Nehmen wir mal an, Sie haben als Menü ihres neuen Programms ein schönes Bild gezeichnet, das viele Knöpfe (Engl.: Buttons) hat. Klickt man diese Buttons an, soll eine Funktion aufgerufen werden.
Dies ist kein Problem:

Nehmen wir an Sie möchten abfragen, ob der Anwender auf das Rechteck, das sich von dem Punkt 10,10 zu 40,80 erstreckt, klickt.

Dazu brauchen wir eine Schleife für eine andauernde Abfrage, und springen dann zu einer Prozedur, die die Mauskoordinaten einließt (dieser Sprung verhindert das Flackern des Mauszeigers, das manchmal auftreten kann !). Das sieht dann so aus:

DO
 GOSUB mausabfrage
LOOP
'
PROCEDURE
 MOUSE x%,y%,z%
RETURN

Nun wird einfach abgefragt, ob sich der Mauszeiger im Rechteck befindet und ob der linke Mausknopf (z%=1), der rechte (z%=2) oder beide (z%=3) gedrückt wurden.

IF x%>10 AND y%>10 AND x%<40 and y%<80 and z%=1
 GOSUB werweiswas
ENDIF

Hier muss der Mauszeiger also zwischen 10 und 40 auf der X-Achse und zwischen 10 und 80 auf der Y-Achse liegen, und der Mausknopf betätigt werden, um zur Prozedur 'werweiswas' zu springen.

Die Beispielroutine sieht dann wie folgt aus:

DO
 GOSUB mausabfrage
 '
 IF x%>10 and y%>10 and x%<40 and y%<80 and z%=1
  GOSUB werweiswas
 ENDIF
 '
LOOP
'
PROCEDURE mausabfrage
 MOUSE x%,y%,z%
RETURN

Einfach nicht wahr ? Dies sollte eigentlich ein Minitip werden, beim nächstenmal gibt es wirklich wieder einen Minitip, kurz und prägnannt wie immer !

HH



Aus: Hitdisk disk 04 / 1990, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite