⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch19.htm

📁 ncurses中文说明
💻 HTM
字号:
<html>
<head>
<title>第十九章:开发工具库和扩展组件库</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="keywords" content="ncurses,curses,开发工具库,扩展组件库">
</head>
<body leftmargin=40 bgcolor="#DAFFFF" text="black" link="#0000ff" alink="blue" vlink="#940084">
<br>
<div align="center"><a href="index.htm"><font size="5">
    <strong>
    回  目  录
    </strong>
  </font></a></div>
  <div align="right">
  <font size="5">
  <a href="ch18.htm">
  <strong>
  上 一 章
  </strong>
  </a>
  <a href="ch20.htm">
    <strong>
    下 一 章
	</strong>
	</a>
	</font>
	</div>
	<br>
<br>
<br>
<h1 align="center">
第十九章:开发工具库和扩展组件库
</h1>
<br>
<br>
<br>
<div align="left">
<font size="4">
<p>
<dd>
通过以上章节,你现在知道CURSES姊妹库的威力了吧?你现在一定卷起袖子准备开发一个规模宏大的项目了。不过先打住…如果只是直接使用NCURSES库或者其姊妹库,编写这些代码并维护其中的窗口组件仍然是件相当痛苦的事。以下会介绍一些组件工具库和扩展组件库。这些库中包含了一些可以直接使用的工具和常用组件,可以用来替代你自己编写的组件,你可以直接使用它们,或从这些组件的代码中汲取编程灵感,甚至还可以自己来扩展这些组件的功能。
</dd>
</p>
<br>
<br>
<h3 align="left">
<a name="cdk">
19.1. CDK (Curses Development Kit)
</a>
</h3>
<br>
<p>
<dd>
在这里先引用作者的话:
</dd>
</p>
<p>
<i>
CDK是CURSES开发包(Curses Development Kit)的缩写,目前包含21个可以用来迅速开发CURESES程序的常用组件。
</i>
</p>
<p>
<dd>
这个工具包提供了一些可以直接应用到程序中的常用组件。这些组件的源代码都有良好的编码风格和非常详细的文档。示例目录中的例子会给CURSES的初学者很好的开始。CDK可以从官方网站<a href="http://www.vexus.ca/products/CDK/cdk.tar.gz">http://www.vexus.ca/products/CDK/cdk.tar.gz</a>下载(译者注:也可以从Poet项目的站点<a href="http://poet.cosoft.org.cn/downloads/develop/cdk.tar.gz">http://poet.cosoft.org.cn/downloads/develop/cdk.tar.gz</a>下载)。你可以根据tar包中的README文件提示安装它。
</dd>
</p>
<br>
<h4 align="left">
<strong>
19.1.1. 组件列表
</strong>
</h4>
<p>
<dd>
下面这个列表就是CDK中的组件列表,旁边有这个组件的说明:
</dd>
</p>
<table align="center" border="1" bgcolor="#CCCCFF" cellpadding="1" cols="2" width="100%">
<tr heigth="25" align="center">
<td width="20%">
组件
</td>
<td>
简要说明
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Alphalist
</td>
<td align="left">
允许用户从一个单词列表中选择一个单词,并且能够通过键入单词的前几个字符来缩短搜索列表。 
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Buttonbox
</td>
<td align="left">
创建按钮。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Calendar
</td>
<td align="left">
创建一个简单日历。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Dialog
</td>
<td align="left">
创建一个让用户通过按钮响应的对话框。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Entry
</td>
<td align="left">
允许用户可以输入各种类型的数据。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
File Selector
</td>
<td align="left">
一个用CDK基本组件建立组成的文件选择器。这个例子展示了怎样用CDK基本组件创建一个复杂的对话框。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Graph
</td>
<td align="left">
画一个图标
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Histogram
</td>
<td align="left">
画一个柱状图
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Item List
</td>
<td align="left">
创建一个可以供用户选择的弹出式区域。对于选择日期来说是个非常有用的组件。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Label
</td>
<td align="left">
显示一个弹出式信息框,它的标签可以被看作窗口的一部分。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Marquee
</td>
<td align="left">
显示一个可以滚动的选取框。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Matrix
</td>
<td align="left">
创建一个由很多选项组合的复杂矩阵。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Menu
</td>
<td align="left">
创建一个下拉式菜单。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Multiple Line Entry
</td>
<td align="left">
一个多行的输入区域,对于输入多行的数据(例如描述文本)很有用。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Radio List
</td>
<td align="left">
创建一个单选按钮列表。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Scale
</td>
<td align="left">
产生一个数值范围让用户在限定的范围内(用方向键等)从中选定一个数值。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Scrolling List
</td>
<td align="left">
创建一个滚动列表/菜单。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Scrolling Window
</td>
<td align="left">
创建一个可滚动的日志文件查看器。你可以在它运行时向窗口中添加数据。这是一个很不错的用来显示某些进度的组件。(类似一个控制台窗口)
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Selection List
</td>
<td align="left">
创建一个多选项菜单。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Slider
</td>
<td align="left">
像Scale组件一样,这个组件提供一个可视的滑块用来显示数值。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Template
</td>
<td align="left">
创建一个预先设置输入文字的敏感区域,常被用作输入日期、电话号码等预先设置好格式的输入区域。
</td>
</tr>
<tr align="center" height="25">
<td width="20%">
Viewer
</td>
<td align="left">
这是一个文件/信息查看器。在你要从某个文件读取信息时将会非常有用。
</td>
</tr>
</table>
<br>
<br>
<h4 align="left">
<strong>
19.1.2. 一些吸引人的功能
</strong>
</h4>
<p>
<dd>
CDK除了让基于CURSES的程序便于开发和维护。CDK还解决了很多复杂的CURSES处理问题。例如打印混合颜色的字符串,使字符串看起来更雅致。你也可以向CDK的某些函数传递带修饰标记字符串:
</dd>
</p>
<p>
例如:
</p>
<font face="Times New Roman, Times, serif">
<p>
<dd>
"&lt;/B/1&gt;This line should have a yellow foreground and a blue background.&ltl;!1&gt;"
</dd>
</p>
</font>
<p>
<dd>
当你将这些参数传给newCDKLabel()函数,它将打印一行蓝色背景的黄色字符串。当然,还有很多修饰标记,让字符看起来更加美观和精致。你可以通过查阅man文档中的cdk_display(3X)页找到更多详细的资料。这页给出了很多非常不错的例子来说明它的用法。
</dd>
</p>
<h4 align="left">
<strong>
19.1.3. 总结
</strong>
</h4>
<p>
<dd>
总而言之,CDK包含了很多编码风格良好的扩展组件。适当的使用这些组件可以很方便的构建一个强大、稳定的工作框架。尤其是编写一个比较复杂的图形用户界面。
</dd>
</p>
<br>
<br>
<h3 align="left">
<a name="dialog">
19.2. 对话组件
</a>
</h3>
<p>
<dd>
很久以前,也就是1994年的9月,那时Linux还鲜有人知,Jeff Tranter就在Linux Journal发表了一篇关于人机对话的<a href="http://www2.linuxjournal.com/lj-issues/issue5/2807.html">文章</a>。这篇文章的开头是这样写的:
</dd>
</p>
<p>
<dd>
<i>
Linux是基于Unix的操作系统,但是它的内核和应用程序中很多独特且实用的功能却超过了Unix 下某些常用的东西。其中一个鲜为人知的亮点就是“dialog”:一个可以不用编写shell脚本就可以创建专业效果的对话框的部件。这篇文章仅仅作为一个指南,介绍dialog并通过例子告诉你何时何地可以用到它……
</i>
</dd>
</p>
<p>
<dd>
就像他说明的,dialog是一个真正的亮点。它可以简单的创造出专业效果的对话框。它可以创建多种多样的对话框,比如:带菜单的、带选项列表的等等。它应该是缺省安装的,如果你的机器上没有,你可以点击<a href="http://www.ibiblio.org/pub/Linux/utils/shell/dialog-0.61a.tar.gz">ibiblio linux archive.</a>下载
</dd>
</p>
<p>
<dd>
上面的文章给出了dialog的作用和能力的概览。man文档还有更多关于dialog详细的资料。它可以应用在更多的情况下。Linux内核的文本模式就是一个很好应用dialog的例子。Linux的内核用不同版本的dialog定制自己所需要的东西。
</dd>
</p>
<p>
<dd>
dialog最初是为shell脚本代码的使用而设计的。如果你想将它应用到你的C程序中,你可以使用lobdialog。但是关于libdialog的文档非常稀少。最权威的参考是这个库的dialog.h头文件。你也许需要去改动它已得到自己想要的输出。非常幸运,它的源代码很容易定制。我已经多次成功地通过自己修改这些代码应用于不同的应用场合。
</dd>
</p>
<br>
<br>
<h3 align="left">
<a name="prel">
19.3. Perl中的CURSES模块
</a>
</h3>
<br>
<p>
<dd>
Perl中的CURSES模块:Curses::Form 和Curses::Widgets用来从Perl中访问Curses。如果你已经安装了Curses和Perl,你就可以从<a href="http://www.cpan.org/modules/01modules.index.html">CPAN 模块页</a>的“Curses”的类别中下载这三个压缩的模块。当你安装这些模块后,就可以像在Perl中用其他模块那样使用。如果你需要更多详细资料可以参看perlmod man文档。以上的模块都包含很不错的说明文档,而且包含了一些演示脚本来测试这些功能。虽然widgets模块还很原始,但这些模块提供从Perl中访问curses很好的途径。
</dd>
</p>
<p>
<dd>
如果需要更多的资料可以参看man页Curses(3),Curses::Form(3)和Curses::Widgets(3)这些页只有安装以上的模块才可以被安装。
</dd>
</p>
</font>
</div>
<br>
<br>
<div align="center"><a href="index.htm"><font size="5">
    <strong>
    回  目  录
    </strong>
  </font></a></div>
  <div align="right">
  <font size="5">
  <a href="ch18.htm">
  <strong>
  上 一 章
  </strong>
  </a>
  <a href="ch20.htm">
    <strong>
    下 一 章
	</strong>
	</a>
	</font>
	</div>
	<br>
<br>
<br>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -