当前位置:  技术问答>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

|
呵呵,恰好手头有:

--------------------------------------------
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()

    
 
 

您可能感兴趣的文章:

  • 大虾救命,dos下面怎么输入中文?
  • 哪位大虾能告诉我unicode中中文段的值?
  • 哪位大虾介绍几本关于EJB的电子书的下载地址啊?谢谢了(中文版)
  • 那位大虾有关于j2me的资料?最好是中文的。
  • 想学aix操作系统,请大虾们推荐几个优秀的中文论坛(网站)。
  • 各位大虾,如何安装 RED HAT7.2 (包括中文),请详细一些,我对 Linux 即将"第一次亲密接触"
  • 十万火急:各位大虾帮帮小弟吧。如何把informix数据库中的中文字段写如到一个文件中?
  • 一个中文问题,困扰我好长时间了,请大虾帮帮忙,感激不尽.
  • 我用java做的applet站内搜索程序,不能搜索中文,那位大虾能帮帮我?代码如下:
  • 急救:如何在jsp中将阿拉伯数字转换成中文大写,如:'1228008.98' 转换为 '壹佰贰拾贰万扒仟零扒圆玖角扒分'各位大虾给看看,一定给分!!
  • 如何切换图形画面登录和文字模式登录。(偶是菜鸟,大虾莫笑)
  • 啊,小弟想用java做一个game,很简单那种网络飞机类game,不知道java 在图形方面的能力如何?请大虾指教指教.
  • 请问大虾一个关于JAVA图形显示的问题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大虾,小弟有一事不明,请大虾赐教!
  • 在solaris下如何卸载wu-ftpd???????????????????????谢谢大虾!!!!!!!!!!
  • 请大虾们谈谈linux和unix的异同吧
  • 请大虾,详细介绍一下JavaBean的写法,和调用过程!
  • 对LDAP有研究的大虾请进,见者有分
  • 超级新手菜鸟请问各位大虾!
  • 各位大虾,一个初学者该怎样开始学习java?
  • 请问各位大虾,什么地方有Jsp学习资料?
  • 哪位大虾知道weblogic与websphere的差别?
  • 大虾救命!APACHE没有理睬JSP?!!!
  • 网络技术 iis7站长之家
  • 大虾救命啊!!!50分!!!
  • 哪位大虾指点一下哪里有weblogic下载啊???
  • 请问各位unix大虾,哪有免费的unix下载?
  • 初学者求救!!哪位大虾给点源代码?
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • 请各位大虾介绍几个好一点的linux论坛,谢谢!
  • 请问大虾们,如何学习linux?
  • session里面可以放整型数吗?大虾请指教!!!
  • 各位大虾!如果用jbuilder做一个五子棋?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3