Typically, a menu resource represents the menu bar or pop-up menu and all the related submenus. A menu-item definition is organized as shown in the following code:
MENUITEM item text, item identifier, item style, item attributes
The menu resource-definition file specifies the text of each item in the menu, its unique identifier, its style and attributes, and whether it is a command item or a submenu item. A menu item that has no specification for style or attributes has the default style of MIS_TEXT and all attribute bits off, indicating that the item is enabled. The MIS_SEPARATOR style identifies nonselectable lines between menu items. The following figure is sample Resource Compiler source code that defines a menu resource. The code defines a menu with three submenu items in the menu bar (File, Edit, and Font) and a command item (Help). Each submenu has several command items, and the Font submenu has two other submenus within it.
MENU ID_MENU_RESOURCE
BEGIN
SUBMENU "~File", IDM_FILE
BEGIN
MENUITEM "~Open...", IDM_FI_OPEN
MENUITEM "~Close\tF3", IDM_FI_CLOSE, 0, MIA_DISABLED
MENUITEM "~Quit", IDM_FI_QUIT
MENUITEM "", IDM_FI_SEP1, MIS_SEPARATOR
MENUITEM "~About Sample", IDM_FI_ABOUT
END
SUBMENU "~Edit", IDM_EDIT
BEGIN
MENUITEM "~Undo", IDM_ED_UNDO, 0, MIA_DISABLED
MENUITEM "", IDM_ED_SEP1, MIS_SEPARATOR
MENUITEM "~Cut", IDM_ED_CUT
MENUITEM "C~opy", IDM_ED_COPY
MENUITEM "~Paste", IDM_ED_PASTE
MENUITEM "C~lear", IDM_ED_CLEAR
END
SUBMENU "Font", IDM_FONT
BEGIN
SUBMENU "Style", IDM_FONT_STYLE
BEGIN
MENUITEM "Plain", IDM_FONT_STYLE_PLAIN
MENUITEM "Bold", IDM_FONT_STYLE_BOLD
MENUITEM "Italic", IDM_FONT_STYLE_ITALIC
END
SUBMENU "Size", IDM_FONT_SIZE
BEGIN
MENUITEM "10", IDM_FONT_SIZE_10
MENUITEM "12", IDM_FONT_SIZE_12
MENUITEM "14", IDM_FONT_SIZE_14
END
END
MENUITEM "F1=Help", 0x00, MIS_TEXT | MIS_BUTTONSEPARATOR | MIS_HELP
END
To define a menu item with the MIS_BITMAP style, an application must use a tool such as Icon Editor to create a bit map, include the bit map in its resource-definition file, and define a menu in the file (as shown in the following figure). The text for the bit map menu items is an ASCII representation of the resource identifier of the bit map resource to be displayed for that item.
/* Bring externally created bit maps into the resource file. */
BITMAP 101 button.bmp
BITMAP 102 hirest.bmp
BITMAP 103 hizoom.bmp
BITMAP 104 hired.bmp
/* Connect a menu item with a bit map. */
SUBMENU "~Bitmaps", IDM_BITMAP
BEGIN
MENUITEM "#101", IDM_BM_01, MIS_BITMAP
MENUITEM "#102", IDM_BM_02, MIS_BITMAP
MENUITEM "#103", IDM_BM_03, MIS_BITMAP
MENUITEM "#104", IDM_BM_04, MIS_BITMAP
END