curses库基本概念
控制字符输入/输出的格式
termios缺点,转义处理
curses优点
提供与终端无关的字符处理方式
可以管理键盘
支持多窗体管理
curses vs. ncurses
源文件包含头文件curses.h
编译时加 –lcurses选项
gcc program.c −o program −lcurses
gcc −I/usr/include/ncurses program.c −o program −lncurses
curses配置情况的检查
查看头文件:ls −l /usr/include/*curses.h
查看库文件:ls −l /usr/lib/*curses.*
cureses工作于屏幕、窗口和子窗口上
屏幕:正在写的设备,占据设备上的全部可用显示面积
窗口
curses窗口(称为stdscr):至少存在一个,与物理屏幕的尺寸相同
其他窗口:尺寸小于屏幕窗口,可以重叠
子窗口:必须包含在父窗口内
curses库的核心数据结构
stdscr
对应于“标准屏幕”,是curses程序的默认输出窗口
工作原理与stdio函数库中的stdout非常相似
在curses函数产生输出时被刷新
在调用refresh函数之前,输出到stdscr上的内容不会在屏幕上显示
curscr
对应当前屏幕外观
调用refresh函数时,curses函数库比较stdscr及curscr之间的不同之处,然后用两个数据结构之间的差异来刷新屏幕
curses程序需了解stdscr,但不需要使用curscr数据结构
curses程序中输出字符的过程
用curses函数刷新逻辑屏幕
用refresh函数刷新物理屏幕
逻辑屏幕
通过字符数组来实现
屏幕左上角—坐标(0, 0)为起点
坐标形式
y在前,表示行号
x在后,表示列号
每个位置包括该屏幕位置的字符及其属性
curses中的全局变量
WINDDW* curscr:当前屏幕
WINDOW* stdscr:标准屏幕
int LINES:终端上的行数
int COLS:终端上的列数
bool TRUE:真标志,1
bool FALSE:假标志,0
int ERR:错误标志,-1
int OK:OK标志,0
curses屏幕处理
函数定义
#include <curses.h>
WINDOW *initscr(void);
在一个程序中只能调用一次
判断终端类型和初始化Curses数据结构,同时也对终端进行一次刷新以清除屏幕,为以后的操作做准备
成功时,返回一个指向stdscr结构的指针
失败时,返回一个诊断信息并使程序结束
函数定义
int endwin(

最低0.47元/天 解锁文章
3720

被折叠的 条评论
为什么被折叠?



