Aide - Recherche - Membres - Calendrier
Version complète : Débutant : Pb de changement de Form
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
bjker
Bonjour

je débute avec PalmOS Developer , en C donc, et j aurai voulu faire juste une apli qui passe d'une form a l autre avec un bouton( juste pour voir commen ça marche ^^)

Je suis parti de leur exemple "puzzle" et j arrive a ça :




#include <PalmOS.h>

#include "PuzzleRsc.h"

#define puzzleAppCreator 'STRT'



static void StopApplication (void);

static Boolean MainFormHandleEvent (EventPtr event);
static Boolean MainFormHandleEvent2 (EventPtr event);
static void AppEventLoop (void);



static void StopApplication (void)
{
FrmCloseAllForms ();
}

static void MainFormInit (FormPtr frm)
{
frm = NULL; // Avoid unused parameter warning
}

static Boolean MainFormHandleEvent (EventPtr event)
{
FormPtr frm;
Boolean handled = false;

if (event->eType == ctlSelectEvent)
{
switch (event->data.ctlSelect.controlID)
{
case 1001:
frmGoToForm(1100);
handled = true;
break;

default:
break;
}
}

else if (event->eType == frmOpenEvent)
{
frm = FrmGetActiveForm();
MainFormInit (frm);
FrmDrawForm (frm);
handled = true;
}


else if (event->eType == frmCloseEvent)
{
}

return (handled);
}


static Boolean MainFormHandleEvent2 (EventPtr event)
{
FormPtr frm;
Boolean handled = false;

if (event->eType == ctlSelectEvent)
{
switch (event->data.ctlSelect.controlID)
{
case 1101:
frmGoToForm(1000);
handled = true;
break;

default:
break;
}
}



else if (event->eType == frmOpenEvent)
{
frm = FrmGetActiveForm();
MainFormInit (frm);
FrmDrawForm (frm);

handled = true;
}


else if (event->eType == frmCloseEvent)
{
}

return (handled);
}


static Boolean AppHandleEvent( EventPtr eventP)
{
UInt16 formId;
FormPtr frmP;

if (eventP->eType == frmLoadEvent)
{
formId = eventP->data.frmLoad.formID;
frmP = FrmInitForm(formId);
FrmSetActiveForm(frmP);

switch (formId)
{
case MainForm:
FrmSetEventHandler(frmP, MainFormHandleEvent);
break;

case MainForm2:
FrmSetEventHandler(frmP, MainFormHandleEvent2);
break;

default:
ErrNonFatalDisplay("Invalid Form Load Event");
break;
}
return true;
}

return false;
}

static void AppEventLoop(void)
{
EventType event;

do {
EvtGetEvent(&event, evtWaitForever);

if (! SysHandleEvent(&event))
if (! AppHandleEvent(&event))
FrmDispatchEvent(&event);

} while (event.eType != appStopEvent);
}

UInt32 PilotMain (UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
cmdPBP = NULL; // Avoid variable unused warning

FrmGotoForm (MainForm);

AppEventLoop ();
StopApplication ();


return (0);
}




>>>Mais il semblerai que ce ne soit pas la bonne méthode puisqu'il refuse de le compiler a cause du frmGoToForm

Esce que quelqu'un pourait m' expliquer ?

Merci
Patrice
Sur le handler de la 2° form, tu ne gères pas l'événement frmOpenEvent, il ne risque donc pas de se passer grand chose, effectivement...

D'autre part, fais attention à ton code : tu utilises les valeurs littérales 1000 et 1100 pour les formID, alors que tu as défini des constantes qui t'éviteront des déboires à l'avenir...
bjker
Merci pour la reponse,je prend note des remarque

Mais j en esperais une plus précise,c'est pourquoi je vais la préciser

-Pourquoi le compilateur refuse t il de compiler a cause du frmgotoform ( est il mal utilisé ?...)
-Si ce n'est pas la bonne fonction comment je demande le changement de form ?

Si quelq'un pouvait corriger mon code afin d'avoir un base propre ce serai formidable

Merci
Patrice
CITATION(bjker @ 14/06/2006 à 01:14 ) *
Merci pour la reponse,je prend note des remarque

Mais j en esperais une plus précise,c'est pourquoi je vais la préciser

-Pourquoi le compilateur refuse t il de compiler a cause du frmgotoform ( est il mal utilisé ?...)
Si tu n'expliques pas que c'est à la compilation que ça ne passe pas, tu crois que ça saute aux yeux ?

Il suffit de lire la doc : tu écris frmGoToForm() alors que la fonction est frmGotoForm().

CITATION(bjker @ 14/06/2006 à 01:14 ) *
Si quelq'un pouvait corriger mon code afin d'avoir un base propre ce serai formidable
Ben voyons ! On peut aussi écrire ton programme à ta place, peut-être ? Pour avoir une "base propre", tu as déjà un certain nombre de samples rolleyes.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.