␡
- Introduction—Types of Menus
- Pull-Down Menus
- Hierarchical Menus
- Pop-Up Menus
- Menu Objects, Menu IDs and Item Numbers, Command IDs, and Menu Lists
- Creating Your Application's Menus
- Providing Help Balloons (Mac OS 8/9)
- Changing Menu Item Appearance
- Adding Items to a Menu
- Associating Data with Menu Items
- Handling Menu Choices
- Hiding and Showing the Menu Bar
- Accessing Menus from Alerts and Dialogs
- Main Menu Manager Constants, Data Types, and Functions
- Demonstration Program Menus1 Listing
- Demonstration Program Menus1 Comments
- Demonstration Program Menus2 Listing
- Demonstration Program Menus2 Comments
This chapter is from the book
Main Menu Manager Constants, Data Types, and Functions
Constants
For markChar Parameter of SetItemMark Calls
noMark = 0 commandMark = 17 checkMark = 18 diamondMark = 19 appleMark = 20
For beforeID Parameter of InsertMenu to Insert a Submenu into the Submenu Portion of the Menu List
hierMenu = -1
For options Parameter of CreateStandardFontMenu Calls
KHierarchicalFontMenuOption = 0x00000001
Modifier Key Masks for GetMenuItemModifiers and SetMenuItemModifiers Calls
kMenuCommandModifiers = 0 If no bit is set, only the Command key is used. kMenuShiftModifier = (1 << 0) If this bit (bit 0) is set, the Shift key is used. kMenuOptionModifier = (1 << 1) If this bit (bit 1) is set, the Option key is used. kMenuControlModifier = (1 << 2) If this bit (bit 2) is set, the Control key is used. kMenuNoCommandModifier = (1 << 3) If this bit (bit 3) is set, the Command key is not used.
Menu Icon Handle Constants for GetMenuItemIconHandle and SetMenuItemIconHandle Calls
kMenuNoIcon = 0 No icon. kMenuIconType = 1 'ICON' handle. kMenuShrinkIconType = 2 32-by-32 'ICON' handle shrunk (at display time) to 16-by-16. kMenuSmallIconType = 3 'SICN' handle. kMenuColorIconType = 4 'cicn' handle. kMenuIconSuiteType = 5 Icon suite handle.
Menu Attributes
kMenuAttrExcludesMarkColumn = (1 << 0) kMenuAttrAutoDisable = (1 << 2)
Data Types
typedef struct OpaqueMenuHandle* MenuHandle; typedef MenuHandle MenuRef; typedef SInt16 MenuID; typedef UInt16 MenuItemIndex; typedef UInt32 MenuCommand; typedef Handle MenuBarHandle; typedef UInt32 MenuAttributes;
Functions
Creating and Disposing of Menus
MenuRef NewMenu(MenuID menuID, ConstStr255Param menuTitle); MenuRef GetMenu(short resourceID); void DisposeMenu(MenuRef theMenu);
Creating a Help Menu (Mac OS X)
OSStatus HMGetHelpMenu(MenuRef *outHelpMenu,MenuItemIndex *outFirstCustomItemIndex);
Adding Menus to and Removing Menus from the Current Menu List
void InsertMenu(MenuRef theMenu,MenuID beforeID); void DeleteMenu(MenuID menuID); void ClearMenuBar(void);
Getting a MenuBar Description from an 'MBAR' resource
MenuBarHandle GetNewMBar(short menuBarID);
Getting, Setting and Disposing of the Menu Bar
MenuBarHandle GetMenuBar(void); void SetMenuBar(MenuBarHandle mbar); OSStatus DisposeMenuBar(MenuBarHandle mbar); short GetMBarHeight(void);
Drawing the Menu Bar
void DrawMenuBar(void); void InvalMenuBar(void);
Controlling Menu Bar Visibility
void HideMenuBar(void); void ShowMenuBar(void); Boolean IsMenuBarVisible(void);
Modifying the Menu Width
Boolean GetMenuExcludesMarkColumn(MenuRef menu); OSStatus SetMenuExcludesMarkColumn(MenuRef menu,Boolean excludesMark);
Responding to User Choice of a Menu Command
Uint32 MenuEvent(const EventRecord *inEvent); long MenuSelect(Point startPt); long MenuChoice(void); void HiliteMenu(MenuID menuID); long PopUpMenuSelect(MenuRef menu,short top,short left,short popUpItem);
Getting a Reference to a Menu object
MenuRef GetMenuRef(MenuID menuID);
Adding and Deleting Menu Items
void AppendMenu(MenuRef menu,ConstStr255Param data); void InsertMenuItem(MenuRef theMenu,ConstStr255Param itemString,short afterItem); OSStatus AppendMenuItemText(MenuRef menu,ConstStr255Param inString); OSStatus AppendMenuItemTextWithCFString(MenuRef menu,CFStringRef inString, MenuItemAttributes inAttributes,MenuCommand inCommandID,MenuItemIndex *outNewItem); OSStatus InsertMenuItemText(MenuRef menu,ConstStr255Param inString,UInt16 afterItem); OSStatus InsertMenuItemTextWithCFString(MenuRef menu,CFStringRef inString, MenuItemIndex inAfterItem,MenuItemAttributes inAttributes,MenuCommand inCommandID); void DeleteMenuItem(MenuRef theMenu,short item); void AppendResMenu(MenuRef theMenu,ResType theType); void InsertResMenu(MenuRef theMenu,ResType theType,short afterItem);
Enabling and Disabling Menus, Menu Items, and Menu Item Icons
void EnableMenuItem(MenuRef theMenu,MenuItemIndex item); void DisableMenuItem(MenuRef theMenu,MenuItemIndex item); Boolean IsMenuItemEnabled(MenuRef menu,MenuItemIndex item); void DisableAllMenuItems(MenuRef theMenu); void EnableAllMenuItems(MenuRef theMenu); Boolean MenuHasEnabledItems(MenuRef theMenu); void EnableMenuCommand(MenuRef theMenu,MenuCommand commandID); void DisableMenuCommand(MenuRef theMenu,MenuCommand commandID); Boolean IsMenuCommandEnabled(MenuRef menu,MenuCommand commandID); void EnableMenuItemIcon(MenuRef theMenu,MenuItemIndex item); void DisableMenuItemIcon(MenuRef theMenu,MenuItemIndex item); Boolean IsMenuItemIconEnabled(MenuRef menu,MenuItemIndex item);
Getting and Setting Menu Item Command IDs
OSErr GetMenuItemCommandID(MenuRef inMenu,SInt16 inItem,UInt32 *outCommandID); OSErr SetMenuItemCommandID(MenuRef inMenu,SInt16 inItem,UInt32 inCommandID);
Menu Object Accessor Functions
MenuID GetMenuID(MenuRef menu); void SetMenuID(MenuRef menu,MenuID menuID); SInt16 GetMenuWidth(MenuRef menu); void SetMenuWidth(MenuRef menu,SInt16 width); SInt16 GetMenuHeight(MenuRef menu); void SetMenuHeight(MenuRef menu,SInt16 height); StringPtr GetMenuTitle(MenuRef menu,Str255 title); OSStatus SetMenuTitle(MenuRef menu,ConstStr255Param title); OSStatus SetMenuTitleWithCFString(MenuRef menu,CFStringRef inString); OSStatus GetMenuDefinition(MenuRef menu,MenuDefSpecPtr outDefSpec); OSStatus SetMenuDefinition (MenuRef menu,const MenuDefSpec *defSpec);
Manipulating and Accessing Menu Item Characteristics
void GetMenuItemText(MenuRef menu,short item,Str255 itemString); void SetMenuItemText(MenuRef theMenu, short item, ConstStr255Param itemString); OSStatus SetMenuItemTextWithCFString(MenuRef menu,MenuItemIndex item,CFStringRef inString); void GetItemStyle(MenuRef theMenu,short item,Style* chStyle); void SetItemStyle(MenuRef theMenu,short item, StyleParameter chStyle); void GetItemMark(MenuRef theMenu,short item,CharParameter *markChar); void SetItemMark(MenuRef theMenu,short item,CharParameter markChar); void CheckMenuItem(MenuRef theMenu,short item,Boolean checked); OSStatus GetMenuFont(MenuRef menu,SInt16 *outFontID,UInt16 *outFontSize); OSStatus SetMenuFont(MenuRef menu,SInt16 inFontID,UInt16 inFontSize); void GetItemIcon(MenuRef theMenu,short item,short *iconIndex); void SetItemIcon(MenuRef theMenu,short item,short iconIndex); void GetItemCmd(MenuRef theMenu,short item,short *cmdChar); void SetItemCmd(MenuRef theMenu,short item,short cmdChar); OSErr GetMenuItemFontID(MenuRef inMenu,SInt16 inItem,SInt16* outFontID); OSErr SetMenuItemFontID(MenuRef inMenu,SInt16 inItem,SInt16 inFontID); OSErr GetMenuItemHierarchicalID(MenuRef inMenu,SInt16 inItem,SInt16 *outHierID); OSErr SetMenuItemHierarchicalID(MenuRef inMenu,SInt16 inItem,SInt16 inHierID); OSErr GetMenuItemIconHandle(MenuRef inMenu,SInt16 inItem,MenuIconType outIconType, Handle* outIconHandle); OSErr SetMenuItemIconHandle(MenuRef inMenu,SInt16 inItem,MenuIconType inIconType, Handle inIconHandle); OSErr GetMenuItemKeyGlyph(MenuRef inMenu,SInt16 inItem,SInt16 *outGlyph); OSErr SetMenuItemKeyGlyph(MenuRef inMenu,SInt16 inItem,SInt16 inGlyph); OSErr GetMenuItemModifiers(MenuRef inMenu,SInt16 inItem,SInt16* outModifiers); OSErr SetMenuItemModifiers(MenuRef inMenu,SInt16 inItem,SInt16 inModifiers); OSErr GetMenuItemRefCon(MenuRef inMenu,SInt16 inItem,SInt32* outRefCon); OSErr SetMenuItemRefCon(MenuRef inMenu,SInt16 inItem,SInt32 inRefCon); OSErr GetMenuItemTextEncoding(MenuRef inMenu,SInt16 inItem,TextEncoding* outScriptID); OSErr SetMenuItemTextEncoding(MenuRef inMenu,SInt16 inItem,TextEncoding inScriptID);
Getting a Menu Reference and Menu ID from a Command ID
OSStatus GetIndMenuItemWithCommandID(MenuRef menu,MenuCommand commandID,UInt32 itemIndex, MenuRef *outMenu,MenuItemIndex *outIndex);
Associating Data with Menu Items
OSStatus SetMenuCommandProperty(MenuRef menu,MenuCommand commandID,OSType propertyCreator, OSType propertyTag,ByteCount propertySize,const void *propertyData); OSStatus GetMenuCommandPropertySize(MenuRef menu,MenuCommand commandID,OSType propertyCreator, OSType propertyTag,ByteCount *size); OSStatus GetMenuCommandProperty(MenuRef menu,MenuCommand commandID,OSType propertyCreator, OSType propertyTag,ByteCount bufferSize,ByteCount *actualSize,void *propertyBuffer); OSStatus RemoveMenuCommandProperty(MenuRef menu,MenuCommand commandID,OSType propertyCreator, OSType propertyTag);
Counting Items in a Menu
short CountMenuItems(MenuRef theMenu); ItemCount CountMenuItemsWithCommandID(MenuRef menu,MenuCommand commandID);
Building and Updating Font Menus and Obtaining Font Family and Style
OSStatus CreateStandardFontMenu(MenuRef menu,MenuItemIndex afterItem,MenuID firstHierMenuID, OptionBits options,ItemCount *outHierMenuCount); OSStatus UpdateStandardFontMenu(MenuRef menu,ItemCount *outHierMenuCount); OSStatus GetFontFamilyFromMenuSelection(MenuRef menu,MenuItemIndex item, FMFontFamily *outFontFamily,FMFontStyle *outStyle);
Recalculating Menu Dimensions
void CalcMenuSize(MenuRef theMenu);
Highlighting the Menu Bar
void FlashMenuBar(MenuID menuID);