菜单库对cureses 基础库进行了很好的扩展。你可以通过这个库所提供的函数方便的创建菜
单。如果你想让它更美观,可以定制它的显示效果。下面我们就来看看这个库。
菜单是一个用来帮助用户选择子菜单项的屏幕。简而言之,菜单就是一个菜单项的集合,使
你可以方便的从中选择相应的菜单命令。curses 菜单库还提供编制多选菜单的功能。有些
读者可能不了解多选菜单。这个我们稍后讨论,我们先来了解一下菜单库的基础知识。
17.1 基础知识
要创建菜单,你首先要建立菜单项,然后发送并显示菜单。接下来,所有处理用户响应的工
作就交给功能强大的menu_driver()函数来完成。这个函数是整个菜单库的核心。
一个菜单程序大致的控制流程如下:
1. 初始化curses。
2. 用函数new_item()创建菜单项,同时为菜单项指定名称并且描述其相应的功能。
3. 用函数new_menu()创建菜单,同时指定要添加的菜单项。
4. 用函数post_menu()递送菜单并刷新屏幕
5. 用一个循环处理用户的菜单请求。并用menu_driver()函数对菜单做必要的更新。
6. 用unpost_menu()取消菜单递送。
7. 用free_menu()释放分配给菜单的内存
8. 用free_item()释放分配给菜单项的内存
9. 结束curses
单。如果你想让它更美观,可以定制它的显示效果。下面我们就来看看这个库。
菜单是一个用来帮助用户选择子菜单项的屏幕。简而言之,菜单就是一个菜单项的集合,使
你可以方便的从中选择相应的菜单命令。curses 菜单库还提供编制多选菜单的功能。有些
读者可能不了解多选菜单。这个我们稍后讨论,我们先来了解一下菜单库的基础知识。
17.1 基础知识
要创建菜单,你首先要建立菜单项,然后发送并显示菜单。接下来,所有处理用户响应的工
作就交给功能强大的menu_driver()函数来完成。这个函数是整个菜单库的核心。
一个菜单程序大致的控制流程如下:
1. 初始化curses。
2. 用函数new_item()创建菜单项,同时为菜单项指定名称并且描述其相应的功能。
3. 用函数new_menu()创建菜单,同时指定要添加的菜单项。
4. 用函数post_menu()递送菜单并刷新屏幕
5. 用一个循环处理用户的菜单请求。并用menu_driver()函数对菜单做必要的更新。
6. 用unpost_menu()取消菜单递送。
7. 用free_menu()释放分配给菜单的内存
8. 用free_item()释放分配给菜单项的内存
9. 结束curses
现在我们看一个简单菜单的示例程序,它是用方向键来更新当前菜单项的。
例18 菜单基础知识示例
#include <curses.h>
#includ