---
name: "menu_sub"
section: "3menu"
platform: "linux"
package: "ncurses-doc"
version: "6.5+20250216-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/win/3menu"
---

# menu\_sub(3menu)

make and break menu window and subwindow associations

Part of [win(3menu)](/win/3menu.md).

## NAME

**menu\_win** - make and break menu window and subwindow associations

## SYNOPSIS

```
#include <menu.h>
```

**int set\_menu\_win(MENU \****menu***, WINDOW \****win***);** **WINDOW \*menu\_win(const MENU \****menu***);**

**int set\_menu\_sub(MENU \****menu***, WINDOW \****sub***);** **WINDOW \*menu\_sub(const MENU \****menu***);**

**int scale\_menu(const MENU \****menu***, int \****rows***, int \****columns***);**

## DESCRIPTION

**Every menu has an associated pair of curses windows.** **The menu window** **displays any title and border associated with the window; the menu subwindow** **displays the items of the menu that are currently available for selection.**

**The first four functions get and set those windows.** **It is not necessary to set** **either window; by default, the driver code uses stdscr for both.**

**In the set\_ functions, window argument of** *NULL* **is treated as though** **it were stsdcr.  A menu argument of** *NULL* **is treated as a request** **to change the system default menu window or subwindow.**

**The function scale\_menu returns the minimum size required for the** **subwindow of** *menu***.**

## RETURN VALUE

**Routines that return pointers return** *NULL* **on error.** **Routines that return** **an integer return one of the following error codes:**

- **E\_OK**

  **The routine succeeded.**

- **E\_SYSTEM\_ERROR**

  **System error occurred (see [errno(3)](/errno/3.md)).**

- **E\_BAD\_ARGUMENT**

  **Routine detected an incorrect or out-of-range argument.**

- **E\_POSTED**

  **The menu has already been posted.**

- **E\_NOT\_CONNECTED**

  **No items are connected to the menu.**

## PORTABILITY

**These routines emulate the System V menu library.** **They were not supported on** **Version 7 or BSD versions.**

## AUTHORS

**Juergen Pfeifer.** **Manual pages and adaptation for new curses by Eric S. Raymond.**

## SEE ALSO

**ncurses(3NCURSES),** **curses\_variables(3NCURSES),** **menu(3MENU)**
