Когда пользователь выбирает командный пункт, система отправляет командное сообщение окну, которое владеет меню. Если командный пункт в системном меню, система отправляет сообщение WM_SYSCOMMAND. В противном случае, она отправляет сообщение WM_COMMAND.
Значение, связанное с каждым пунктом меню, которое открывает подменю - это дескриптор соответствующего подменю. Когда пользователь указывает на такой пункт, система открывает подменю. Командное сообщение не отправляется окну владельцу. Однако, система отправляет окну владельцу сообщение WM_INITMENUPOPUP перед показом на экране подменю. Вы можете получить дескриптор подменю, связанного с пунктом, при помощи использования функции GetSubMenu или GetMenuItemInfo.
Строка меню обычно содержит имена меню, но она может содержать также и командные пункты. Подменю обычно содержит командные пункты, но оно может содержать также и пункты, которые открывают вложенные подменю. Прибавляя такие пункты к подменю, Вы можете вкладывать меню на любую глубину. Чтобы обеспечить визуальный ориентир для пользователя, система автоматически показывает на экране маленькую стрелку справа от текста пункта меню, который открывает подменю (пункт Picture на рисунке внизу).