初始化 curses
此部分描述了用于初始化 curses 的命令。
使用以下命令来初始化 curses:
| 命令 | 描述 |
|---|---|
| endwin | 终止 curses 子例程及其数据结构 |
| initscr | 初始化 cursess 子例程库及其数据结构 |
| isendwin | 如果已调用 endwin 子例程而随后未调用 wrefresh 子例程,那么返回 TRUE |
| 新术语 | 设置新终端 |
| setupterm | 设置 TERMINAL 结构以供 curses 使用 |
必须将 curses.h 文件包括在任何调用 curses 子例程的程序的开头。 为此,使用以下语句:
#include <curses.h>在调用操作窗口或屏幕的子例程前,必须调用 initscr 或 newterm 子例程。 这些子例程首先保存终端设置,然后调用 setupterm 子例程以建立 curses 终端。
如果需要临时暂挂 curses,请使用 shell escape 或子例程。 要在临时 escape 后恢复,请调用 wrefresh 或 doupdate 子例程。 在退出 curses 程序前,必须调用 endwin 子例程。 endwin 子例程恢复 tty 方式,将光标移动到屏幕的左下角,并将终端复位至正确的非可视方式。
大多数交互式、面向屏幕的程序要求每次输入一个字符而不必使结果回送到屏幕。 要想将程序确定为一次输入一个字符,请在调用 initscr 子例程后调用 cbreak 和 noecho 子例程。 接受此类输入时,程序还应调用以下子例程:
- nonl 子例程。
- intrflush 子例程,该子例程的 Window 参数设为 stdscr,Flag 参数设为 FALSE。 Window 参数是必需的,但被忽略了。 可将 stdscr 作为 Window 参数的值使用,因为已创建了 stdscr。
- keypad 子例程,该子例程的 Window 参数设为 stdscr,Flag 参数设为 TRUE。
出于优化原因,如果不想不必要地调用 wrefresh 子例程,那么 isendwin 子例程将会很有帮助。 要确定是否调用了 endwin 子例程而随后未调用 wrefresh 子例程,请使用 isendwin 子例程。