当前位置: 技术问答>linux和unix
哪位大虾有UNIX下c语言的图形编程--curses.h 函式库的中文文档?
来源: 互联网 发布时间:2014-12-20
本文导语: 哪位大虾有UNIX下c语言的图形编程--curses.h 函式库的中文文档? yiguo_119@163.com | 呵呵,恰好手头有: -------------------------------------------- WINDDW *curscr: 当前屏幕 WINDOW *stdscr: 标准屏幕 int LINES: 终端...
哪位大虾有UNIX下c语言的图形编程--curses.h 函式库的中文文档?
yiguo_119@163.com
yiguo_119@163.com
|
呵呵,恰好手头有:
--------------------------------------------
WINDDW *curscr: 当前屏幕
WINDOW *stdscr: 标准屏幕
int LINES: 终端上的行数
int COLS: 终端上的列数
bool TRUE: 真标志,1
bool FALSE: 假标志,0
int ERR: 错误标志,-1
int OK: OK标志,0
---------------------------------------------
win: WINDOW *
bf: bool
ch: chty pe
str: char *
chstr: chty pe*
fmt: char *
否则: int
---------------------------------------------
初始化
WINDOW *initscr()
SCREEN *newterm(char *type, FILE *outfd, FILE *infd)
对用户访问的每个终端都应该调用newterm
t y p e是终端的名称,包括在$ T E R M中(如ansi, xterm, vt100等等)
SCREEN *set_term(SCREEN *new)
用户可以切换当前终端。所有的函数都将在设置的当前终端上起作用。
int endwin()
退出程序之前,关闭所有打开的窗口。
之后还可以调用refresh(),
int isendwin()
ifendwin()->refresh(),TRUE,|FALSE。
-----------------------
WINDOW *newwin(nlines,ncols,begy,begx)
begy和begx是窗口左上角的坐标。nlines是一个整数,
存放着行的数目,而ncols,存放着列的数目。
所有的参数设置为零,则打开的窗口的大小将与屏幕的大小相同。
int delwin(win)
它删除窗口win。如果存在子窗口,以前先要删除这些子窗口。这个函数将
释放win所占据的所有资源。在调用endwin()之前用户应该删除所有的窗口
int mvwin(win,by,bx)
它将把窗口移到坐标(by,bx)处。如果把窗口移出屏幕边界的范围,则ERR
WINDOW *subwin(origwin,nlines,ncols,begy,begx)
它返回一个位于origwin窗口中间的子窗口。如果用户改变这两个窗口
(origwin或者那个新窗口)中的一个,则这种改变将会同时反映到这两
个窗口上。在下一次调用refresh()之前,先要调用touchwin(origwin)
begx和begy是相对于屏幕的,而不是相对于origwin的。
WINDOW *derwin(origwin,nlines,ncols,begy,begx)
此函数与subwin(.)相同,只不过这里的begx和begy是相对于origwin的,而 不是相对于屏幕的。
mvderwin(win,y,x)
此函数将把win移到父窗口内。(注意:此函数尚未实现)。
WINDOW *dupwin(win)
此函数复制窗口win。
int overlay(win1,win2)
将把win1中的所有文本拷贝到win2中,但是不拷贝空格。
int overwrite(win1,win2)
也是做文本拷贝工作的函数,但它拷贝空格。
int copywin(win1,win2,sminrow,smincol,dminrow,
dmincol,dmaxrow,dmaxcol,overlay)
它所做的工作与overlay(.)和overwrite(.)相似,但是该函数还可以让程 序员选择拷贝窗口的哪个区域。
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行将被删除,
余下的行将上升,顶替它们的位置。这些函数将在当前光标的左边插入str
(字符的个数不能超过一行的限度)。在光标右边的字符将右移,如果到达行
尾,则字符将丢失,光标位置不变。y和x是指在插入str以前先要把光标移动
到的坐标,n是要插入的字符的数目(如果n为0则插入整个字符串)。
---------------------------
int insstr(str)
int insnstr(str,n)
int winsstr(win,str)
int winsnstr(win,str,n)
int mvinsstr9y,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则插入整个字符串)。
---------------------------
int delch()
int wdelch(win)
int mvdelch(y,x)
int mvwdelch(win,y,x)
删除光标左边的字符,并把光标右边余下的字符向左移动一个位置。
y和x是在进行删除操作以前要把光标移动到的坐标。
int deleteln()
int wdeleteln(win)
删除光标下面的一行,并把下面所有的其他行都向上移动一个位置。
此外,屏幕最底下的一行将被清除。
-----------------------------
方框和直线
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 vline9ch,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(.) 则从屏幕相关的终端读取。如果使能了keypad(.)
在用户按下某个功能键时,getch()将返回一个代码,该代码在.h头文件中被
定义为KEY_*宏。如果用户按下 Esc键(它可能会是某个组合功能键的第
一个键),则ncurses将启动一个否则就返回功能键的值。(如果需要的话,
可以使用notimeout()来关闭第二个定时器
int ungetch()
这个函数将把字符ch送回输入缓冲区。
---------------------
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()可以关
闭回送)而用户的删除字符以及其他特殊字符也会被解释出来
-----------------
chty peinch(0
chty pewinch(win)
chty pemvinch(y,x)
chty pemvwinch(win,y,x)
这些函数从屏幕或窗口返回一个字符,因为返回值的类型是chty pe,
所以还包括了属性信息。这一信息可以使用常量A_*从字符中扩展得到。
-------------------
int scanw(fmt,...)
int wscanw(win,fmt,...)
int mvscanw(y,x,fmt,...)
int mvwscanw(win,y,x,fmt,...)
int vwscanw(win,fmt,va_list.)
----------------------------
输出选项
int idlok9win,bf)
void fdcok(win.bf)
这两个函数为窗口使能或者关闭终端的insert/delete特征(idlok(.)针对一
行,而idcok(.)则针对字符)。(注:idcok(.)尚未实现)
void immedok(win,bf)
bf设置为TRUE,则对窗口win的每一次改变都将导致物理屏幕的一次刷新。
这将使程序的性能降低,所以默认的值是FALSE。(注:此函数尚未实现)
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()可以把平移
--------------------------------------------
WINDDW *curscr: 当前屏幕
WINDOW *stdscr: 标准屏幕
int LINES: 终端上的行数
int COLS: 终端上的列数
bool TRUE: 真标志,1
bool FALSE: 假标志,0
int ERR: 错误标志,-1
int OK: OK标志,0
---------------------------------------------
win: WINDOW *
bf: bool
ch: chty pe
str: char *
chstr: chty pe*
fmt: char *
否则: int
---------------------------------------------
初始化
WINDOW *initscr()
SCREEN *newterm(char *type, FILE *outfd, FILE *infd)
对用户访问的每个终端都应该调用newterm
t y p e是终端的名称,包括在$ T E R M中(如ansi, xterm, vt100等等)
SCREEN *set_term(SCREEN *new)
用户可以切换当前终端。所有的函数都将在设置的当前终端上起作用。
int endwin()
退出程序之前,关闭所有打开的窗口。
之后还可以调用refresh(),
int isendwin()
ifendwin()->refresh(),TRUE,|FALSE。
-----------------------
WINDOW *newwin(nlines,ncols,begy,begx)
begy和begx是窗口左上角的坐标。nlines是一个整数,
存放着行的数目,而ncols,存放着列的数目。
所有的参数设置为零,则打开的窗口的大小将与屏幕的大小相同。
int delwin(win)
它删除窗口win。如果存在子窗口,以前先要删除这些子窗口。这个函数将
释放win所占据的所有资源。在调用endwin()之前用户应该删除所有的窗口
int mvwin(win,by,bx)
它将把窗口移到坐标(by,bx)处。如果把窗口移出屏幕边界的范围,则ERR
WINDOW *subwin(origwin,nlines,ncols,begy,begx)
它返回一个位于origwin窗口中间的子窗口。如果用户改变这两个窗口
(origwin或者那个新窗口)中的一个,则这种改变将会同时反映到这两
个窗口上。在下一次调用refresh()之前,先要调用touchwin(origwin)
begx和begy是相对于屏幕的,而不是相对于origwin的。
WINDOW *derwin(origwin,nlines,ncols,begy,begx)
此函数与subwin(.)相同,只不过这里的begx和begy是相对于origwin的,而 不是相对于屏幕的。
mvderwin(win,y,x)
此函数将把win移到父窗口内。(注意:此函数尚未实现)。
WINDOW *dupwin(win)
此函数复制窗口win。
int overlay(win1,win2)
将把win1中的所有文本拷贝到win2中,但是不拷贝空格。
int overwrite(win1,win2)
也是做文本拷贝工作的函数,但它拷贝空格。
int copywin(win1,win2,sminrow,smincol,dminrow,
dmincol,dmaxrow,dmaxcol,overlay)
它所做的工作与overlay(.)和overwrite(.)相似,但是该函数还可以让程 序员选择拷贝窗口的哪个区域。
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行将被删除,
余下的行将上升,顶替它们的位置。这些函数将在当前光标的左边插入str
(字符的个数不能超过一行的限度)。在光标右边的字符将右移,如果到达行
尾,则字符将丢失,光标位置不变。y和x是指在插入str以前先要把光标移动
到的坐标,n是要插入的字符的数目(如果n为0则插入整个字符串)。
---------------------------
int insstr(str)
int insnstr(str,n)
int winsstr(win,str)
int winsnstr(win,str,n)
int mvinsstr9y,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则插入整个字符串)。
---------------------------
int delch()
int wdelch(win)
int mvdelch(y,x)
int mvwdelch(win,y,x)
删除光标左边的字符,并把光标右边余下的字符向左移动一个位置。
y和x是在进行删除操作以前要把光标移动到的坐标。
int deleteln()
int wdeleteln(win)
删除光标下面的一行,并把下面所有的其他行都向上移动一个位置。
此外,屏幕最底下的一行将被清除。
-----------------------------
方框和直线
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 vline9ch,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(.) 则从屏幕相关的终端读取。如果使能了keypad(.)
在用户按下某个功能键时,getch()将返回一个代码,该代码在.h头文件中被
定义为KEY_*宏。如果用户按下 Esc键(它可能会是某个组合功能键的第
一个键),则ncurses将启动一个否则就返回功能键的值。(如果需要的话,
可以使用notimeout()来关闭第二个定时器
int ungetch()
这个函数将把字符ch送回输入缓冲区。
---------------------
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()可以关
闭回送)而用户的删除字符以及其他特殊字符也会被解释出来
-----------------
chty peinch(0
chty pewinch(win)
chty pemvinch(y,x)
chty pemvwinch(win,y,x)
这些函数从屏幕或窗口返回一个字符,因为返回值的类型是chty pe,
所以还包括了属性信息。这一信息可以使用常量A_*从字符中扩展得到。
-------------------
int scanw(fmt,...)
int wscanw(win,fmt,...)
int mvscanw(y,x,fmt,...)
int mvwscanw(win,y,x,fmt,...)
int vwscanw(win,fmt,va_list.)
----------------------------
输出选项
int idlok9win,bf)
void fdcok(win.bf)
这两个函数为窗口使能或者关闭终端的insert/delete特征(idlok(.)针对一
行,而idcok(.)则针对字符)。(注:idcok(.)尚未实现)
void immedok(win,bf)
bf设置为TRUE,则对窗口win的每一次改变都将导致物理屏幕的一次刷新。
这将使程序的性能降低,所以默认的值是FALSE。(注:此函数尚未实现)
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()可以把平移
|
------------------------------
终端属性
int baudrate() 此函数返回终端的速度,以bps为单位。
char erasechar() 此函数返回当前删除的字符。
char killchar() 此函数返回当前杀死的字符。
int has_ic()
int has_il() 如果终端具有插入/删除字符的能力,则has_rc() 将返回TRUE 如果终端具有插入/删除行的能力,则has_il()将返回TRUE,
否则这两个函数将返回ERR。 (注:尚未实现)
char *longname() 此函数所返回的指针允许用户访问当前终端的描述符。
chty petermattrs() (注:此函数尚未实现)
char *termname() 这个函数从用户环境中返回TERM的内容。(尚未实现)
--------------------------------
更新终端
int refresh()
int wrefresh(win)
refersh()将把窗口映像拷贝到终端,而wrefresh(win)将把窗口映像
拷贝到w in,并使它看起来象原来的样子。
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是否已被按掀过。
-------------------------------
视频属性与颜色
ncurses定义了八种颜色,在带有彩色支持的终端上用户可以使用这些颜色。
首先,调用start_color()初始化颜色数据结构,
然后使用has_colors()检查终端权能。
start_color()将初始化COLORS和COLOR_PAIR。
前者是终端所支持的最多的颜色数目,而后者是用户可以定义的色彩对的最大数目。
两个属性可以使用OR操作组合起来。“COLORPAIRS_1COLORS_1”
int color_content(color,t,g,b)
此函数获取color的颜色成份r,g和b。
首先,函数CheckColor调用start_color()初始化颜色,如果当前终端有彩色的话,
则函数has_colors()将返回TRUE。我们检查了这一点以后,调用init_pair(.)
把前景色和背景色组合起来,再调用wattrset(.)为特定的窗口设置这些颜色对。
此外,如果我们使用的是黑白终端,还可以单独使用wattrset(.)来设置属性。
如果要在xterm中获取颜色,我认为最佳方法是使用ansi_xterm,
以及来自MidnightCommander的terminfo项目。用户可以获取ansi_xterm
和MidnightCommander的源代码(mc_x.x.tar.gz),然后编译ansi_xterm,
并对mc_x.x.tar.gz文档中的xterm.ti和vt100.ti使用tic命令。
执行ansi_xterm,把它试验出来
---------------------------------
光标和屏幕坐标
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)())
-------------------------------------------
调试函数
void _init(trace()
void _trace(char *,...)
char *_traceattr(mode)
void traceon()
void traceoff()