📄 00000008.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: <A HREF="mailto:wdlin@CCCA.NCTU.edu.tw">wdlin@CCCA.NCTU.edu.tw</A> (Luke Lin), 信区: programming <BR>标 题: Re: ** 有关 curses.h 萤幕控制函数 <BR>发信站: 交大资工 News Server (Sun Jun 4 11:37:50 1995) <BR>转信站: phoenix!news.csie.nctu!wdlin <BR> <BR> <BR> <BR>SYNOPSIS <BR> <BR> cc [ flags ] files -lcurses -ltermcap [ libraries ] <BR> <BR> #include <curses.h> (自动的引入 <stdio.h> 和 <unctl.h>) <BR> <BR> 以下所列的参数不全都是整体的变数。这是一个 curses 常式所用的 <BR> 参数的摘要。如果没有注明的话,所有的常式都传回一个整数 ERR 或 <BR> 者 OK 。而传回指标值的常式都会在错误的时候传回 NULL 。 ERR 、 <BR> OK 和 NULL 都定义在 <curses.h> 里头。传回整数的常式没有列在下 <BR> 面的参数列中。 <BR> <BR> bool bf <BR> char **area,*boolnames[], *boolcodes[], *boolfnames[], *bp <BR> char *cap, *capname, codename[2], erasechar, *filename, *fmt <BR> char *keyname, killchar, *label, *longname <BR> char *name, *numnames[], *numcodes[], *numfnames[] <BR> char *slk_label, *str, *strnames[], *strcodes[], *strfnames[] <BR> char *term, *tgetstr, *tigetstr, *tgoto, *tparm, *type <BR> chtype attrs, ch, horch, vertch <BR> FILE *infd, *outfd <BR> int begin_x, begin_y, begline, bot, c, col, count <BR> int dmaxcol, dmaxrow, dmincol, dminrow, *errret, fildes <BR> <BR> <BR>SYSTEM V SYNPSIS <BR> <BR> /usr/5bin/cc [ flag ... ] file ... -lcurses [ library ... ] <BR> <BR> #include <curses.h> (自动的引入 <stdio.h>、<termio.h> 和 <BR> <unctrl.h>) <BR> <BR> <BR>DESCRIPTION <BR> <BR> 这些常式给使用者一个合理的方法来更新萤幕。它们保存了现在萤幕 <BR> 的内容,而使用者也可以设定新的萤幕内容。然後 refresh() 就会告 <BR> 诉常式让萤幕看来像新的。为了要初始化这些常式, initscr() 一定 <BR> 要在其它所有有关处理视窗和萤幕的常式使用前呼叫。而 endwin() <BR> 也应该在程式结束之前呼叫。 <BR> <BR> <BR>SYSTEM V DESCRIPTION <BR> <BR> curses 常式给了使用者一个和终端机无关的合理方式来更新萤幕。 <BR> <BR> 为了要初始化这些常式, initscr() 一定要在其它所有有关处理视窗 <BR> 和萤幕的常式使用前呼叫。有些个例外要注意它们应用的地方。而 <BR> endwin() 也应该在程式结束之前呼叫。如果要一次读入一个字元且没 <BR> 有显示到萤幕上的话 (一定要是在交互影响、萤幕导向的程式中) , <BR> 在呼叫 initscr() 後,你应该呼叫 "cbreak(); noecho();" 大部份 <BR> 的程式还要再呼叫 "nonl(); intrflush(stdscr,FALSE); <BR> keypad(stdscr,TRUE);"。 <BR> <BR> 在一个 curses 程式在跑之前,一个终端机的 TAB 的位置应该要先设 <BR> 定。如果它的初始字串如果有被定义的话,也应该被输出。这可以藉 <BR> 著你的 .profile 档或 .login 档中的 tset 命令来作。如果要知到 <BR> 更多的细节,请看 tset(1) 和 terminfo(5V) 中的 Tabs 和 <BR> Initialization 副章节。 <BR> <BR> curses 函数馆包括了可以操作一种称为视窗的资料结构的常式,这种 <BR> 资料结构可以视为一种把全部或是部份萤幕上的字元都用二维阵列记 <BR> 录下来的资料结构。最刚开始有个叫作 stdscr 的视窗是被供应的, <BR> 而它的大小就是萤幕的大小。其它的视窗可以用 newwin() 来开启。 <BR> 视窗是用 WINDOW * 这种变数型态来宣告的;型态 WINDOW 是用 C 的 <BR> 结构定义在 <curses.h> 中的。操作这些资料结构的常式描述如下, <BR> 它们大多都是基於 move() 和 addch()。这些常式中比较一般化的版 <BR> 本在名字的开头都有一个 w ,它们允许你去指定一个视窗来用。而不 <BR> 是以 w 开头的常式通常用到的视窗就是 stdscr 。如果 refresh() <BR> 被呼叫的话,就会让使用者的终端机萤幕看起来像是 stdscr 。事实 <BR> 上,在视窗中的字元的型态是 chtype ,所以其它有关每个字元的资 <BR> 讯也是会被储存起来的。 <BR> <BR> 另外有一种称为 pad 的视窗也是有可能被用到的。这种视窗并不被萤 <BR> 幕的大小所限制,而且它们的内容也不一定要被完全的显示出来。在 <BR> "Window and Pad Manipulation" 中的 newpad() 有更多的有关资讯 <BR> 。 <BR> <BR> 为了要在萤幕上增加字元,如果要在可以支持像是底线显示、反转显 <BR> 示等模式的字元的萤幕上作这些事情的话,显示的属性也要加入考虑 <BR> 。画线的字元应该也是可以被输出的。输入的时候, curses 也可以 <BR> 转换输出跳脱序列的方向键或是功能键成为单一的值。像是 <BR> A_REVERSE 、ACS_HLINE 、 KEY_LEFT 这些有关显示的属性、画线字 <BR> 元和输入值的名字都定义在 <curses.h> 里头。 <BR> <BR> curses 也定义了一个只用来确定一些如清除萤幕、重绘萤幕等低阶动 <BR> 作的 WINDOW * 变数 cruscr 。只有少数的常式才会用到 curscr 。 <BR> <BR>-- <BR>Luke Lin. 林文□ <BR>e-mail address:<A HREF="mailto:wdlin@CCCA.NCTU.edu.tw">wdlin@CCCA.NCTU.edu.tw</A> <A HREF="mailto:u8222002@cc.nctu.edu.tw">u8222002@cc.nctu.edu.tw</A> <BR> * Origin: ● 交大资工 News Server ● From: <A HREF="mailto:wdlin@ccca.nctu.edu.tw">wdlin@ccca.nctu.edu.tw</A> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -