初始化 curses

此部分描述了用于初始化 curses 的命令。

使用以下命令来初始化 curses:

命令 描述
endwin 终止 curses 子例程及其数据结构
initscr 初始化 cursess 子例程库及其数据结构
isendwin 如果已调用 endwin 子例程而随后未调用 wrefresh 子例程,那么返回 TRUE
新术语 设置新终端
setupterm 设置 TERMINAL 结构以供 curses 使用
必须将 curses.h 文件包括在任何调用 curses 子例程的程序的开头。 为此,使用以下语句:
#include <curses.h>

在调用操作窗口或屏幕的子例程前,必须调用 initscrnewterm 子例程。 这些子例程首先保存终端设置,然后调用 setupterm 子例程以建立 curses 终端。

如果需要临时暂挂 curses,请使用 shell escape 或子例程。 要在临时 escape 后恢复,请调用 wrefreshdoupdate 子例程。 在退出 curses 程序前,必须调用 endwin 子例程。 endwin 子例程恢复 tty 方式,将光标移动到屏幕的左下角,并将终端复位至正确的非可视方式。

大多数交互式、面向屏幕的程序要求每次输入一个字符而不必使结果回送到屏幕。 要想将程序确定为一次输入一个字符,请在调用 initscr 子例程后调用 cbreaknoecho 子例程。 接受此类输入时,程序还应调用以下子例程:
  • nonl 子例程。
  • intrflush 子例程,该子例程的 Window 参数设为 stdscrFlag 参数设为 FALSEWindow 参数是必需的,但被忽略了。 可将 stdscr 作为 Window 参数的值使用,因为已创建了 stdscr
  • keypad 子例程,该子例程的 Window 参数设为 stdscrFlag 参数设为 TRUE

出于优化原因,如果不想不必要地调用 wrefresh 子例程,那么 isendwin 子例程将会很有帮助。 要确定是否调用了 endwin 子例程而随后未调用 wrefresh 子例程,请使用 isendwin 子例程。