In beiden fällen stehen in der übergebenen Variable tsts in den Members tsts.x und tsts.y die Koordinaten des Druckpunkts.
Zusätzlich enthält die Variable tsts auch ein Member tsts.obj, in dem abgelegt wird, welcher vordefinierte Bereich
des Touch-Screens getroffen wurde.
Diese vordefinierten Bereiche, Touch Tables, werden als Variable deklariert und auf den Touch Stack gebracht.
Der Touch Stack regelt, wie sich Bereiche verhalten sollen, die sich durch die Definition überlappen.
Jedes Programm sollte für sich den Touch Stack erst mal löschen und neu aufbauen. Bei einem Druck auf den Bildschirm werden
dann alle definierten Areas überprüft, welcher Bereich für diesen Druck gültig ist. Wenn es zu Überlappungen kommt
(also zwei Bereiche auf die Koordinaten passen), dann wird der Bereich genommen, der auf dem Stack oben liegt (also als
letztes definiert wurde).
Die Icons am unteren Rand des Bildschirm reagieren ebenfalls auf den Touch und können so abgefragt werden. Um diese Bereiche
aber nicht jedesmal neu definieren zu müssen, sind sie schon fest hinterlegt.
Zur Definition eines solchen Stacks gehören folgende Befehle:
LibTchStackClr(); /* Stack leeren */ LibTchStackPush(NULL); /* NULL auf den Stack bringen um anzuzeigen, dass hier die Bereiche zu Ende sind */ LibTchStackPush(TchHardIcon); /* Die Icons am unteren Bildschirmrand */ |
LibTchStackPush(TchShow)der selbstdefinierte Touchbereich dem System bekannt gemacht werden.
TchShownatürlich zuerst definiert werden.
TCHTBL TchShow[]= { 75,2,100,12, ACT_MAKE, OBJ_IC_NEXT, 0x0000, 18,2,40,12, ACT_MAKE, OBJ_IC_NEW, 0x0000, 0,0,0,0, ACT_NONE, OBJ_END, 0x0000 }; |
#define OBJ_IC_NEXT 0x8010 #define OBJ_IC_NEW 0x8011definiert worden sein.
| 0x0000 | Ende einer Touch Table |
| 0x0001-0x7FFF | Wird vom PVOS benutzt |
| 0x8000-0xFFFF | Kann von AddIns benutzt werden |
ACT_MAKE
| ACT_MAKE | Der Bereich wurde berührt |
| ACT_MOVE | Der Stift wurde innerhalb des Bereichs bewegt |
| ACT_MOVE_OUT | Der Stift wurde aus dem Bereich heraus bewegt |
| ACT_MOVE_IN | Der Stift wurde in den Bereich hinein bewegt |
| ACT_DOWN | Die Berührung hält noch an |
| ACT_DOWN_IN | Die Berührung erfolgt immer noch innerhalb eines Bereichs |
| ACT_BREAK | Die Berührung wurde beendet |
| ACT_BREAK_IN | Die Berührung wurde innerhalb eines Bereichs beendet |
| ACT_REPEAT | Die Zeit des Repeat-Intervalls ist abgelaufen während der Berührung |
| ACT_NONE | Falscher Bereich |
| ACT_500MSEC | 500ms sind vergangen |
| ACT_ALM | Benutzer Alarm wurde ausgelöst |
Der Befehl PollEvent() füllt den Wert tsts.obj nicht
Für Ergänzungen wenden Sie sich bitte an:
Jürgen Wagner