图形函数库curses

来源:互联网 发布:windows中命令Tracert 编辑:程序博客网 时间:2024/05/22 05:32

简介:

图形函数库(Graphics Library):图形处理函数与子例程的一个集合,程序员可用它作为接口,方便地调用低级任务。

curses的名字起源于"cursor optimization",即光标优化。它最早由有美国伯克利大学的Bill Joy和Ken Arnold编写的,用来处理一个游戏rogue的屏幕显示。后来贝尔实验室的Mark Horton在System III Unix中重新编写了curses。现在几乎所有的Unix/Linux操作系统都带了curses函数库,curses也加入了对鼠标的支持,一些菜单和面板的处理。可以说,curses是Linux终端图形编程的不二选择(比如著名的文字编辑器 vi 就是基于curses编的)。

安装:

Ubuntu下安装方法:
sudo apt-get install libncurses5-dev
(如果发现找不到这个包,使用命令 sudo apt-get update 更新下包源)

基本用法:

包含头文件:curses.h
编译时应加上链接语句-lcurses,如:gcc temp.c -o temp -lcurses

重要的函数:

initscr():初始化curses库和ttty。(在开始curses编程之前,必须使用initscr()这个函数来开启curses模式)endwin():关闭curses并重置tty。(结束curses编程时,最后调用的一个函数)move(y,x): 将游标移动至 x,y 的位置. getyx(win,y,x): 得到目前游标的位置. (请注意! 是 y,x 而不是&y,&x ) clear() and erase(): 将整个萤幕清除. (请注意配合refresh() 使用)echochar(ch): 显示某个字元. addch(ch): 在当前位置画字符chmvaddch(y,x,ch): 在(x,y) 上显示某个字元. 相当於呼叫move(y,x);addch(ch); addstr(str): 在当前位置画字符串strmvaddstr(y,x,str): 在(x,y) 上显示一串字串. 相当於呼叫move(y,x);addstr(str); printw(format,str): 类似 printf() , 以一定的格式输出至萤幕. mvprintw(y,x,format,str): 在(x,y) 位置上做 printw 的工作, 相当於呼叫move(y,x);printw(format,str); getch(): 从键盘读取一个字元. (注意! 传回的是整数值) getstr(): 从键盘读取一串字元. scanw(format,&arg1,&arg2...): 如同 scanf, 从键盘读取一串字元. beep(): 发出一声哔声. box(win,ch1,ch2): 自动画方框refresh():   使屏幕按照你的意图显示。比较工作屏幕和真实屏幕的差异,然后refresh通过终端驱动送出那些能使真实屏幕于工作屏幕一致的字符和控制码。(工作屏幕就像磁盘缓存,curses中的大部分的函数都只对它进行修改)standout(): 启动standout模式(一般使屏幕发色)standend(): 关闭standout模式

常用的初始化函数集合:

void initial(){initscr();//开启curses模式cbreak();//开启cbreak模式,除了 DELETE 或 CTRL 等   //仍被视为特殊控制字元外一切输入的字元将立刻被一一读取nonl(); //用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字元noecho(); //echo() and noecho(): 此函式用来控制从键盘输入字元时是否将字元显示在终端机上intrflush(stdscr,false);keypad(stdscr,true);//当开启 keypad 後, 可以使用键盘上的一些特殊字元, 如上下左右>等方向键refresh();//将做清除萤幕的工作}

ncurses:

ncurses名字中的n意味着“new”,因为它是curses的自由软件版本。由于AT&T“臭名昭著”的版权政策,人们不得不在后来用ncurses去代替它。 
ncurses是GNU计划的一部分,但它却是少数几个不使用GNU GPL或LGPL授权的GNU软件之一。


Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。

Ncurses是一个能提供基于文本终端窗口功能的动态库. Ncurses可以:
只要您喜欢,您可以使用整个屏幕
创建和管理一个窗口
使用8种不同的彩色
为您的程序提供鼠标支持
使用键盘上的功能键
Ncurses可以在任何遵循ANSI/POSIX标准的UNIX系统上运行,除此之外,它还可以从系统数据库中检测终端的属性, 
并且自动进行调整,提供一个不受终端约束的接口.因此,Ncurses可以在不同的系统平台和不同的终端上工作的非常好.

mc工具集就是一个用ncurses写的很好的例子,而且在终端上系统核心配置的界面同样是用ncurses编写的. 
下面就是它们的截图:

[Midnight Commander]

安装:
apt-get install libncurses5-dev
编译:

gcc test.c -o test -lncurses

0 0
原创粉丝点击