Here is the specification for a Menu structure:
struct Menu
{
struct Menu *NextMenu;
WORD LeftEdge, TopEdge;
WORD Width, Height;
UWORD Flags;
BYTE *MenuName;
struct MenuItem *FirstItem;
WORD JazzX, JazzY, BeatX, BeatY;
};
The variables in the Menu structure have the following meanings:
NextMenu
This variable points to the next Menu header in the list. The last
Menu in the list should have a NextMenu value of NULL.
LeftEdge, TopEdge, Width, Height
These fields describe the select box of the header. Currently, any
values supplied for TopEdge and Height are ignored by Intuition,
which uses instead the top of the screen for the TopEdge and the
height of the screen's title bar for the Height.
LeftEdge is relative to the LeftEdge of the screen plus the screen's
left border width, so if LeftEdge is 0, Intuition puts this header at
the leftmost allowable position.
Flags
The flag space is shared by the program and Intuition. The flags are:
MENUENABLED
This flag is for Intuition's use and indicates whether or not
this Menu is currently enabled. Set this flag before submitting
the menu strip to Intuition. If this flag is not set, the menu
header and all menu items below it will be disabled, and the
user will be able to view, but not select any of the items.
After submitting the strip to Intuition, the disabled or enabled
status may be changed by calling OnMenu() or OffMenu().
MIDRAWN
This flag indicates whether or not this menu's items are
currently displayed to the user.
MenuName
This is a pointer to a NULL terminated character string that is
printed on the screen's title bar starting at the LeftEdge of this
menu's select box and at the TopEdge just below the screen title
bar's top border. The text is rendered in the screen's font.
FirstItem
This points to the first MenuItem structure in the linked list of
this menu's items.
JazzX, JazzY, BeatX, BeatY
For internal use only.