September 10, 1999 MENU_WIN 3

### NAME

menu_sub, menu_win, scale_menu, set_menu_sub, set_menu_win - sub-menu handling

### LIBRARY

Curses Menu Library (libmenu, -lmenu)

### SYNOPSIS

```WINDOW``*` menu_sub(```MENU *menu`)
```WINDOW``*` menu_win(```MENU *menu`)
```int` scale_menu(```MENU *menu``, int *rows``, int *cols`)
```int` set_menu_sub(```MENU *menu``, WINDOW *sub`)
```int` set_menu_win(```MENU *menu``, WINDOW *win`)

### DESCRIPTION

The menu_sub(``) function returns a pointer to the window that will be used to post a menu into, this pointer is set by the set_menu_sub(``) function. The menu_win(``) function returns a pointer to the window in which the menu subwindow will be created when the menu is posted, this pointer is set by the set_menu_win(``) function. The scale_menu(``) function calculates the minimum size a window needs to be to hold the items for a given menu, the parameters rows and cols are set to the required number of rows and columns respectively.

### RETURN VALUES

The functions return one of the following error values:

```E_OK`
  The function was successful.
```E_SYSTEM_ERROR`
  There was a system error during the call.
```E_BAD_ARGUMENT`
  One or more of the arguments passed to the function was incorrect.
```E_POSTED`
  The menu is already posted.
```E_CONNECTED`
  An item was already connected to a menu.
```E_BAD_STATE`
  The function was called from within an initialization or termination routine.
```E_NO_ROOM`
  The menu does not fit within the subwindow.
```E_NOT_POSTED`
  The menu is not posted
```E_UNKNOWN_COMMAND`
  The menu driver does not recognize the request passed to it.
```E_NO_MATCH`
  The character search failed to find a match.
```E_NOT_SELECTABLE`
  The item could not be selected.
```E_NOT_CONNECTED`
  The item is not connected to a menu.
```E_REQUEST_DENIED`
  The menu driver could not process the request.

### SEE ALSO

curses(3), menus(3)

### NOTES

The header ```<menu.h>` automatically includes both ```<curses.h>` and ```<eti.h>`.