Меню выстраивается иерархически. На верхнем уровне иерархии находится строка меню (menu bar), содержащая перечень меню, которые, в свою очередь, могут содержать подменю (submenus). Строка меню иногда называется меню верхнего уровня (top-level menu), а меню, и подменю - также известны как выскакивающие меню (pop-up menus).
Пункт меню может или выполнить команду или открыть подменю. Пункт, который выполняет команду называется командный пункт (command item) или команда (command).
Пункт строки меню почти всегда открывает меню. Строки меню редко содержат командные пункты. Меню, которое открывается из строки меню, выпадает вниз из строки меню и иногда называется "выпадающим" меню (drop-down menu). Когда "выпадающее" меню отображается, оно соединено со строкой меню. Пункт меню в строке меню, который открывает "выпадающее" меню, называется также и именем меню (menu name).
Имена в строке меню обозначают главные категории команд, которые обеспечивает приложение. Выбор имени из строки меню обычно открывает меню, пункты которого соответствуют командам в категории. Например, строка меню может содержать имя Файл (File), которое, когда выбирается пользователем, активизирует меню с пунктами такими как Создать (New), Открыть(Open) и Сохранить(Save). Чтобы получать информацию о строке меню, вызовите функцию GetMenuBarInfo.
Только перекрывающее или выскакивающее окно может содержать строку меню; дочернее окно не может иметь его. Если окно имеет область заголовка, система располагает строку меню прямо под ней. Строка меню всегда видима. Подменю не видимо, однако до тех пор, пока пользователь не выберет пункт меню, который активизирует его. Подробную информацию о перекрывающих и выскакивающих окнах, см. в статье Типы окон.
Каждое меню должно иметь окно владельца. Система отправляет сообщения окну владельцу меню, когда пользователь выбирает меню или выбирает пункт из меню.
Этот раздел обсуждает нижеследующие темы.