Graham,
I have some sample code here that toggles between two forms (with
corresponding event handlers for each). I use GCC, so not everything will
translate to your development environment. Hopefully, this may help. If
not, then continued best of luck wishes!
Dave.
--
Colorado Springs, CO USA
____________________________________________________________________________
_
#include <pilot.h>
#include <callback.h>
#include "2forms.h"
static Boolean TestForm1Handler( EventPtr event )
{
Boolean handled = false;
CALLBACK_PROLOGUE
switch ( event->eType )
{
case frmOpenEvent:
FrmDrawForm( FrmGetActiveForm() );
handled = true;
break;
case frmUpdateEvent:
FrmDrawForm( FrmGetActiveForm() );
handled = true;
break;
case ctlSelectEvent:
switch ( event->data.ctlSelect.controlID )
{
case ctlButton11:
FrmAlert( alertSwitch );
FrmGotoForm( TestForm2 );
handled = true;
}
}
CALLBACK_EPILOGUE
return handled;
}
static Boolean TestForm2Handler( EventPtr event )
{
Boolean handled = false;
CALLBACK_PROLOGUE
switch ( event->eType )
{
case frmOpenEvent:
FrmDrawForm( FrmGetActiveForm() );
handled = true;
break;
case ctlSelectEvent:
switch ( event->data.ctlSelect.controlID )
{
case ctlButton21:
FrmAlert( alertSwitch );
FrmGotoForm( TestForm1 );
handled = true;
}
}
CALLBACK_EPILOGUE
return handled;
}
static Boolean AppLoadForm( EventPtr event )
{
FormPtr frm;
Int formId;
Boolean handled = false;
if ( event->eType == frmLoadEvent )
{
formId = event->data.frmLoad.formID;
frm = FrmInitForm( formId );
FrmSetActiveForm( frm );
switch ( formId )
{
case TestForm1:
FrmSetEventHandler( frm, TestForm1Handler );
handled = true;
break;
case TestForm2:
FrmSetEventHandler( frm, TestForm2Handler );
handled = true;
break;
}
}
return handled;
}
// -------------------------------------------------------------------------
---
static Err AppStart( void )
{
FrmGotoForm( TestForm1 );
return true;
}
static void AppEventLoop( void )
{
Word err;
EventType event;
do
{
EvtGetEvent( &event, evtWaitForever );
if ( SysHandleEvent(&event) ) continue;
if ( MenuHandleEvent((void*)0,&event,&err) ) continue;
if ( AppLoadForm(&event) ) continue;
FrmDispatchEvent( &event );
} while ( event.eType != appStopEvent );
}
static void AppStop( void )
{
}
// -------------------------------------------------------------------------
---
DWord PilotMain( Word cmd, Ptr cmdPBP, Word launchFlags )
{
if ( cmd == sysAppLaunchCmdNormalLaunch )
{
if ( AppStart() )
{
AppEventLoop();
AppStop();
}
}
return 0;
}