在UNIX下如何用C语言保存和恢复屏幕
来源:asp之家 发布时间:2010-05-20 18:24:00
■ 如何在您的程式使用 curses ?
在您的 C 程式的档头将 <curses.h> include 进来.当您引进 curses.h
这个函式库後, 系统会自动将 <stdio.h> 和 <unctl.h>一并 include 进
来.另外, 在 System V 版本中, <terminfo.h> 这个函式库也将一并
include进来.
#include <curses.h>
main()
{
: :
: :
}
当然, 您的系统内必须放有 curses.h 这个函式库.
■ 如何编译(compile)
当您编辑好您的程式, 在 UNIX 提示符号下键入:
% /usr/5bin/cc [file.c] -lcurses
^^^^^^^
引进 curses.h 这个 library
或 % /usr/5bin/cc [file.c] -lcurses -ltermlib
(*注二)
■ 如何开始我的第一个 curses 程式?
在开始使用 curses 的一切命令之前, 您必须先利用 initscr()这个函式
来开启 curses 模式.
相对的, 在结束 curses 模式前 ( 通常在您结束程式前 ) 也必须以
endwin()来关闭 curses 模式.
#include <curses.h>
main()
{
initscr();
: :
: :
: :
endwin();
}
这是一般 curses 程式标准的模式.
此外, 您可以就您程式所须, 而做不同的设定. 当然, 您可以不做设定,而
只是呼叫 initscr().
您可以自己写一个函式来存放所有您所须要的设定. 平常使用时, 只要呼
叫这个函式即可启动 curses 并完成一切设定.
下面的例子, 即是笔者将平常较常用的一些设定放在一个叫 initial()的函
式内.
void initial()
{
initscr();
cbreak();
nonl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();
}
各函式分别介绍如下:
□ initscr()
initscr() 是一般 curses 程式必须先呼叫的函数, 一但这个函数
被呼叫之後, 系统将根据终端机的形态并启动 curses 模式.
□ endwin()
curses 通常以呼叫 endwin() 来结束程式. endwin() 可用来关闭
curses 模式, 或是暂时的跳离 curses 模式.如果您在程式中须要
call shell ( 如呼叫 system() 函式 ) 或是需要做 system call,
就必须先以 endwin() 暂时跳离 curses 模式. 最後再以
wrefresh() doupdate() 来重返 curses 模式.
□ cbreak()
nocbreak()
当 cbreak 模式被开启後, 除了 DELETE 或 CTRL 等仍被视为特殊
控制字元外一切输入的字元将立刻被一一读取.当处於 nocbreak 模
式时, 从键盘输入的字元将被储存在 buffer 里直到输入 RETURN
或 NEWLINE.在较旧版的 curses 须呼叫 crmode(),nocrmode() 来
取代 cbreak(),nocbreak()
□ nl()
nonl()
用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字
元 ( 如 \n ).
而输出资料时, NEWLINE 字元是否被对应为 RETURN 和 LINDFEED
系统预设是开启的.
□ echo()
noecho()
此函式用来控制从键盘输入字元时是否将字元显示在终端机上.系统
预设是开启的.
□ intrflush(win,bf)
呼叫 intrflush 时须传入两个值:
win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr
bf 为 TRUE 或 FALSE
当 bf 为 true 时, 当输入中断字元 ( 如 break) 时, 中断的反应
将较为快速.但可能会造成萤幕的错乱.
□ keypad(win,bf)
呼叫 keypad 时须传入两个值:
win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr
bf 为 TRUE 或 FALSE
当开启 keypad 後, 可以使用键盘上的一些特殊字元, 如上下左右
等方向键, curses 会将这些特殊字元转换成 curses.h 内定义的一
些特殊键. 这些定义的特殊键通常以 KEY_ 开头.
□ refresh()
refresh() 为 curses 最常呼叫的一个函式.
curses 为了使萤幕输出入达最佳化, 当您呼叫萤幕输出函式企图改
变萤幕上的画面时, curses 并不会立刻对萤幕做改变, 而是等到
refresh() 呼叫後, 才将刚才所做的变动一次完成. 其馀的资料将
维持不变. 以尽可能送最少的字元至萤幕上. 减少萤幕重绘的时间.
如果是 initscr() 後第一次呼叫 refresh(), curses 将做清除萤
幕的工作.


猜你喜欢
- 应用Google Adwords的营销者们现在有了一个新的定向选择。Google Adwords广告系统升级后,商业企业可以根据
- 搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息。您可以在您的网站中创建一个纯文本文件robots.
- 从使用虚拟空间到使用独立服务器,这对一个站长来说是一件惊天动地的大事。1、除非你确认自己掌握了,否则不要去试WIN2003的防火墙WIN20
- JDK的下载与安装第一步:先在官网下载jdk官方下地址 http://www.oracle.com/technetwork/java/jav
- 这本小册子薄得让人有点为难,但是这已经有了足够的信息量让所有人来重新审视一个产业,没错,从今天开始,SEM 这个产业可以划分为「之前」和「以
- 一 为什么要在国外注册域名?随便讲讲,我现在非常喜欢在国外注册域名了,我想好处应该有2个:1是价格便宜2是管理方便 过户 转出 PUSH等非
- 最近在一hadoop测试集群运行一个spark streaming程序,然后使用nohup ./execute.sh & 执行让程序
- 我的范文中国流量稳定在7000IP/日了,收入也稳定了,在广大网友中已有了一定的影响力了,品牌也日益明显。回首范文中国两年来走过的足迹,感慨
- 11月26日 360安全浏览器推出一年来迅速赢得了网民的认可,而安全无疑是这款浏览器最显著的特色。360总裁齐向东表示,90%的
- 在了解了Exchange Server Store的工作方式和特点以后,我们接下来介绍一些邮件存储系统的管理技巧。管理员在掌握了原理以后会对
- 一、概念Docker 端口映射即映射容器内应用的服务端口到本机宿主机器。二、实现当容器中运行一些网络应用,要让外部访问这些应用时,可以通过
- 中国互联网协会公布的2008年一季度中国反垃圾邮件调查结果显示,商业广告类是侵扰用户的垃圾邮件的主要来源;在用户最讨厌的垃圾邮件中,病毒型垃
- 今天在使用VMware打算在机器中安装新的虚拟机时,出现“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”错误如下
- 《商业大亨》以刺激真实的商场竞争、完备的市场体系、拟真的开店攻略、完善的员工系统、刺激的股市系统、有效的媒体系统、激战的赢在大亨系统……,让
- 既然搜索引擎没有一个完善的机智来识别图片,那么我们就要帮助搜索引擎识别,根据我们的实验经验,下面总结出几点建议,供大家参考讨论。一 ALT标
- 2008年过去了,尽管金融危机给中国企业带来了冲击,导致不少企业遭遇滑坡,但是网络却仍然是2008年增长的最强音,中国网民已达到2.98亿人
- Phpwind的7.3正式版推出了圈子的概念, 在看了具体应用后,发现他还是利用目前十分热门的SNS概念将一群人圈在了一起。装完论坛之后,圈
- 乐鱼影音盒在初期使用过程中,难免会出现这样那样的问题,乐鱼菜鸟们也许会为之着急、恼火,那么就请来看看以下的小技巧吧!为了让朋友们更快速的解决
- 互联网广告之于互联网的地位,笔者曾写文论述过,这里再不赘述。广告是互联网企业衣食父母的地位是笔者认为不容置疑的。博客这个互联网“新宠”,在为
- 北京时间11月3日早间消息,受新闻出版总署终止《魔兽世界》审批消息影响,网易(Nasdaq:NTES)股价周一在纳斯达克下跌2.41%。截至