[>>]

Technisches

14
Aug
2009

Ein minimales Palm-Programm (Garnet OS)

Ein minimales Programm für das veraltete Garnet OS/Palm OS für meinen Treo 650 sieht ungefähr aus wie unten.

Das Programm stellt ein "Form" dar. Tut allerdings sonst nichts.

Das Projekt habe ich mit der Garnet OS Development Suite erstellt. Zusätzlich braucht es noch eine Resource-Datei (.xrd), die ein Form-Objekt mit der ID "1000" enthält.

Die Reihenfolge der Methoden ist "verkehrt" (unwichtigste zuerst), um erstmal keine Header-Datei zu benötigen.


#include < PalmOS.h >

#define UI_MainForm 1000

static Boolean MainFormHandleEvent(EventPtr eventP) {
switch (eventP->eType) {
case frmOpenEvent:
{
FormPtr frmP = FrmGetActiveForm();
FrmDrawForm(frmP);
return true;
}
default:
return false;
}
}

static Boolean AppHandleEvent(EventPtr eventP) {
if (eventP->eType == frmLoadEvent) {
UInt16 formId = eventP->data.frmLoad.formID;
FormPtr formP = FrmInitForm(formId);
FrmSetActiveForm(formP);

if (formId == UI_MainForm)
FrmSetEventHandler(formP, MainFormHandleEvent);
return true;
}
else
return false;
}

static void AppStart() {
FrmGotoForm(UI_MainForm);
}

static void AppStop() {
FrmCloseAllForms();
}

static void AppEventLoop() {
UInt16 error;
EventType event;

do {
EvtGetEvent(&event, evtWaitForever);

if (!SysHandleEvent(&event))
if (!MenuHandleEvent(0, &event, &error))
if (!AppHandleEvent(&event))
FrmDispatchEvent(&event);
} while (event.eType != appStopEvent);
}

UInt32 PilotMain (UInt16 cmd, void *cmdPBP, UInt16 launchFlags) {
switch (cmd) {
case sysAppLaunchCmdNormalLaunch:
AppStart();
AppEventLoop();
AppStop();
return errNone;

default:
return errNone;
}
}


Hauptkomponente des Programms ist die AppEventLoop().
Darin ist nur AppHandleEvent() eine eigene Methode, der Rest wird vom System bereitgestellt, um z. B. Events auf Menüs oder anderen Oberflächenelementen richtig aufzuteilen.
Und AppHandleEvent() wiederum setzt nur das Form als aktives und registriert den Haupt-Message-Handler für dieses Form.

Achja: Die .xrd-Datei muss von Hand ins makefile eingetragen werden unter RESOURCES.
logo

Notizen an mich selbst

Über 1

Programmierer von Beruf. Frager aus Passion. Briefverteilzentrum 79 als Nachbarschaft. Außerdem: Kochen, Bilder, Sport.

Aktuelle Beiträge

sekundenglück 03:20
Wurde bei uns auch als strafe im turnunterricht verhängt. Entweder...
georg89 (Gast) - 17. November, 18:29
Danke für den Tipp. Ich...
Danke für den Tipp. Ich habe in meine Brote schon...
Nielsson - 1. November, 09:01
Kannst auch Anis reinmischen...
Kannst auch Anis reinmischen und ganz viele andere...
Nachtgezwitscher - 1. November, 01:26
Gut gemischtes Brot
Ich habe mir eine billige Küchenmaschine zum Teigkneten...
Nielsson - 1. November, 00:02
Die Zeit fliegt wie ein...
Warum singt Roxette gerade "Spending my time watching...
Nielsson - 18. Oktober, 11:20

Über 2

Egoload - Unabhängiger Denker

lakoja09ÄTgooglemailPUNKTcom

Suche