Menus

This section describes menus and explains how to use them.

In This Section

Name Description
About Menus Discusses menus.
Using Menus Provides code examples of tasks related to menus.
Menu Reference Contains the API reference.
Name Description
AppendMenu Appends a new item to the end of the specified menu bar, drop-down menu, submenu, or shortcut menu. You can use this function to specify the content, appearance, and behavior of the menu item.
CheckMenuItem Sets the state of the specified menu item's check-mark attribute to either selected or clear.
CheckMenuRadioItem Checks a specified menu item and makes it a radio item. At the same time, the function clears all other menu items in the associated group and clears the radio-item type flag for those items.
CreateMenu Creates a menu. The menu is initially empty, but it can be filled with menu items by using the InsertMenuItem, AppendMenu, and InsertMenu functions.
CreatePopupMenu Creates a drop-down menu, submenu, or shortcut menu. The menu is initially empty. You can insert or append menu items by using the InsertMenuItem function. You can also use the InsertMenu function to insert menu items and the AppendMenu function to append menu items.
DeleteMenu Deletes an item from the specified menu. If the menu item opens a menu or submenu, this function destroys the handle to the menu or submenu and frees the memory used by the menu or submenu.
DestroyMenu Destroys the specified menu and frees any memory that the menu occupies.
DrawMenuBar Redraws the menu bar of the specified window. If the menu bar changes after the system has created the window, this function must be called to draw the changed menu bar.
EnableMenuItem Enables, disables, or grays the specified menu item.
EndMenu Ends the calling thread's active menu.
GetMenu Retrieves a handle to the menu assigned to the specified window.
GetMenuBarInfo Retrieves information about the specified menu bar.
GetMenuCheckMarkDimensions Retrieves the dimensions of the default check-mark bitmap. The system displays this bitmap next to selected menu items. Before calling the SetMenuItemBitmaps function to replace the default check-mark bitmap for a menu item, an application must determine the correct bitmap size by calling GetMenuCheckMarkDimensions.
GetMenuDefaultItem Determines the default menu item on the specified menu.
GetMenuInfo Retrieves information about a specified menu.
GetMenuItemCount Retrieves the number of items in the specified menu.
GetMenuItemID Retrieves the menu item identifier of a menu item located at the specified position in a menu.
GetMenuItemInfo Retrieves information about a menu item.
GetMenuItemRect Retrieves the bounding rectangle for the specified menu item.
GetMenuState Retrieves the menu flags associated with the specified menu item. If the menu item opens a submenu, this function also returns the number of items in the submenu.
GetMenuString Copies the text string of the specified menu item into the specified buffer.
GetSubMenu Retrieves a handle to the drop-down menu or submenu activated by the specified menu item.
GetSystemMenu Enables the application to access the window menu (also known as the system menu or the control menu) for copying and modifying.
HiliteMenuItem Highlights or removes the highlighting from an item in a menu bar.
InsertMenuItem Inserts a new menu item at the specified position in a menu.
IsMenu Determines whether a handle is a menu handle.
LoadMenu Loads the specified menu resource from the executable (.exe) file associated with an application instance.
LoadMenuIndirect Loads the specified menu template in memory.
MenuItemFromPoint Determines which menu item, if any, is at the specified location.
ModifyMenu Changes an existing menu item. This function is used to specify the content, appearance, and behavior of the menu item.
RemoveMenu Deletes a menu item or detaches a submenu from the specified menu. If the menu item opens a drop-down menu or submenu, RemoveMenu does not destroy the menu or its handle, allowing the menu to be reused. Before this function is called, the GetSubMenu function should retrieve a handle to the drop-down menu or submenu.
SetMenu Assigns a new menu to the specified window.
SetMenuDefaultItem Sets the default menu item for the specified menu.
SetMenuInfo Sets information for a specified menu.
SetMenuItemBitmaps Associates the specified bitmap with a menu item. Whether the menu item is selected or clear, the system displays the appropriate bitmap next to the menu item.
SetMenuItemInfo Changes information about a menu item.
TrackPopupMenu Displays a shortcut menu at the specified location and tracks the selection of items on the menu. The shortcut menu can appear anywhere on the screen.
TrackPopupMenuEx Displays a shortcut menu at the specified location and tracks the selection of items on the shortcut menu. The shortcut menu can appear anywhere on the screen.

The following function is obsolete.

Name Description
InsertMenu Inserts a new menu item into a menu, moving other items down the menu.
[!Note]
The InsertMenu function has been superseded by the InsertMenuItem function. You can still use InsertMenu, however, if you do not need any of the extended features of InsertMenuItem.


Name Description
WM_COMMAND Sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
WM_CONTEXTMENU Informs a window that the user clicked the right mouse button (right-clicked) in the window.
WM_ENTERMENULOOP Informs an application's main window procedure that a menu modal loop has been entered.
WM_EXITMENULOOP Informs an application's main window procedure that a menu modal loop has been exited.
WM_GETTITLEBARINFOEX Sent to request extended title bar information. A window receives this message through its WindowProc function.
WM_MENUCOMMAND Sent when the user makes a selection from a menu.
WM_MENUDRAG Sent to the owner of a drag-and-drop menu when the user drags a menu item.
WM_MENUGETOBJECT Sent to the owner of a drag-and-drop menu when the mouse cursor enters a menu item or moves from the center of the item to the top or bottom of the item.
WM_MENURBUTTONUP Sent when the user releases the right mouse button while the cursor is on a menu item.
WM_NEXTMENU Sent to an application when the right or left arrow key is used to switch between the menu bar and the system menu.
WM_UNINITMENUPOPUP Sent when a drop-down menu or submenu has been destroyed.
Name Description
MDINEXTMENU Contains information about the menu to be activated.
MENUBARINFO Contains menu bar information.
MENUEX_TEMPLATE_HEADER Defines the header for an extended menu template. This structure definition is for explanation only; it is not present in any standard header file.
MENUEX_TEMPLATE_ITEM Defines a menu item in an extended menu template. This structure definition is for explanation only; it is not present in any standard header file.
MENUGETOBJECTINFO Contains information about the menu that the mouse cursor is on.
MENUINFO Contains information about a menu.
MENUITEMINFO Contains information about a menu item.
MENUITEMTEMPLATE Defines a menu item in a menu template.
MENUITEMTEMPLATEHEADER Defines the header for a menu template. A complete menu template consists of a header and one or more menu item lists.
TPMPARAMS Contains extended parameters for the TrackPopupMenuEx function.