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

📄 scounix下curses编程函数说明11.htm

📁 curses界面编程
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<br />int  nodelay(win,bf)<br />终端将被设置为非阻塞模式。如果没有任何输入则getch()将返回ERR,<br />否则如果设置为FALSE,则getch()将等待,直到用户按下某个键为止。<br />int  timeout(t)<br />int  wtimeout(win,t)<br />笔者提倡大家使用这两个函数,而不要使用halfdelay(t)和nodelay(win,bf)getch()的结果取决于t的值。如果t是正数,则读操作将被阻塞t毫秒;<br />如果t为零,则不发生任何阻塞&#59;如果t是负数,则程序将阻塞,直到有输入为止<br />int  notimeout(win,bf)<br />如果bf为TRUE,则getch()将使用一个特殊的定时器(一秒钟长)。到时间以后<br />再对以Esc等键打头的输入序列进行解释。<br />int  typeahead(fd)<br />如果fd是-1,则不检查超前键击,否则ncurses将使用文件描述符fd来进行这些检查<br />int  int  rflush(win,bf)<br />当bf为TRUE时使能该函数。在终端上按下任意中断键(quit、break.)时,<br />所有的输出将会刷新到tty驱动程序队列中。<br />&lt;/Content&gt;<br />&lt;/Issue&gt;<br />&lt;Replys&gt;<br />&lt;Reply&gt;<br />&lt;PostUserNickName&gt;&lt;/PostUserNickName&gt;<br />&lt;rank&gt;四级(中级)&lt;/rank&gt;<br />&lt;ranknum&gt;user4&lt;/ranknum&gt;<br />&lt;credit&gt;97&lt;/credit&gt;<br />&lt;ReplyID&gt;6339214&lt;/ReplyID&gt;<br />&lt;TopicID&gt;984818&lt;/TopicID&gt;<br />&lt;PostUserId&gt;202193&lt;/PostUserId&gt;<br />&lt;PostUserName&gt;qisiwole&lt;/PostUserName&gt;<br />&lt;Point&gt;0&lt;/Point&gt;<br />&lt;Content&gt;------------------------------<br />终端属性<br />int  baudrate()此函数返回终端的速度,以bps为单位。<br />char  erasechar()此函数返回当前删除的字符。<br />char  killchar()此函数返回当前杀死的字符。<br />int  has_ic()<br />int  has_il()如果终端具有插入/删除字符的能力,则has_rc()将返回TRUE如果终端具有插入/删除行的能力,则has_il()将返回TRUE,<br />否则这两个函数将返回ERR。(注:尚未实现)<br />char  *longname()此函数所返回的指针允许用户访问当前终端的描述符。<br />chty  petermattrs()(注:此函数尚未实现)<br />char  *termname()这个函数从用户环境中返回TERM的内容。(尚未实现)<br />--------------------------------<br />更新终端<br />int  refresh()<br />int  wrefresh(win)<br />refersh()将把窗口映像拷贝到终端,而wrefresh(win)将把窗口映像<br />拷贝到win,并使它看起来象原来的样子。<br />int  wnoutrefresh(win)<br />int  doupdate()<br />wnoutrefresh(win)将会只拷贝到窗口win,这意味着在终端上将不进行任何输出,但是虚拟屏幕实际上看起来象程序员所希望的那样。doupdate()将输<br />出到终端上。程序可以改变许多窗口,对每个窗口都调用一次<br />wnoutrefresh(win),然后再调用一次doupdate()来更新物理屏幕。<br />int  redrawln(win)<br />int  wredrawln(win,bline,blines)<br />如果在往屏幕上输出新内容时需要清除一些行或者整个屏幕,可以使用这两<br />个函数。(可能这些行已经被破坏了或者由于其他的原因。)<br />int  touchwin(win)<br />int  touchline(win,start,count)<br />int  wtouchln(win,y,n,changed)<br />int  untouchwln(win)<br />这些函数通知ncurses整个win窗口已经被改动过了,或者从start直到<br />start+count的这些行已经被改动过了。例如,如果用户有一些重叠的窗口<br />(正如在example.c中一样),对某个窗口的改动不会影响其他窗口的映像。<br />wtouchln(.)<br />将按掀从y开始的n行。如果change的值是TRUE,则这些行被按掀过了,<br />否则就还未被按掀过(改变或未改变)。<br />untouchwin(win)将把窗口win标记为自上次调用refresh()以来还未被按掀。<br />int  ls_linetouched(win,line)<br />int  ls_wint  ouched(win)<br />通过使用这两个函数,用户可以检查自从上次调用refresh()以来,<br />第line行或者窗口win是否已被按掀过。<br />-------------------------------<br />视频属性与颜色<br />ncurses定义了八种颜色,在带有彩色支持的终端上用户可以使用这些颜色。<br />首先,调用start_color()初始化颜色数据结构,<br />然后使用has_colors()检查终端权能。<br />start_color()将初始化COLORS和COLOR_PAIR。<br />前者是终端所支持的最多的颜色数目,而后者是用户可以定义的色彩对的最大数目。<br />两个属性可以使用OR操作组合起来。“COLORPAIRS_1COLORS_1”<br /><br />int  color_content(color,t,g,b)<br /><br />此函数获取color的颜色成份r,g和b。<br />首先,函数CheckColor调用start_color()初始化颜色,如果当前终端有彩色的话,<br />则函数has_colors()将返回TRUE。我们检查了这一点以后,调用init_pair(.)<br />把前景色和背景色组合起来,再调用wattrset(.)为特定的窗口设置这些颜色对。<br />此外,如果我们使用的是黑白终端,还可以单独使用wattrset(.)来设置属性。<br />如果要在xterm中获取颜色,我认为最佳方法是使用ansi_xterm,<br />以及来自MidnightCommander的terminfo项目。用户可以获取ansi_xterm<br />和MidnightCommander的源代码(mc_x.x.tar.gz),然后编译ansi_xterm,<br />并对mc_x.x.tar.gz文档中的xterm.ti和vt100.ti使用tic命令。<br />执行ansi_xterm,把它试验出来<br /><br />---------------------------------<br />光标和屏幕坐标<br /><br />int  move(y,x)<br />int  wmove(win,y,x)<br />                   move()将移动光标,而wmove(win)则从窗口win中移动光标。对<br />输入/输出函数来说,还定义了其他的一些宏,在调用特定函数之前,<br />这些宏可以移动光标。<br /><br />int  curs_set(bf)    这个函数将把光标置为可见或者不可见,如果终端有这个功能<br />void  getyx(win,y,x)     getyx(.)将返回当前光标位置。(注意:这是一个宏)<br />void  getparyx(win,y,x)<br />如果win是个子窗口,getparyx(.)将把该窗口对应父窗口的坐标存储在y和x则y和x都将为-1。(注:此函数尚未实现)<br /><br />void  getbegyx(win,y,x)<br />void  getmaxyx(win,y,x)<br />int  getmaxx(win)<br />int  getmaxy(win)<br />这些函数把窗口win的开始坐标和大小坐标存放在y和x中。<br />int  getsyx(int  y,int  x)<br />int  setsyx(int  y,int  x)<br />getsyx(.)把虚拟屏幕光标存放在y和x中,而setsyx(.)则设置这个坐标。<br />如果y和x是-1, 用户调用getsyx(.)将会设置leaveok。<br /><br />------------------------------<br />滚动<br /><br />int  tscrollok(win,bf)<br />当光标在屏幕的右下角并且输入了一个字符(或者新的一行)时,如bf为TRUE则窗口win中的文本将上滚一行。如果bf为FALSE,则鼠标留在原来的位置上<br />当滚动特征打开时,使用下面的函数可以滚动窗口中的内容。<br />(注意:当用户在窗口的最<br />后一行输入一个新行时,也应该发生相应的滚动操作,<br />所以在使用scrollok(.)时要十分小心,<br />否则可能会得到出乎意料的结果。)<br />int  scrol(win)<br />此函数将使窗口向上滚动一行(数据结构中的行也向上滚动)。<br />int  acrl(n)<br />int  wscrl(win,n)<br />这两个函数将使屏幕或者窗口win向上向下滚动,滚动方向取决于整数n的值<br />如果n是正数,则窗口向上滚动n行,否则如果n是负数,则窗口向下滚动n行<br />int  setscrreg(t,b)<br />int  wsetscrreg(win,t,b)<br />这两个函数设置一个软滚动区。<br />-------------------------------------<br />小键盘<br /><br />WINDOW  *newpad(nlines,ncols)<br />WINDOW  *subpad(orlg,nlines,ncols,begy,begx)<br />int  prefresh(pad,pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol)<br />int  pnoutrefresh(pad,pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol)<br />int  pechochar  (pad,ch)<br />----------------------------<br />软标签<br /><br />int  slk_init(int  fmt)<br />int  slk_set(int  labnum,char  *label,int  fmt)<br />int  slk_refresh()<br />int  slk_noutrefresh()<br />char  *slk_label(int  labnum)<br />int  slk_clear()<br />int  slk_restore()<br />int  slk_touch()<br />int  slk_attron(chty  peattr)<br />int  slk_attrset(chty  peattr)<br />int  slk_attroff(chty  peattr)<br />这些函数是与attron(attr)、attrset(attr)和attroft(attr)相对应的,<br />但它们尚未实现。<br />------------------------------<br />int  beep()<br />int  flash()<br />char  *unctrl(chty  pec)<br />char  *keyname(int  c)<br />int  filter()<br />(注:以上函数尚未实现。)<br />void  use_env(bf)<br />int  putwin(WINDOW  *win,FILE*filep)<br />(注:以上函数尚未实现。)<br />WINDOW  *getwin(FILE*filep)<br />(注:以上函数尚未实现。)<br />int  delay_output(int  ms)<br />int  flushinp()<br />--------------------------------------<br />低级访问<br /><br />int  def_prog_mode()<br />int  def_shell)_mode()<br />int  reset_prog_mode()<br />int  reset_shell_mode()<br />int  resetty()<br />int  savetty()<br />int  ripoffline(int  line,int  (*init)(WINDOW  *,int  ))<br />int  napms(int  ms)<br />---------------------------------<br />屏幕转储<br /><br />int  scr_dump(char  *filename)<br />(注:此函数尚未实现。)<br />int  scr_restore(char  *filename)<br />(注:此函数尚未实现。)<br />int  scr_init(char  *filename)<br />(注:此函数尚未实现。)<br />int  scr_set(char  *filename)<br />(注:此函数尚未实现。)<br />-----------------------------------<br />Termcap模拟<br /><br />int  tgetent(char  *bp,char  *name)<br />int  tgetflag(char  fd[2])<br />int  tgetnum(char  fd[2])<br />char  *tgetstr(char  fd[2],char  **area)<br />char  tgoto(char  *cap,int  col,int  row)<br />int  tputs(char  *str,int  offset,int  (*putc)())<br />-------------------------------------------<br />调试函数<br /><br />void  _init(trace()<br />void  _trace(char  *,...)<br />char  *_traceattr(mode)<br />void  traceon()<br />void  traceoff()<br />&lt;/Content&gt;<br />&lt;PostDateTime&gt;2002-08-31 09:29:00&lt;/PostDateTime&gt;<br />&lt;/Reply&gt;&lt;Reply&gt;<br />&lt;PostUserNickName&gt;&lt;/PostUserNickName&gt;<br />&lt;rank&gt;四级(中级)&lt;/rank&gt;<br />&lt;ranknum&gt;user4&lt;/ranknum&gt;<br />&lt;credit&gt;97&lt;/credit&gt;<br />&lt;ReplyID&gt;6339224&lt;/ReplyID&gt;

⌨️ 快捷键说明

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