Xiao_bird博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
这几天公司放高温假,在家无聊的时候,想起来了一直想了解的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()  关闭之后输出的字符属性
posted on 2009-07-21 17:04  Xiao_bird  阅读(5188)  评论(0编辑  收藏  举报