type
    Menu_t = struct {
	*Menu_t m_NextMenu;
	uint m_LeftEdge, m_TopEdge;
	uint m_Width, m_Height;
	uint m_Flags;
	*char m_MenuName;
	*MenuItem_t m_FirstItem;
	uint m_JazzX, m_JazzY, m_BeatX, m_BeatY;
    };

uint
    MENUENABLED = 0x0001,

    MIDRAWN	= 0x0100;

type
    MenuItem_t = struct {
	*MenuItem_t mi_NextItem;
	uint mi_LeftEdge, mi_TopEdge;
	uint mi_Width, mi_Height;
	uint mi_Flags;
	
	ulong mi_MutualExclude;
	union {*IntuiText_t miIt; *Image_t miIm} mi_ItemFill, mi_SelectFill;
	
	char mi_Command;
	
	*MenuItem_t mi_SubItem;
	
	uint mi_NextSelect;
    };

uint
    CHECKIT	= 0x0001,
    ITEMTEXT	= 0x0002,
    COMMSEQ	= 0x0004,
    MENUTOGGLE	= 0x0008,
    ITEMENABLED = 0x0010,

    HIGHFLAGS	= 0x00C0,
    HIGHIMAGE	= 0x0000,
    HIGHCOMP	= 0x0040,
    HIGHBOX	= 0x0080,
    HIGHNONE	= 0x00C0,

    CHECKED	= 0x0100,

    ISDRAWN	= 0x1000,
    HIGHITEM	= 0x2000,
    MENUTOGGLED = 0x4000,

    NOMENU	= 0x001F,
    NOITEM	= 0x003F,
    NOSUB	= 0x001F,
    MENUNULL	= 0xFFFF,

    CHECKWIDTH	    = 19,
    COMMWIDTH	    = 27,
    LOWCHECKWIDTH   = 13,
    LOWCOMMWIDTH    = 16;

extern
    ClearMenuStrip(*Window_t w)void,
    ItemAddress(*Menu_t menu; ulong menuNumber)*MenuItem_t,
    OffMenu(*Window_t w; ulong menuNumber)void,
    OnMenu(*Window_t w; ulong menuNumber)void,
    SetMenuStrip(*Window_t w; *Menu_t m)void,
    MENUNUM(uint n)uint,
    ITEMNUM(uint n)uint,
    SUBNUM(uint n)uint,
    SHIFTMENU(uint n)uint,
    SHIFTITEM(uint n)uint,
    SHIFTSUB(uint n)uint;
