---
name: "menu_hook"
section: "3x"
platform: "macos"
package: "ncurses"
version: "79"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/menu_hook/3x"
---

# menu\_hook(3x)

set hooks for automatic invocation by applications

## NAME

**menu\_hook** - set hooks for automatic invocation by applications

## SYNOPSIS

**#include \<menu.h\>**\
 int set\_item\_init(MENU \*menu, Menu\_Hook func);\
 Menu\_Hook item\_init(const MENU \*menu);\
 int set\_item\_term(MENU \*menu, Menu\_Hook func);\
 Menu\_Hook item\_term(const MENU \*menu);\
 int set\_menu\_init(MENU \*menu, Menu\_Hook func);\
 Menu\_Hook menu\_init(const MENU \*menu);\
 int set\_menu\_term(MENU \*menu, Menu\_Hook func);\
 Menu\_Hook menu\_term(const MENU \*menu);\

## DESCRIPTION

These functions make it possible to set hook functions to be called at various points in the automatic processing of input event codes by **menu\_driver**.

The function **set\_item\_init** sets a hook to be called at menu-post time and each time the selected item changes (after the change).  **item\_init** returns the current item init hook, if any (**NULL** if there is no such hook).

The function **set\_item\_term** sets a hook to be called at menu-unpost time and each time the selected item changes (before the change).  **item\_term** returns the current item term hook, if any (**NULL** if there is no such hook).

The function **set\_menu\_init** sets a hook to be called at menu-post time and just after the top row on the menu changes once it is posted.  **menu\_init** returns the current menu init hook, if any (**NULL** if there is no such hook).

The function **set\_menu\_term** sets a hook to be called at menu-unpost time and just before the top row on the menu changes once it is posted. **menu\_term** returns the current menu term hook, if any (**NULL** if there is no such hook).

## RETURN VALUE

Routines that return pointers return **NULL** on error.  Other routines return one of the following:

- **E\_OK**

  The routine succeeded.

- **E\_SYSTEM\_ERROR**

  System error occurred (see **errno**).

## SEE ALSO

**curses**(3X), **menu**(3X).

## NOTES

The header file **\<menu.h\>** automatically includes the header file **\<curses.h\>**.

## 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.
