What's the difference between CreateMenu and CreatePopupMenu?
CreateMenu
creates a horizontal menu bar, suitable for attaching to a
top-level window. This is the sort of menu that says
"
File,
Edit", and so on.
CreatePopupMenu
creates a vertical popup menu, suitable for use as a submenu
of another menu (either a horizontal menu bar or another popup menu)
or as the root of a context menu.
If you get the two confused, you can get strange menu behavior.
Windows on rare occasions detects that you confused the two
converts as appropriate, but I wouldn't count on Windows
successfully reading your mind.
There is no way to take a menu and ask it whether it is horizontal
or vertical. You just have to know.
Answers to other questions about menus:
When a window is destroyed, its menu is also destroyed.
When a menu is destroyed, the entire menu tree is destroyed.
(All its submenus are destroyed, all the submenu's submenus,
etc.)
And when you destroy a menu, it had better not be the submenu
of some other menu. That other menu would have an invalid
menu as a submenu!
If you remove a submenu from its parent, then you become
responsible for destroying it, since it no longer gets
destroyed automatically when the parent is destroyed.
It is legal for a menu to be a submenu of multiple
parent menus. Be extra careful when you do this, however,
because if one of the parents is destroyed, it will destroy
the submenu with it, leaving the other parent with an invalid
submenu.
And finally: The menu nesting limit is currently 25
on Windows XP. That may change in the future, of course.
(As with window nesting, Windows 95 let you go ahead and nest
menus all you wanted. In fact, you could go really evil and
create an infinite loop of menus. You crashed pretty quickly
thereafter, of course...)