
MENU_GEN_PIN_WINDOW takes two values as parameters. One is a base frame; the other is a
string that acts as a title for the frame. The menu’s pin window is sized according to the
width of the widest menu item, not according to the title. You should choose a title that will
fit within the size of the pin window. If the title specified in MENU_GEN_PIN_WINDOW is too
long, then it will be truncated. Example 11-2 shows how to create a menu with a pushpin.
Example 11-2. How to create a menu containing a pushpin
Frame frame;
Menu menu;
void func1(), func2();
...
/* Create base frame for the application */
frame = (Frame)xv_create(NULL, FRAME, NULL);
...
menu = (Menu)xv_create(NULL, MENU,
/* the pinup menu subframe is a child of the base frame */
MENU_GEN_PIN_WINDOW, frame, "title",
MENU_ITEM,
MENU_STRING, "item1",
MENU_NOTIFY_PROC, func1,
NULL,
MENU_ITEM,
MENU_STRING, "item2",
MENU_NOTIFY_PROC, func2,
NULL,
NULL);
...
The new command frame is created as a subframe of the frame value. The title label for the
menu and the frame is the title value. Note that you should not use
MENU_TITLE_ITEM if you
are using MENU_GEN_PIN_WINDOW since a menu item is automatically inserted at the top of
the menu. If this item is removed, the pin will also be removed.
When the menu is displayed as a result of a call to menu_show(), a pushpin in the upper-
left corner of the menu is displayed allowing the user to pin up the menu, that causes ...