linux curses函数库
fedora20,安装yum install ncurses-devel
编译时:-lncurses
头文件:#include<curses.h>
参考:man ncurses \linux程序设计
一,屏幕
1, 以initscr()开始,以endwin();结束
WINDOW *initscr(void); //初始化
int endwin(void); // 退出curses, 返回OK/ERR
2, 输出到屏幕
int addch(const chtype ch); //当前位置add ch
int addchstr(chtype *const str); //当前位置add str
int printw(char *format,...); //类printf,格式化输出
int refresh(void); //刷新物理屏,更改逻辑屏,必须刷新才能在物理屏上面显示
int box(WINDOW *ptr, chtype v_ch, chtype h_ch); //围绕ptr指定窗口画方框,垂直/水平方向字符v_ch/h_ch
int insch(chtype ch); //插入ch,右移
int insertln(void); //插入空白行,下移
int delch(void); //删除光标位置字符,左移
int deleteln(void) //删除当前行,上移
int beep(void); //发声
int flash(void); //闪屏
3,从屏幕读取
chtype inch(void); //读取光标位置字符
int instr(char *string); //读取字符串到str,到NUL,不总是被支持
int innstr(char *str, int n_of_str); //读取n个字符到str,或NUL,不总是被支持
4,清除屏幕
int erase(void); //清屏,以空白字符填充
int clear(void); //清屏
int clrtobot(void); //清至屏幕结尾
int clrtoeol(void); //清至行尾
5,移动光标
int move(int new_y, int new_x); //y垂直方向,x水平方向
int leaveok(WINDOW *ptr, bool lf); //false,刷新后,硬件光标位置同逻辑光标;true,刷新后,硬件光标随机位置。一般默认选项符合用户需求。
6,字符属性
int attron(chtype attr); //启动指定属性(不影响其他)
int attroff(chtype attr); //关闭指定属性(不影响其他)
attrset(chtype attr); //设置字符属性
int standout(void); //“突出“模式,开
int standend(void); //“突出“模式,关
A_NORMAL
A_STANDOUT
A_UNDERLINE
A_REVERSE
详细man curs_attr
二,键盘
1, 键盘模式
int echo(void); //输入字符回显,开启
int noecho(void); // 关闭
int cbreak(void); //cbreak模式,键盘输入立即处理,开启;默认cooked模式,回车后处理
int nocbreak(void); // 关闭
int raw(void); // 关闭特殊字符的处理功能,开启;
int noraw(void); // 关闭,同时关闭raw,cbreak
2, 键盘输入
int getch(void);
int getstr(char *str);
int getnstr(char *str, int n_of_str);
int scanw(char *format,...);
三,窗口
1,WINDOW结构
WINDOW *newwin(int n_of_lines, int n_of_cols, int start_y, int start_x); //新建窗口
int delwin(WINDOW *ptr); //销毁窗口
2,通用函数
例子:
int addch(const chtype ch);
int waddch(WINDOW *ptr, const chtype ch);
int mvaddch(int y, int x, const chtype ch);
int mvwaddch(WINDOW *ptr, int y, int x, const chtype ch);
前缀w用于窗口、mv用于光标移动,mvw用于在窗口中移动光标
其他许多函数,都有类似通用函数,man ncurses查看
3,移动和更新窗口
int mvwin(WINDOW *ptr ,int new_y, int new_x);
int wrefresh(WINDOW *ptr);
int wclear(WINDOW *ptr);
int werase(WINDOW *ptr);
int touchwin(WINDOW *ptr); //通知curses函数库,ptr指定窗口发生变化,下次wrefresh时,需重绘窗口。利用该函数,安排要显示的窗口
int scrollok(WINDOW *ptr, bool sf); //true,允许窗口卷屏。默认不允许
int scroll(WINDOW *ptr); //调用scrollok后,再调用scroll,把窗口内容上卷一行。
4,优化屏幕刷新
int wnoutrefresh(WINDOW *ptr);
int doupdate(void);
四,子窗口
WINDOW *subwin(WINDOW *parent, int n_of_lines, int n_of_cols, int start_y, int start_x);
int delwin(WINDOW *ptr);
使用子窗口前,必须对其父窗口调用touchwin函数
五,keypad模式
int keypad(WINDOW *ptr, bool keypad_on);
六,彩色显示
bool has_colors(void); //支持彩色显示,则返回true,否则false
int start_color(void); //初始化彩色显示功能,OK/ERR
int init_pair(short pair_number, short foreground, short background); //eg: init_pair(1,COLOR_RED,COLOR_GREEN),将红色前景绿色背景定义为一号颜色组合。
int COLOR_PAIR(int pair_number); //eg: COLOR_PAIR(1),作为属性来访问,同A_BOLD
int pair_content(short pair_number, short *foreground, short *background); //和init_pair相反,通过颜色组合号,来获得颜色。
COLOR_BLACK RED GREEN YELLOW BLUE MEGENTA品红 CYAN蓝绿色 WHITE
int init_color(short color_number, short red, short green, short blue); //通过red green blue组合颜色
七,pad
所有执行写窗口操作的curses函数同样可用于pad
WINDOW *newpad(int n_of_lines, int n_of_columns); //创建逻辑屏幕,可以大于物理屏幕,两个参数代表逻辑屏幕大小,返回指向WINDOW结构的指针
int prefresh(WINDOW *pad_ptr, int pad_row, int pad_column,
int screen_row_min, int screen_col_min, int screen_row_max,int screen_col_max);
pad_ptr指针,newpad返回的指针;
pad_row, pad_column,指定pad上位置
screen_row_min, screen_col_min
screen_row_max, screen_col_max,指定物理屏幕显示区域
pnoutrefresh函数,作用与wnoutrefresh函数一样,为了更有效地刷新屏幕。
八,更多函数参考 man ncurses
linux curses函数库的更多相关文章
- Linux学习笔记13——使用curses函数库
一 安装curses库 如果你的Linux系统中curses库,直接敲入命令sudo apt-get install libncurses5-dev,然后就会自动安装curses库,安装好之后敲入命令 ...
- linux内核函数库文件的寻找
linux内核函数的so库文件怎么找呢? 首先还是要产生一个进程的coredump文件的 linux有一个lib-gdb.so库,这个进程的coredump文件中所有load段的最后一个load段中, ...
- Linux C函数库参考手册
目录 第1章 字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ascii码字符) isblank(测试字符是否为空 ...
- 【转】Linux C函数库参考
asctime(将时间和日期以字符串格式表示)clock(取得进程占用CPU的大约时间)ctime(将时间和日期以字符串格式表示)difftime(计算时间差距)ftime(取得目前的时间和日期)ge ...
- Linux C函数库大全
(1)字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ASCII码字符) isblank(测试字符是否为空格字符) ...
- Linux Curses编程实现贪吃蛇
curses库 简单而言,提供UNIX中多种终端 操作光标和显示字符 的接口.我们常见的vi就是使用curses实现的.现在一般都用ncurses库. Linux下curses函数库 Linux ...
- 使用 curses 函数库管理基于文本的屏幕
curses 函数库提供了终端无关的方式来编写全屏幕的基于字符的程序.curses 还可以管理键盘,提供了一种简单易用的非阻塞字符输入模式. curses 函数库能够优化光标的移动并最小化需要对屏幕进 ...
- 查看Linux下*.a库文件中文件、函数、变量
查看Linux下*.a库文件中文件.函数.变量等情况在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t xxx.a 2. ...
- Linux c codeblock的使用(三):使用函数库
(一)概念 什么是函数库呢?一下子说概念大家可能不太熟悉,但是这实际上是大家在windows系统上经常见到的东西.没错,就是那些后缀为DLL的文件. linux上实际也有自己的函数库文件,文件类型为. ...
随机推荐
- 给config加密
Configuration config = WebConfigurationManager.OpenWebConfiguration("/"); ConfigurationSec ...
- iOS基本的发短信和打电话调用
电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...
- 图铭Android平台银行卡号识别系统
随着智能终端(智能手机及平板电脑)及移动通信(3G)的发展,原来运行在PC上的信息系统(如邮件系统.即时通信.网页浏览.协同办公.网络购物.社交网站.博客等)逐渐转移到智能终端设备上.可以预见未来几年 ...
- Effective Java2读书笔记-对于所有对象都通用的方法(二)
第10条:始终要覆盖toString 这一条没什么好讲的,就是说默认的toString方法打印出来的是类名+@+十六进制哈希码的值.我们应该覆盖它,使它能够展示出一些更为详细清晰的信息,这个看实际情况 ...
- Keil C51怎样将子程序段定位在固定的地址位?
以下2问题均要用C51解决1.怎样将1个子程序段定位在1个固定的地址位置?例如将 INT BCD2HEX(INT XX)定位在1000H2.如何在EEPROM 中固定的位置存放1字符串?如在200H处 ...
- Delphi中ShellExecute使用详解(详细解释10种显示状态)
有三个API函数可以运行可执行文件WinExec.ShellExecute和CreateProcess.1.CreateProcess因为使用复杂,比较少用.2.WinExec主要运行EXE文件.如: ...
- linux使用mysql的命令
1.连接到mysql服务器的命令 mysql -h 服务器主机地址 -u 用户名 -p 用户密码 例:mysql -h 192.168.1.1 -u root -p //指定服务器的主机地址和用户 ...
- linux之chdir函数解析
[lingyun@localhost chdir]$ ls chdir.c [lingyun@localhost chdir]$ cat chdir.c /********************* ...
- 减少GC开销的5个编码技巧
在这篇文章中,我们来了解一下让代码变得高效的五种技巧,这些技巧可以使我们的垃圾收集器(GC)在分配内存以及释放内存上面,占用更少的CPU时间,减少GC的开销.当内存被回收的时候,GC处理很长时间经常会 ...
- 第03讲- 第一个Android项目
第03讲第一个Android项目 Android项目目录结构: 重要文件: src res AndroidManifest.xml 包含内容: MainActivity.java (程序主视图) 存放 ...