⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curses函数说明(sco).htm

📁 curses界面编程
💻 HTM
📖 第 1 页 / 共 5 页
字号:
			</tr>			<tr>				<td colspan="2"><span class="postbody">一.全局变量 
<br />  WINDDW* curscr:当前屏幕 
<br />  WINDOW* stdscr:标准屏幕 
<br />  int   LINES:终端上的行数 
<br />  int   COLS:终端上的列数 
<br />  bool   TRUE:真标志,1 
<br />  bool   FALSE:假标志,0 
<br />  int   ERR:错误标志,-1 
<br />  int   OK:OK标志,0 
<br />  ------------------------------------------------ 
<br />win:WINDOW * 
<br />bf:bool 
<br />ch:chty pe 
<br />str:char * 
<br />chstr:chty pe* 
<br />fmt:char *  否则:int 
<br />
<br />二.函数说明 
<br />1.字符显示 
<br />  WINDOW* initscr() 
<br />  SCREEN* newterm(char *type, FILE *outfd, FILE *infd) 
<br />初始化函数,对用户访问的每个终端都应该调用newterm,type是终端的名称,包括在$TERM中(如ansi, xterm, vt100等等) 。 
<br />
<br />  SCREEN* set_term(SCREEN* new) 
<br />  用户可以切换当前终端。所有的函数都将在设置的当前终端上起作用。 
<br />
<br />  int endwin() 
<br />  退出程序之前,关闭所有打开的窗口。之后还可以调用refresh()。 
<br />
<br />  int isendwin() 
<br />  if endwin()-&gt;refresh(),TRUE,|FALSE。 
<br />
<br />  WINDOW* newwin(nlines,ncols,begy,begx) 
<br />  begy和begx是窗口左上角的坐标。nlines是一个整数, 存放着行的数目,而ncols,存放着列的数目。 
<br />  所有的参数设置为零,则打开的窗口的大小将与屏幕的大小相同。 
<br />
<br />  int delwin(win) 
<br />  它删除窗口win。如果存在子窗口,以前先要删除这些子窗口。这个函数将释放win所占据的所有资源。在调用endwin()之前用户应该删除所有的窗口。 
<br />
<br />  int mvwin(win, by, bx) 
<br />  它将把窗口移到坐标(by,bx)处。如果把窗口移出屏幕边界的范围,则ERR 
<br />
<br />  WINDOW *subwin(origwin,nlines, ncols, begy,begx) 
<br />  它返回一个位于origwin窗口中间的子窗口。如果用户改变这两个窗口 (origwin或者那个新窗口)中的一个,则这种改变将会同时反映到这两个窗口上。在下一次调用refresh()之前,先要调用touchwin(origwin) 。begx和begy是相对于屏幕的,而不是相对于origwin的。 
<br />
<br />  WINDOW *derwin(origwin, nlines,ncols, begy, begx) 
<br />  此函数与subwin(.)相同,只不过这里的begx和begy是相对于origwin的,而不是相对于屏幕的。 
<br />
<br />  mvderwin(win, y, x) 
<br />  此函数将把win移到父窗口内。(注意:此函数尚未实现)。 
<br />
<br />  WINDOW *dupwin(win) 
<br />  此函数复制窗口win。 
<br />
<br />int overlay(win1, win2) 
<br />将把win1中的所有文本拷贝到win2中,但是不拷贝空格。 
<br />
<br />int overwrite(win1, win2) 
<br />也是做文本拷贝工作的函数,但它拷贝空格。 
<br />
<br />  int copywin(win1, win2, sminrow, smincol, dminrow, dmincol, dmaxrow, 
<br />dmaxcol, overlay) 
<br />它所做的工作与overlay(.)和overwrite(.)相似,但是该函数还可以让程序员选择拷贝窗口的哪个区域。 
<br />
<br />  显示某个字元或字符串 
<br />  int addch(ch) 
<br />  int waddch(win, ch) 
<br />  int mvaddch(y,x, ch) 
<br />  int mvwaddch(win, y, x, ch) 
<br />
<br />  ------------------------------------------------ 
<br />  int addstr(str) 
<br />  int addnstr(str, n) 
<br />  int waddstr(win, str) 
<br />  int waddnstr(win, str, n) 
<br />  int mvaddstr(y, x, str) 
<br />  int mvaddnstr(y, x, str, n) 
<br />  int mvwaddstr(win, y, x, str) 
<br />  int mvwaddnstr(win, y, x, str, n) 
<br />
<br />  ------------------------------------------------ 
<br />  int addchstr(chstr) 
<br />  int addchnsrtr(chstr, n) 
<br />  int waddchstr(win, chstr) 
<br />  int waddchnstr(win, chstr, n) 
<br />  int mvaddchstr(y, x, chstr) 
<br />  int mvaddchnstr(y, x, chstr, n) 
<br />  int mvwaddchstr(win, y, x, chstr) 
<br />  int mvwaddchnstr(win, y, x, chstr, n) 
<br />  *****chstr是指向ch type数组的一个指针。***** 
<br />
<br />  ------------------------------------------------ 
<br />  int echochar (ch) 
<br />  int wechochar(win, ch) 
<br />
<br />  ------------------------------------------------ 
<br />  int printw(fmt,..) 
<br />  int wprintw(win, fmt,....) 
<br />  int mvprintw(y, x, fmt,...) 
<br />  int mvwprntw(win, y, x, fmt,..) 
<br />
<br />  ------------------------------------------------ 
<br />
<br />  int insch(c) 
<br />  int winsch(win, c) 
<br />  int mvinsch(y, x, c) 
<br />  int mvwinsch9win, y, x, c) 
<br />  这些函数把字符ch插入到光标的左边,光标后面的所有字符则向右移动一个位置。 在这一行最右端的字符可能会丢失。 
<br />
<br />  int insert() 
<br />  int winsert(win) 
<br />  在当前行的上方插入一个空行(最底下的一行将被丢失)。 
<br />
<br />  int insdelin(n) 
<br />  int winsdelln(win, n) 
<br />  如果n为正数,则这些函数将在适当的窗口的当前光标上方插入n行 (这样一来最底下的n行将丢失);如果n为负数,则光标下面的n行将被删除, 余下的行将上升,顶替它们的位置。 
<br />
<br />  int insstr(str) 
<br />  int insnstr(str, n) 
<br />  int winsstr(win, str) 
<br />  int winsnstr(win, str, n) 
<br />  int mvinsstr(y, x, str) 
<br />  int mvinsnstr(y, x, str, n) 
<br />  int mvwinsstr(win, y, x, str) 
<br />  int mvwinsnstr(win, y, x, str, n) 
<br />  这些函数将在当前光标的左边插入str (字符的个数不能超过一行的限度)。在光标右边的字符将右移,如果到达行 尾,则字符将丢失,光标位置不变。y和x是指在插入str以前先要把光标移动到的坐标,n是要插入的字符的数目(如果n为0则插入整个字符串)。 
<br />这些函数将在当前光标的左边插入str(字符的个数不能超过一行的限度)。 
<br />
<br />  int delch() 
<br />  int wdelch(win) 
<br />  int mvdelch(y, x) 
<br />  int mvwdelch(win, y, x) 
<br />  删除光标左边的字符,并把光标右边余下的字符向左移动一个位置。 y和x是在进行删除操作以前要把光标移动到的坐标。 
<br />
<br />  int deleteln() 
<br />  int wdeleteln(win) 
<br />  删除光标下面的一行,并把下面所有的其他行都向上移动一个位置。 此外,屏幕最底下的一行将被清除。 
<br />
<br />2.方框和直线 
<br />
<br />  int border(ls, rs, ts, bs, tl, tr, bl, br) 
<br />  int wborder(win, ls, rs, ts, bs, tl, tr, bl, br) 
<br />  int box(win, vert, hor) 
<br />这些函数在窗口的边界(或者win的边界)画上方框。在下面的表格中,读者将可以看到字符,以及它们的默认值。当用零去调用box(.)时将会用到这些默认值。在下面的图中读者可以看到方框中字符的位置 
<br />
<br />  int vline(ch,n) 
<br />  int wvline(win,ch,n) 
<br />  int hline(ch,n) 
<br />  int whline(win,ch,n) 
<br />  这些函数将从当前光标位置开始画一条水平线或者垂直线。 ch是画线所使用的字符,n是要画的字符的个数,光标位置并不移动。 
<br />
<br />  void bkgdset(ch) 
<br />  void wbkgdset(win, ch) 
<br />  这两个函数设置窗口或者屏幕的背景字符和属性。ch的属性将和窗口中所有非空格的字符的属性进行OR操作。背景是窗口的一部分,将不会随着滚动、输入或输出而改变 
<br />  int bkgd(ch) 
<br />  int wbkgd(win,ch) 
<br />
<br />  int getch() 
<br />  int wgetch() 
<br />  int mvgetch(y, x) 
<br />  int mvwgetch(win, y, x) 
<br />  getch()将从终端读取输入,读取的方式取决于是否设置了延迟模式。 如果设置了延迟模式,则getch()将一直等待,直到用户按下一个键为止;如果没有设置延迟模式,则它将返回输入缓冲区中的数据,如果输入缓冲区为空,则它将返回ERR。mvgetch(.)和mvwgetch(.)首先把光标移动到位置(y,x)上。名称中有w字母的函数将从与窗口win相关的终端读取输入, getch()和mvgetch(.)则从屏幕相关的终端读取。 
<br />
<br />  如果使能了keypad(.) 在用户按下某个功能键时,getch()将返回一个代码,该代码在.h头文件中被  定义为KEY_*宏。如果用户按下Esc键(它可能会是某个组合功能键的第 
<br />一个键),则ncurses将启动一个否则就返回功能键的值。(如果需要的话,可以使用notimeout()来关闭第二个定时器 
<br />
<br />  int ungetch() 
<br />  这个函数将把字符ch送回输入缓冲区。 
<br />
<br />  int getstr(str) 
<br />  int wgetstr(win,str) 
<br />  int mvgetstr(y,x,str) 
<br />  int mvwgetstr(win,y,x,str) 
<br />  int wgetnstr(win,str,n) 
<br />  这些函数的作用相当于对getch()进行一系列的调用,直到接收到一个新行。 行中的字符存放在str中(所以,在调用getstr(.)之前,不要忘记给字符指针分配内存)。如果打开了回送,则字符串将被显示出来(使用noecho()可以关闭回送),而用户的删除字符以及其他特殊字符也会被解释出来 
<br />
<br />  chty peinch() 
<br />  chty pewinch(win) 
<br />  chty pemvinch(y,x) 
<br />  chty pemvwinch(win,y,x) 
<br />  这些函数从屏幕或窗口返回一个字符,因为返回值的类型是chty pe, 所以还包括了属性信息。这一信息可以使用常量A_*从字符中扩展得到。 
<br />
<br />  int scanw(fmt,...) 
<br />  int wscanw(win,fmt,...) 
<br />  int mvscanw(y,x,fmt,...) 
<br />  int mvwscanw(win,y,x,fmt,...) 
<br />  int vwscanw(win,fmt,va_list.) 
<br />
<br />3.输出选项 
<br />  int  idlok(win, bf) 
<br />  void fdcok(win, bf) 
<br />  这两个函数为窗口使能或者关闭终端的insert/delete特征(idlok(.)针对一行,而fdcok(.)则针对字符)。(注:idcok(.)尚未实现) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -