Palm OS/C/Menus 程式設計
外觀
< Palm OS 程式設計 | C
將所有這些檔案放在工作目錄中,呼叫
make -f MenusMakefile
.. 這將建立Menus.prc在工作目錄中,準備好安裝到 Palm 上。
此檔案在一個地方定義了由Menus.rcp和Menus.c.
#define MainForm 1000 #define MainMenu 1000 #define MainMenuRecordNew 1011 #define MainMenuRecordOpen 1012 #define MainMenuHelpAbout 1020
#include "Menus.h"
MENU ID MainMenu
BEGIN
PULLDOWN "Record"
BEGIN
MENUITEM "New" ID MainMenuRecordNew "N"
MENUITEM SEPARATOR
MENUITEM "Open" ID MainMenuRecordOpen "O"
END
PULLDOWN "Help"
BEGIN
MENUITEM "About" ID MainMenuHelpAbout "A"
END
END
FORM ID MainForm AT (0 0 160 160)
USABLE
MENUID MainMenu
BEGIN
END
#include <PalmOS.h>
#include <unix_stdarg.h>
#include "Menus.h"
void showMessage( char *format, ...)
{
va_list args;
char msg[99];
va_start( args, format);
StrVPrintF( msg, format, args);
va_end( args);
WinDrawChars( msg, StrLen(msg), 0, 80);
}
Boolean appHandleEvent( EventPtr event)
{
Boolean handled;
FormPtr form;
handled = true;
if ( frmLoadEvent == event->eType)
{
form = FrmInitForm( event->data.frmLoad.formID);
FrmSetActiveForm( form);
}
else if ( menuEvent == event->eType)
{
showMessage( "selected resource %i", event->data.menu.itemID);
}
else {
handled = false;
}
return handled;
}
UInt32 PilotMain( UInt16 cmd, void *cmdPBP, UInt16 launchFlags)
{
EventType event;
UInt16 error;
if ( sysAppLaunchCmdNormalLaunch == cmd)
{
FrmGotoForm( MainForm);
showMessage( "open the menu");
do {
EvtGetEvent( &event, evtWaitForever);
if ( ! SysHandleEvent( &event))
if ( ! MenuHandleEvent( 0, &event, &error))
appHandleEvent( &event);
} while (event.eType != appStopEvent);
FrmCloseAllForms();
}
return 0;
}
PROJECT=Menus CREATOR_ID=Anon .SILENT: all: $(PROJECT).prc $(PROJECT).prc: $(PROJECT).c $(PROJECT).h $(PROJECT).rcp m68k-palmos-gcc $(PROJECT).c -o $(PROJECT) m68k-palmos-obj-res $(PROJECT) pilrc -q $(PROJECT).rcp build-prc $(PROJECT).prc "$(PROJECT)" $(CREATOR_ID) *.$(PROJECT).grc *.bin rm *.$(PROJECT).grc *.bin $(PROJECT) clean: rm -f $(PROJECT).prc