Application Code for Menus
There’s not a lot of code that needs to be added to support menus. Furthermore, what you do add is straightforward and in some cases standard from application to application. The two routines responsibile for handling menus are:
MenuHandleEvent
MyFormHandleEvent
There is also some cookbook code to add that handles the Edit menu; we need to handle the About menu, as well.
MenuHandleEvent
This routine is responsible for handling menu-specific events. Chapter 5 contains a description of
MenuHandleEvent
and its role within your main event loop.
Here is an example found in a main event loop:
do {
EvtGetEvent(&event, evtWaitForever);
if (! SysHandleEvent(&event))
if (! MenuHandleEvent(0, &event, &error))
if (! ApplicationHandleEvent(&event)) FrmDispatchEvent(&event); } while (event.eType != appStopEvent);
MyFormHandleEvent
Your
form’s event handler receives an event of type
menuEvent
if a menu item is chosen. It will commonly have an embedded switch
statement to handle each menu item in the form. Here is one such
event handler:
static Boolean MyFormHandleEvent(EventPtr event) { Boolean handled = false; switch (event->eType) { /* other event types */ case menuEvent: switch (event->data.menu.itemID) { case MenuItem1: // Code to handle MenuItem1. handled = true; break; case MenuItem2: // Code to handle MenuItem2. handled = true; break; } break; } return handled; }
Handling Items in the Edit Menu
The good news about the Edit menu is that the OS already has code ...
Get Palm OS Programming, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.