# NCURSES Programming HOWTO

# 简体中文版

目录

第一章：NCURSES库简介
  1.1 介绍（Introduction)
  1.2 什么是NCURSES
  1.3 我们可以用NCURSES做什么？
  1.4 在哪可以得到NCURSES库
  1.5 本文档的写作意图和涵盖范围
  1.6 关于文档中出现的程序
  1.7 关于此文档的其他文件发布格式
  1.8 原文贡献者
  1.9 远景规划
  1.10 关于著作权
第二章：从Hello World程序开始
  2.1 编译带有NCURSES库的程序
  2.2 实例剖析
第三章：严峻的事实
第四章：初始化
  4.1 raw()函数和cbreak()函数
  4.2 echo()函数和noecho()函数
  4.3 keypad()函数
  4.4 halfdelay()函数
  4.5 各种初始化函数
  4.6 一个例子
第五章：窗口机制简介
第六章：一些类似printw()的输出函数
  6.1 addch()函数集
  6.2 mvaddch(),waddch()和mvwaddch()函数
  6.3 printw()函数集
  6.4 addstr()函数集
  6.5 一些提醒
第七章：关于类似 scanw()的输入函数
  7.1 getch()函数集
  7.2 scanw()函数集
  7.3 getstr()函数集
  7.4 例子
第八章：输出修饰
  8.1 详细介绍
  8.2 attron()函数和attrset()函数之比较
  8.3 attr_get()函数
  8.4 attr_类函数
  8.5 watrr_类函数
  8.6 chgat()函数
第九章：窗口机制
  9.1 基本概念
  9.2 我要看见它！
  9.3 程序解析
  9.4 更多一点
  9.5 其他的边框函数
第十章：基础知识
  10.1 基础知识
  10.2 改变颜色定义
  10.3 颜色定义内容
第十一章：键盘管理
  11.1 一些基础知识
  11.2 一个简单的使用键盘的例子
第十二章：使用鼠标
  12.1 基础知识
  12.2 取得鼠标事件
  12.3 把它们放在一起
  12.4 一些辅助函数说明
第十三章：屏幕操作
  13.1 getyx() 函数集
  13.2 屏幕转储
  13.3 窗口转储
第十四章：其它特色
  14.1 curs_set() 函数
  14.2 临时离开 Curses 模式
  14.3 ACS_ 变量
第十五章：扩展库
第十六章：面板库
  16.1 基础知识
  16.2 编译面板库
  16.3 面板窗口浏览
  16.4 使用用户指针
  16.5 移动面板和改变面板的大小
  16.6 隐藏和显示面板
  16.7 panel_above() 和 panel_below() 类函数
第十七章：菜单库
  17.1 基础知识
  17.2 编译包含菜单库的程序
  17.3 Menu Driver：菜单系统的灵魂
  17.4 含菜单窗口
  17.5 滚动菜单
  17.6 多列菜单
  17.7 多选菜单
  17.8 菜单选项
  17.9 大有作为的用户指针
第十八章: 表单库
  18.1 基础知识
  18.2 编译包含表单库的程序
  18.3 玩转表单域
  18.4 表单窗口
  18.5 表单域输入的有效性检查
  18.6 Form Driver：表单系统的灵魂
第十九章: 开发工具库和扩展组件库
  19.1 CDK (Curses Development Kit)
  19.2 对话组件
  19.3 Perl中的CURSES模块
第二十章：快乐至上
  20.1 生命游戏(The Game of Life)
  20.2 幻方(Magic Square)
  20.3 汉诺塔(Towers of Hanoi)
  20.4 “八皇后”问题（Queens Puzzle）
  20.5 纸牌（Shuffle）
  20.6 打字练习（Typing Tutor）

# NCURSES Programming HOWTO 文档
（中文版）

# 翻译说明:

原题：NCURSES Programming HOWTO
译题：NCURSES Programming HOWTO 中文版
原作：Pradeep Padala
来源：The Linux Documentation Project（http://www.tldp.org/）
时间：2003年3月23日
译者：拜伦（Byron）
E-mail： byronwxm@vip.sina.com
译者说明：

  鉴于国内对Linux和Open Source（开放源代码）运动的需求渐渐升温，也为了普及Linux环境下编程，我选择了这份NCURSES-HOWTO文档进行写译工作。

  NCURSES库是由原CURSES库发展而来的，是（New CURSES）库的缩写形式，这个库提供了C/C++对屏幕以及光标、鼠标访问的特性。使得由C/C++简易写屏成为可能。由于NCURSES库提供了窗口等特性，使得NCURSES的用户群不断上升，这也是一个可喜的趋势。

  这是一份关于如何使用NCURSES 库编写程序的HOWTO文档，文档来源是The Linux Documentation Project的官方网站。这份文档详细的介绍了NCURSES库的使用。同时也是一份NCURSES教程，可以是你更快的进入到NCURESE和Unix的编程世界。译者在翻译的时候，为了使译文更加符合中文语言环境的读者。作者对原作中的部分章节和语句进行了调整。

  关于NCURSES库的更多的文档和软件都在作者自己的网站可以下载得到。
作者的个人主页: http://www.cise.ufl.edu/~ppadala/ncurses/NCURSES_HOWTO/
作者的电子邮件: p_padala@yahoo.com
或者联系译者
译者的个人主页: http://poet.cosoft.org.cn/index.htm
译者的 E-mail: byronwxm@vip.sina.com
项目成员：（按加入项目时间先后）
Byron（byronwxm@vip.sina.com）《NCURSES Programming HOWTO 中文版（简体中文）》的项目发起人，负责了1-15，19、20章的翻译工作。
Simon Zhan（simonzhan@21cn.com）负责了所有章节翻译原稿的审校工作。
DreamXST（xstsky@163.com）负责了16-18章的翻译工作和HTML格式文档的排版工作。

  在此，我谨代表我个人向Simon Zhan和DreamXST的工作表示十万分感谢。正是他们的工作，才有了今天这份文档中文版的诞生。也算是我们对中国开源社区做出的小小的贡献，如果这部文档能使您受益、那将是我们莫大的荣幸！

  此外我要感谢所有关注这个项目的网友们。他们是（排名不分先后）：毛氏更伟、Posuring、心蓝、cizi、古岳、特洛伊、Li Yewang、iceiceice和Candy。

  如果发现了文档中的错误或者对此中文文档有任何的问题和建议，欢迎联系译者。

  此份文档有配套的示例程序，可以在作者或者译者的个人站点下载。
NCURSES Programming HOWTO中译版
Pradeep Padala
p_padala@yahoo.com
V1.7.1 2002年6月25日
版本修订历史：

    版本：1.7.1		修订日期：2002年6月25日		修订人：P.Padala

修订说明：为源代码建立的修订和说明加入README文件。

    版本：1.7  		修订日期：2002年6月25日		修订人：P.Padala

修订说明：添加“其它格式”部分，并且给示例程序增添了许多有趣的特性。

    版本：1.6.1		修订日期：2002年2月24日		修订人：P.Padala

修订说明：移除了旧的Changelog部分，清理了Makefile。

    版本：1.6  		修订日期：2002年2月16日		修订人：P.Padala

修订说明：修改了很多的拼写错误，添加ACS变量部分

    版本：1.5  		修订日期：2002年1月05日		修订人：P.Padala

修订说明：更改了TOC的结构

    版本：1.3.1		修订日期：2001年7月26日		修订人：P.Padala

修订说明：修正了“维护人员”段落，校订了稳定的发布版本。

    版本：1.3  		修订日期：2001年7月24日		修订人：P.Padala

修订说明：给主文档添加了版权信息（LDP许可），给程序添加了版权信息（GPL许可）修正了printw示例程序（printw_example）的错误

    版本：1.2  		修订日期：2001年6月5日		修订人：P.Padala

修订说明：合并了ravi的改动。主要是介绍部分、菜单部分、表单部分和“Just For Fun”部分。

    版本：1.1  		修订日期：2001年5月22日		修订人：P.Padala

    修订说明：添加了“a word about window”部分，增添了 scanw示例程序（scanw_example）。

  这份文档被改写成了一份关于NCURSES库以及它的姊妹库的完整的编程参考。在这份文档中我们将以一个用NCURSES库编写的World!”程序作为开始。循序渐进的讲解NCURSES库中更多的、更复杂的操作。所以在撰写这份编程指南的时候假定读者从未接触过NCURSES库。最新版本NCURSES 库和NCURSES的文档都可以在作者的个人主页（http://www.cise.ufl.edu/~ppadala/ncurses/NCURSES_HOWTO/）找到。如果有任何的意见和建议也可以直接和作者（p_padala@yahoo.com）联系。
NCURSES Programming HOWTO版权声明

  这份HOWTO文档的版权属于Pradeep Padala（p_padala@yahoo.com）。你可以以任何形式的媒体，包括有形的、电子的方式重复生产、传播部分或者整份文档的内容。只要版权声明保存在所有的复制品中。商业交易是允许的。不过，我希望能得到有关细节的通知。

以下是作者原文：
Copyright (c) 2001 by Pradeep Padala. This document may be distributed under the terms set forth in the LDP license at linuxdoc.org/COPYRIGHT.html.

This HOWTO is free documentation; you can redistribute it and/or modify it under the terms of the LDP license. This document is distributed in the hope that it will be useful, but without any warranty, without even the implied warranty of merchantability or fitness for a particular purpose. See the LDP license for moredetails.

NCURSES Programming HOWTO中译版（简体中文）版权声明

  此HOWTO文档的译文由Byron完成，在LDP许可协议下可以您可以自由发布或修改，翻译此文档没有其他目的,只是想做点让大家都受益的事情。因为时间紧迫，也受能力所限，有翻译不当之处请批评指正，有任何意见或建议请联系byronwxm@vip.sina.com.
top