// Run Home Screen in approximation mode
#define USE_TI89 // Compile for TI-89
#define USE_TI92PLUS // Compile for TI-92 Plus
#define USE_V200 // Compile for V200
#define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization
#define MIN_AMS 100 // Compile for AMS 1.00 or higher
#define SAVE_SCREEN // Save/Restore LCD Contents
#include <tigcclib.h> // Include All Header Files
CALLBACK void Handler(EVENT *ev)
{
if (ev->Type == CM_KEYPRESS)
{
if (ev->extra.Key.Code == KEY_DIAMOND + KEY_ENTER)
ER_throw (1);
if (ev->extra.Key.Code == KEY_ENTER)
ev->extra.Key.Code = KEY_DIAMOND + KEY_ENTER;
}
EV_captureEvents (NULL); // Send the event to the default
EV_sendEvent (AP_CURRENT, ev); // application handler, but be careful
EV_captureEvents (Handler); // to avoid infinite recursion!
}
void _main(void)
{
EV_captureEvents (Handler);
TRY
EV_eventLoop ();
ONERR
EV_captureEvents (NULL);
ENDTRY
}
En effet, lorsque l'on ouvre le catalogue ou la boite About : il n'y a plus moyen ni de selectionner une fonction, ni de quitter la boite de dialogue!
Je pense que le probleme dans cet exemple est que l'on ne sauvegarde pas le Handler de la fonction associé à ces deux boites de dialogue (elles ne recoivent donc plus les messages)
En la modifiant ainsi ca fonctionne :
static EVENT_HANDLER Old_Handler;
CALLBACK void Handler(EVENT *ev)
{
if (ev->Type == CM_KEYPRESS)
{
if (ev->extra.Key.Code == KEY_DIAMOND + KEY_ENTER)
ER_throw (1);
if (ev->extra.Key.Code == KEY_ENTER)
ev->extra.Key.Code = KEY_DIAMOND + KEY_ENTER;
}
EV_captureEvents (Old_Handler); // Send the event to the default
EV_sendEvent (AP_CURRENT, ev); // application handler, but be careful
Old_Handler=EV_captureEvents (Handler); // to avoid infinite recursion!
}
void _main(void)
{
Old_Handler=EV_captureEvents (Handler);
TRY
EV_eventLoop ();
ONERR
EV_captureEvents (Old_Handler);
ENDTRY
}
(je ne suis pas sur que la definition en 'static' soit bonne...)
