显示某个字元或字符串
int addch(ch)
int waddch(win, ch)
int mvaddch(y,x, ch)
int mvwaddch(win, y, x, ch)
------------------------------------------------
int addstr(str)
int addnstr(str, n)
int waddstr(win, str)
int waddnstr(win, str, n)
int mvaddstr(y, x, str)
int mvaddnstr(y, x, str, n)
int mvwaddstr(win, y, x, str)
int mvwaddnstr(win, y, x, str, n)
------------------------------------------------
int addchstr(chstr)
int addchnsrtr(chstr, n)
int waddchstr(win, chstr)
int waddchnstr(win, chstr, n)
int mvaddchstr(y, x, chstr)
int mvaddchnstr(y, x, chstr, n)
int mvwaddchstr(win, y, x, chstr)
int mvwaddchnstr(win, y, x, chstr, n)
*****chstr是指向ch type数组的一个指针。*****
------------------------------------------------
int echochar (ch)
int wechochar(win, ch)
------------------------------------------------
int printw(fmt,..)
int wprintw(win, fmt,....)
int mvprintw(y, x, fmt,...)
int mvwprntw(win, y, x, fmt,..)
------------------------------------------------
int insch(c)
int winsch(win, c)
int mvinsch(y, x, c)
int mvwinsch9win, y, x, c)
这些函数把字符ch插入到光标的左边,光标后面的所有字符则向右移动一个位置。 在这一行最右端的字符可能会丢失。
int insert()
int winsert(win)
在当前行的上方插入一个空行(最底下的一行将被丢失)。
int insdelin(n)
int winsdelln(win, n)
如果n为正数,则这些函数将在适当的窗口的当前光标上方插入n行 (这样一来最底下的n行将丢失);如果n为负数,则光标下面的n行将被删除, 余下的行将上升,顶替它们的位置。
int insstr(str)
int insnstr(str, n)
int winsstr(win, str)
int winsnstr(win, str, n)
int mvinsstr(y, x, str)
int mvinsnstr(y, x, str, n)
int mvwinsstr(win, y, x, str)
int mvwinsnstr(win, y, x, str, n)
这些函数将在当前光标的左边插入str (字符的个数不能超过一行的限度)。在光标右边的字符将右移,如果到达行 尾,则字符将丢失,光标位置不变。y和x是指在插入str以前先要把光标移动到的坐标,n是要插入的字符的数目(如果n为0则插入整个字符串)。
这些函数将在当前光标的左边插入str(字符的个数不能超过一行的限度)。
int delch()
int wdelch(win)
int mvdelch(y, x)
int mvwdelch(win, y, x)
删除光标左边的字符,并把光标右边余下的字符向左移动一个位置。 y和x是在进行删除操作以前要把光标移动到的坐标。
int deleteln()
int wdeleteln(win)
删除光标下面的一行,并把下面所有的其他行都向上移动一个位置。 此外,屏幕最底下的一行将被清除。
2.方框和直线
int border(ls, rs, ts, bs, tl, tr, bl, br)
int wborder(win, ls, rs, ts, bs, tl, tr, bl, br)
int box(win, vert, hor)
这些函数在窗口的边界(或者win的边界)画上方框。在下面的表格中,读者将可以看到字符,以及它们的默认值。当用零去调用box(.)时将会用到这些默认值。在下面的图中读者可以看到方框中字符的位置
int vline(ch,n)
int wvline(win,ch,n)
int hline(ch,n)
int whline(win,ch,n)
这些函数将从当前光标位置开始画一条水平线或者垂直线。 ch是画线所使用的字符,n是要画的字符的个数,光标位置并不移动。
void bkgdset(ch)
void wbkgdset(win, ch)
这两个函数设置窗口或者屏幕的背景字符和属性。ch的属性将和窗口中所有非空格的字符的属性进行OR操作。背景是窗口的一部分,将不会随着滚动、输入或输出而改变
int bkgd(ch)
int wbkgd(win,ch)
int getch()
int wgetch()
int mvgetch(y, x)
int mvwgetch(win, y, x)
getch()将从终端读取输入,读取的方式取决于是否设置了延迟模式。 如果设置了延迟模式,则getch()将一直等待,直到用户按下一个键为止;如果没有设置延迟模式,则它将返回输入缓冲区中的数据,如果输入缓冲区为空,则它将返回ERR。mvgetch(.)和mvwgetch(.)首先把光标移动到位置(y,x)上。名称中有w字母的函数将从与窗口win相关的终端读取输入, getch()和mvgetch(.)则从屏幕相关的终端读取。
int getstr(str)
int wgetstr(win,str)
int mvgetstr(y,x,str)
int mvwgetstr(win,y,x,str)
int wgetnstr(win,str,n)
这些函数的作用相当于对getch()进行一系列的调用,直到接收到一个新行。 行中的字符存放在str中(所以,在调用getstr(.)之前,不要忘记给字符指针分配内存)。如果打开了回送,则字符串将被显示出来(使用noecho()可以关闭回送),而用户的删除字符以及其他特殊字符也会被解释出来
int clearok(win, bf)
如果bf值为TRUE,则下一次调用wrefresh(win)时将会清除屏幕, 并完全地把它重新画一遍(就像用户在编辑器vi中按下Ctrl+L一样)。
int leaveok(win, bf)
默认的行为是,ncurses让物理光标停留在上次刷新窗口时的同一个位置上。 不使用光标的程序可以把leaveok(.)设置为TRUE,这样一般可以节省光标移动所需要的时间。此外,ncurses将试图使终端光标不可见。
int nl()
int nonl()
这两个函数控制新行的平移。使用nl()可以打开平移,这样在回车时就会 平移到新的一行,在输出时就会走行。而nonl()可以把平移关上。 关上平移之后,ncurses做光标移动操作时速度就会快一些。
4.输入选项
int keypad(win, bf)
bf为TRUE,函数在等待输入时会使能用户终端的键盘上的小键盘。 ncurses将返回一个键代码,该代码在.h头文件中被定义为KEY_*宏,它是针对小键盘上的功能键和方向键的。对于PC键盘来说,这一点是非常有帮助的,因为这样用户就可以使能数字键和光标键。
int meta(win.bf)
bf为TRUE,从getch()返回的键代码将是完整的8位(最高位将不会被去掉)
int cbreak()
int nocbreak()
int crmode()
int nocrmode()
cbreak()和nocbreak()将把终端的CBREAK模式打开或关闭。如果CBREAK打开则程序就可以立刻使用读取的输入信息。如果CBREAK关闭,则输入将被缓存起来,直到产生新的一行(注意:crmode()和nocrmode()只是为了提供向上兼容性,不要使用它们)
int raw()
int noraw()
这两个函数将把RAW模式打开或关闭。RAW与CBREAK相同, 它们的区别在于RAW模式不处理特殊字符。
int echo()
int noecho()
如果把echo()设置为TRUE,则用户所敲的输入将会回送并显示出来, 而noecho()则对此保持沉默。
int halfdelay(t)
此函数与cbreak()相似,但它要延迟t秒钟。
int nodelay(win, bf)
终端将被设置为非阻塞模式。如果没有任何输入则getch()将返回ERR, 否则如果设置为FALSE,则getch()将等待,直到用户按下某个键为止。
int timeout(t)
int wtimeout(win, t)
笔者提倡大家使用这两个函数,而不要使用halfdelay(t)和nodelay(win,bf)。getch()的结果取决于t的值。如果t是正数,则读操作将被阻塞t毫秒; 如果t为零,则不发生任何阻塞;如果t是负数,则程序将阻塞,直到有输入为止。
int notimeout(win,bf)
如果bf为TRUE,则getch()将使用一个特殊的定时器(一秒钟长)。到时间以后再对以Esc等键打头的输入序列进行解释。
int typeahead(fd)
如果fd是-1,则不检查超前键击,否则ncurses将使用文件描述符fd来进行这些检查
int intrflush(win, bf)
当bf为TRUE时使能该函数。在终端上按下任意中断键(quit、break.)时, 所有的输出将会刷新到tty驱动程序队列中。
三.终端属性
int baudrate()
此函数返回终端的速度,以bps为单位。
char erasechar()
此函数返回当前删除的字符。
char killchar()
此函数返回当前杀死的字符。
int has_ic()
int has_il()
如果终端具有插入/删除字符的能力,则has_rc()将返回TRUE,如果终端具有插入/删除行的能力,则has_il()将返回TRUE,否则这两个函数将返回ERR。(注:尚未实现)
四.更新终端
int refresh()
int wrefresh(win)
refersh()将把窗口映像拷贝到终端,而wrefresh(win)将把窗口映像拷贝到win,并使它看起来象原来的样子。
int wnoutrefresh(win)
int doupdate()
wnoutrefresh(win)将会只拷贝到窗口win,这意味着在终端上将不进行任何输出,但是虚拟屏幕实际上看起来象程序员所希望的那样。doupdate()将输出到终端上。程序可以改变许多窗口,对每个窗口都调用一次 wnoutrefresh(win),然后再调用一次doupdate()来更新物理屏幕。
int redrawln(win)
int wredrawln(win,bline,blines)
如果在往屏幕上输出新内容时需要清除一些行或者整个屏幕,可以使用这两 个函数。(可能这些行已经被破坏了或者由于其他的原因。)
int touchwin(win)
int touchline(win, start, count)
int wtouchln(win, y, n, changed)
int untouchwln(win)
这些函数通知ncurses整个win窗口已经被改动过了,或者从start直到 start+count的这些行已经被改动过了。例如,如果用户有一些重叠的窗口 (正如在example.c中一样),对某个窗口的改动不会影响其他窗口的映像。
wtouchln(.) 将按掀从y开始的n行。如果change的值是TRUE,则这些行被按掀过了,否则就还未被按掀过(改变或未改变)。
untouchwin(win)将把窗口win标记为自上次调用refresh()以来还未被按掀。
int ls_linetouched(win, line)
int ls_wint ouched(win)
通过使用这两个函数,用户可以检查自从上次调用refresh()以来,
第line行或者窗口win是否已被按掀过。
int move(y, x)
int wmove(win, y, x)
move()将移动光标,而wmove(win)则从窗口win中移动光标。对输入/输出函数来说,还定义了其他的一些宏,在调用特定函数之前,这些宏可以移动光标。
int curs_set(bf)
这个函数将把光标置为可见或者不可见,如果终端有这个功能
void getyx(win, y, x)
getyx(.)将返回当前光标位置。(注意:这是一个宏)
void getparyx(win, y, x)
如果win是个子窗口,getparyx(.)将把该窗口对应父窗口的坐标存储在y和x,否则y和x都将为-1。(注:此函数尚未实现)
void getbegyx(win,y,x)
void getmaxyx(win,y,x)
int getmaxx(win)
int getmaxy(win)
这些函数把窗口win的开始坐标和大小坐标存放在y和x中。
int getsyx(int y, int x)
int setsyx(int y, int x)
getsyx(.)把虚拟屏幕光标存放在y和x中,而setsyx(.)则设置这个坐标。
如果y和x是-1, 用户调用getsyx(.)将会设置leaveok。
七.滚动
int tscrollok(win, bf)
当光标在屏幕的右下角并且输入了一个字符(或者新的一行)时,如bf为TRUE则窗口win中的文本将上滚一行。如果bf为FALSE,则鼠标留在原来的位置上。当滚动特征打开时,使用下面的函数可以滚动窗口中的内容。
(注意:当用户在窗口的最后一行输入一个新行时,也应该发生相应的滚动操作, 所以在使用scrollok(.)时要十分小心, 否则可能会得到出乎意料的结果。)
int scrol(win)
此函数将使窗口向上滚动一行(数据结构中的行也向上滚动)。
int acrl(n)
int wscrl(win, n)
这两个函数将使屏幕或者窗口win向上向下滚动,滚动方向取决于整数n的值:如果n是正数,则窗口向上滚动n行;如果n是负数,则窗口向下滚动n行
int setscrreg(t, b)
int wsetscrreg(win, t, b)
这两个函数设置一个软滚动区。
小键盘
WINDOW* newpad(nlines,ncols)
WINDOW* subpad(orlg,nlines,ncols,begy,begx)
int prefresh(pad,pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol)
int pnoutrefresh(pad,pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol)
int pechochar (pad,ch)
软标签
int slk_init(int fmt)
int slk_set(int labnum, char* label,int fmt)
int slk_refresh()
int slk_noutrefresh()
char* slk_label(int labnum)
int slk_clear()
int slk_restore()
int slk_touch()
int slk_attron(chty peattr)
int slk_attrset(chty peattr)
int slk_attroff(chty peattr)
这些函数是与attron(attr)、attrset(attr)和attroft(attr)相对应的, 但它们尚未实现。
int beep()
int flash()
char* unctrl(chty pec)
char* keyname(int c)
int filter()
(注:以上函数尚未实现。)
void use_env(bf)
int putwin(WINDOW* win,FILE* filep)
(注:以上函数尚未实现。)
WINDOW* getwin(FILE* filep)
(注:以上函数尚未实现。)
int delay_output(int ms)
int flushinp()
低级访问
int def_prog_mode()
int def_shell)_mode()
int reset_prog_mode()
int reset_shell_mode()
int resetty()
int savetty()
int ripoffline(int line, int (*init)(WINDOW *, int ))
int napms(int ms)
屏幕转储
int scr_dump(char* filename)
(注:此函数尚未实现。)
int scr_restore(char* filename)
(注:此函数尚未实现。)
int scr_init(char* filename)
(注:此函数尚未实现。)
int scr_set(char* filename)
(注:此函数尚未实现。)
Termcap模拟
int tgetent(char *bp,char *name)
int tgetflag(char fd[2])
int tgetnum(char fd[2])
char *tgetstr(char fd[2],char **area)
char tgoto(char *cap,int col,int row)
int tputs(char *str,int offset,int (*putc)())