Menus: Design Guidelines 

A menu is a list of commands available to the user in the current context.

  • For any selected object, make all the contents of the Edit and View menus also appear on the shortcut menu.

  • Use separators to separate obvious groups of commands.
    Art Image The standard separator is a single line that spans the width of the menu.

  • Designate one character out of each menu title or command as its access key.
    Art Image Choose unique access keys for each menu title, and avoid duplicating access keys on a given menu. Using the same access key for more than one label or command can eliminate keyboard access.

  • Follow these guidelines for cascading menus:

    • If three or more menu commands begin with the same word, put them on a cascading menu that uses that word as its label. In the following example, the New cascading menu replaces separate commands for New Computer, New Contact, New Group, and so on.
      Art Image
    • Avoid using cascading menus in other cascading menus. In other words, use only one level of cascading menu. Multiple levels of cascading menus add complexity and can be disorienting.
    • Do not place frequently or repetitively used commands on a cascading menu, where they will be more difficult to locate.
      As an alternative to a cascading menu, you can make choices available in a secondary window, particularly when the choices are independent settings; this allows the user to set multiple options with one invocation of a command. You can also represent common commands with buttons on a toolbar.
  • Do not use graphics-only or owner-drawn menus that do not support keyboard access. These types of menus are not accessible to all users.

  • If a menu command is not appropriate or applicable in a particular context, then disable it. Hiding menu commands is disorienting and denies users knowledge of their potential options, and a message informing users that a command is unavailable is disruptive.
    Exception: If disabling a menu command creates performance problems, you can leave the unavailable command active and have its selection result in an error message.

  • Do not put icons next to menu commands.
    Exceptions: As described elsewhere in this topic, you may show check marks, radio button dots, and cascading menu arrows.

  • If you use check marks on the menu to represent the selection of independent settings, the check-mark behavior must conform to check-box guidelines. Setting selection is represented with a check mark to the left of the command, as shown in the following figure.
    Art Image

    Developer Note:
    Check Boxes in Menus: To place a check box in a menu, set the MFS_CHECKED state.

    • For example, if a menu contains functionally independent commands for object properties, such as Enable and Enforced, each command could function as a check box. The user can change each setting without affecting the other, even though they both apply to a single object selection.
    • If a selection contains mixed states for the setting listed in the menu, display the menu without the checkmark.
    • If the two states of the setting are not obvious opposites, use option-button behavior (described below) instead of check boxes, so that you can show both settings. For example, a new user might incorrectly guess that the opposite of a menu command named Full Duplex is Empty Duplex. Because this is not the case, pair the Full Duplex command with a mutually exclusive second command, Half Duplex, in an option-button group instead of using a check mark. Use the following guidelines to display related setting states:
  • If there is room on a menu, use option buttons to include both setting states as individual commands and mutually exclusive choices. This helps to avoid confusion because the user can view both options at once. Use menu separators to group the choices.

  • If there is insufficient room on the menu for both choices, use a single menu command and change its name to the related action when selected. In this case, the menu command's name does not reflect the current state; it indicates the state after the user chooses the command. Where possible, define names that use the same access key. For example, the letter D could be used for a menu command that toggles between Full Duplex and Half Duplex. Carefully consider the trade-offs before using this alternative, because it is harder for users to locate and identify the appropriate menu command.

  • If in a menu you simulate option button behavior to represent mutually exclusive settings, you must conform to option-button guidelines. Setting selection is represented with a bullet mark to the left of the command, as shown in the following figure. Use separator lines to distinguish the group of mutually exclusive options from other commands.

    Developer Note:
    Option Buttons in Menus: To place a radio button in a menu, set the MFS_CHECKED state and MFT_RADIOCHECK flag. The HBITMAP parameter must be null.

    For example, if a menu contains alignment properties — such as Left, Center, and Right — they form a group of interdependent settings. Because a particular paragraph can have only one type of alignment, choosing one resets the property to the chosen menu command setting.
    Art Image

  • Do not use menu commands that change depending on the state of a modifier key. Such techniques hide functionality from a majority of users.

  • A menu can have a default command. The system designates a default menu command by displaying its label in bold text. A default menu command reflects a choice that is supported through a shortcut technique, such as double-clicking or drag-and-drop. For example, if the default command for an application or document file icon is Open, define this as the default menu command. Similarly, if the default command for a drag-and-drop operation is Copy, display this command as the default menu command on the shortcut menu for a non-default (secondary mouse button) drag-and-drop operation.

  • If you define a keyboard shortcut for a command that also appears in a drop-down menu, display the shortcut in the menu. Display the shortcut key next to the command, and align shortcuts with other shortcuts in the menu. Left-align shortcuts to the first tab position after the longest menu command with a shortcut. Do not use spaces for alignment. They might not be displayed properly in the proportional font that the system uses to display menu text or if the user changes the font setting for menu text.
    Match key names to those inscribed on the key caps. For example, display CTRL and SHIFT key combinations as CTRL*+key* (rather than CONTROL*+key* or control*+key* or ^+key) and SHIFT*+key*. When using function keys for menu command shortcuts, display the name of the key as Fn, where n is the function key number.

  • Avoid using multiple columns or scrolling menus. Although Windows supports these forms of presentation, they add complexity to a user's experience with browsing and interacting with the menu.

See Also


Access Keys
Check Boxes
Drop-Down Menus
Option Buttons
Shortcut Menus
Title Bars