这几天公司放高温假,在家无聊的时候,想起来了一直想了解的nCurses库,于是就装了个虚拟机,装了个RedFlag Linux,备好环境开始尝试。
本以为nCurses还要下载,不想Linux的默认安装一般已经带了这个库,这倒是省事了,不过,我没有找到nCurses的官方手册,却找到了一本书《NCURSES Programming HOWTO 中文版》,看了几页,感觉还真是不错,如果您也是nCurses的初学者,也推荐您看一下这本书:)
学习的过程还算比较顺利,我现在只把今天学到的几点记下来,以防以后用不到忘掉:
1、要包含头文件 ncurses.h,这个头文件中已经包含了 stdio.h
2、在所有ncurses操作之前,必须初始化屏幕,可以通过调用 initscr() 来实现,同时,在程序结束前,一定要使用endwin()来回收资源,恢复屏幕原有设置,否则在程序退出后,终端显示可能会不正常
3、initscr之后,要预设一些屏幕显示的方式,如:
raw() 关闭行缓冲,即,在用户输入时,不必等待回车或是EOF,用户每按一个字,都会通知程序
echo() 打开用户回显(默认设置),即用户的按键可以回显到屏幕上
noecho() 关闭用户回显,即用户的按键不回显到屏幕上
keypad() 识别用户的功能键,即F1、F2等这些键,代码中可以获得用户的这些按键
4、ncurses 的窗口概念,默认会有一个 stdscr 窗口,程序可以拥有多个窗口;而ncurses的函数有参数来指定操作的目的窗口。ncurses的函数命名方式:以printw为例,输出字符串到屏幕缓冲区,有如下几个版本:
printw 默认输出到stdscr
wprintw 输出到指定窗口
mvprintw 默认输出到stdscr中的具体位置
mvwprintw 输出到指定窗口中的具体位置
5、输出到缓冲区后,需要使用 refresh 来将缓冲区字符输出到屏幕
6、列出如下函数:
raw() 禁止行缓冲区
cbreak() 类似于raw()
echo() 打开终端回显
noecho() 关闭终端回显
keypad() 允许使用功能键,F1、F2等,调用方式:keypad(stdscr, TRUE)
halfdelay() “半延时模式”,可以在指定时间等不到用户输入后,返回失败
refresh() 将屏幕缓冲区内容显示到屏幕
addch() 将单一字符输出至缓冲区,可以添加字符属性控制
printw() 输出字符串到屏幕缓冲区,类似printf
addstr() 输出字符串到屏幕缓冲区
getch() 读取一个字符
scanw() 按格式读取输入
getstr() 读取字符串
getmaxyx() 得到指定窗口的行、列数,并非函数,是一个宏
getyx() 得到光标当前的行、列,是一个宏
attr_set() 对整个窗口进行字符属性设置
attron() 设置之后输出的字符属性
attroff() 关闭之后输出的字符属性
本以为nCurses还要下载,不想Linux的默认安装一般已经带了这个库,这倒是省事了,不过,我没有找到nCurses的官方手册,却找到了一本书《NCURSES Programming HOWTO 中文版》,看了几页,感觉还真是不错,如果您也是nCurses的初学者,也推荐您看一下这本书:)
学习的过程还算比较顺利,我现在只把今天学到的几点记下来,以防以后用不到忘掉:
1、要包含头文件 ncurses.h,这个头文件中已经包含了 stdio.h
2、在所有ncurses操作之前,必须初始化屏幕,可以通过调用 initscr() 来实现,同时,在程序结束前,一定要使用endwin()来回收资源,恢复屏幕原有设置,否则在程序退出后,终端显示可能会不正常
3、initscr之后,要预设一些屏幕显示的方式,如:
raw() 关闭行缓冲,即,在用户输入时,不必等待回车或是EOF,用户每按一个字,都会通知程序
echo() 打开用户回显(默认设置),即用户的按键可以回显到屏幕上
noecho() 关闭用户回显,即用户的按键不回显到屏幕上
keypad() 识别用户的功能键,即F1、F2等这些键,代码中可以获得用户的这些按键
4、ncurses 的窗口概念,默认会有一个 stdscr 窗口,程序可以拥有多个窗口;而ncurses的函数有参数来指定操作的目的窗口。ncurses的函数命名方式:以printw为例,输出字符串到屏幕缓冲区,有如下几个版本:
printw 默认输出到stdscr
wprintw 输出到指定窗口
mvprintw 默认输出到stdscr中的具体位置
mvwprintw 输出到指定窗口中的具体位置
5、输出到缓冲区后,需要使用 refresh 来将缓冲区字符输出到屏幕
6、列出如下函数:
raw() 禁止行缓冲区
cbreak() 类似于raw()
echo() 打开终端回显
noecho() 关闭终端回显
keypad() 允许使用功能键,F1、F2等,调用方式:keypad(stdscr, TRUE)
halfdelay() “半延时模式”,可以在指定时间等不到用户输入后,返回失败
refresh() 将屏幕缓冲区内容显示到屏幕
addch() 将单一字符输出至缓冲区,可以添加字符属性控制
printw() 输出字符串到屏幕缓冲区,类似printf
addstr() 输出字符串到屏幕缓冲区
getch() 读取一个字符
scanw() 按格式读取输入
getstr() 读取字符串
getmaxyx() 得到指定窗口的行、列数,并非函数,是一个宏
getyx() 得到光标当前的行、列,是一个宏
attr_set() 对整个窗口进行字符属性设置
attron() 设置之后输出的字符属性
attroff() 关闭之后输出的字符属性