• Copyright(C) NCURSES Programming HOWTO

其它特色

现在你所掌握的函数可以写出一个非常不错的curses 程序了。这里还有一些很有趣的函数可以为你的程序增色。

curs_set()函数

这个函数用来设制光标是否可见。它的参数可以是:0(不可见),1(可见),2(完全可见)

临时离开Curses 模式

有时候你也许会想暂时离开curses 模式,回到行缓冲模式下做些其它的事。在这种情况下,你首先要调用def_prog_mode()函数存储tty 模式下的信息,然后使用end_win()函数退出curses 模式,让你回到最初的tty 模式。如果你结束了tty 模式下的工作,想要返回curses模式,就需要调用reset_prog_mode()函数,它会将def_prog_mode()函数保存的信息重新读入到虚拟的屏幕上。之后必须通过refresh()函数刷新屏幕,才可以返回到原先保存的curses 模式。让我们通过一个小例子了解一下这些函数的用法:

例:临时离开模式

/*
Compile: gcc main.c -lncurses
*/
#include <ncurses.h>int main()
{initscr();                      /* 启动CURSES 模式*/printw("Hello World !!!\n");    /* 打印Hello World!!! */refresh();                      /* 让虚拟显示器的内容显示到屏幕上*/def_prog_mode();                /* 存储当前tty 模式*/endwin();                       /* 临时退出CURSES 模式*/system("sh");                   /* 返回普通的行缓冲模式*/reset_prog_mode();              /* 返回到def_prog_mode()存储的tty 模式*/refresh();                      /* 使用refresh() 函数恢复屏幕的内容*/printw("Another String\n");     /* 完全返回CURSES 模式*/refresh();                      /* 别忘了刷新屏幕*/endwin();                       /* 退出CURSES 模式*/return 0;
}

ACS_常量

如果你曾经在DOS 下编写过程序,就应该知道扩展字符集。但是这些字符集中的字符只能在少数的终端上显示。例如NCURSES 的box()函数(译者注:这个函数用来绘制一个矩形框)就使用了这些扩展字符。所有这些字符都是以ACS_作为前缀的常量,所谓ACS,就是Alternative Character Set(可选字符集)的缩写。你可以注意到在以前的程序中多多少少都用到了这些有意思的字符。下面这个程序分别介绍这些字符:

例:ACS 常量介绍例子

/*
Compile: gcc main.c -lncurses
*/
#include <ncurses.h>
int main()
{initscr();printw("Upper left corner ");           addch(ACS_ULCORNER);    printw("\n");printw("Lower left corner ");           addch(ACS_LLCORNER);    printw("\n");printw("Lower right corner ");          addch(ACS_LRCORNER);    printw("\n");printw("Tee pointing right ");          addch(ACS_LTEE);        printw("\n");printw("Tee pointing left ");           addch(ACS_RTEE);        printw("\n");printw("Tee pointing up ");             addch(ACS_BTEE);        printw("\n");printw("Tee pointing down ");           addch(ACS_TTEE);        printw("\n");printw("Horizontal line ");             addch(ACS_HLINE);       printw("\n");printw("Vertical line ");               addch(ACS_VLINE);       printw("\n");printw("Large Plus or cross over ");    addch(ACS_PLUS);        printw("\n");printw("Scan Line 1 ");                 addch(ACS_S1);          printw("\n");printw("Scan Line 3 ");                 addch(ACS_S3);          printw("\n");printw("Scan Line 7 ");                 addch(ACS_S7);          printw("\n");printw("Scan Line 9 ");                 addch(ACS_S9);          printw("\n");printw("Diamond ");                     addch(ACS_DIAMOND);     printw("\n");printw("Checker board (stipple) ");     addch(ACS_CKBOARD);     printw("\n");printw("Degree Symbol ");               addch(ACS_DEGREE);      printw("\n");printw("Plus/Minus Symbol ");           addch(ACS_PLMINUS);     printw("\n");printw("Bullet ");                      addch(ACS_BULLET);      printw("\n");printw("Arrow Pointing Left ");         addch(ACS_LARROW);      printw("\n");printw("Arrow Pointing Right ");        addch(ACS_RARROW);      printw("\n");printw("Arrow Pointing Down ");         addch(ACS_DARROW);      printw("\n");printw("Arrow Pointing Up ");           addch(ACS_UARROW);      printw("\n");printw("Board of squares ");            addch(ACS_BOARD);       printw("\n");printw("LanternSymbol ");               addch(ACS_LANTERN);     printw("\n");printw("Solid Square Block ");          addch(ACS_BLOCK);       printw("\n");printw("Less/Equal sign ");             addch(ACS_LEQUAL);      printw("\n");printw("Greater/Equalsign ");           addch(ACS_GEQUAL);      printw("\n");printw("Pi ");                          addch(ACS_PI);          printw("\n");printw("Not equal ");                   addch(ACS_NEQUAL);      printw("\n");printw("UK pound sign ");               addch(ACS_STERLING);    printw("\n");refresh();getch();endwin();return 0;
}

扩展库

curses 函数除了主函数库外,还有一些具有很多新功能和特性的字符文本模式的扩展库。以下章节将分别介绍与curses 一起发布的三个扩展库(panel(面板扩展库)、menu(菜单扩展库)、form(表单扩展库))。

ncurses其他特性:curs_set(),离开curses模式,ACS_扩展字符集,扩展库相关推荐

  1. 模式——工程化实现及扩展(设计模式Java 版)

    -- 模式--工程化实现及扩展(设计模式Java 版) 王翔,孙逊著 ISBN 978-7-121-15638-0 2012年4月出版 定价:59.00元 16开 416页 内 容 简 介 设计模式不 ...

  2. ai进入轮廓模式怎么退出_详解AI中扩展、扩展外观、轮廓化描边、创建轮廓

    详解AI中扩展.扩展外观.轮廓化描边.创建轮廓 在学习AI软件中,有不少同学分不清扩展.扩展外观.轮廓化描边.创建轮廓这四个概念具体的功能区别,今天我们具体聊一下. 先说"扩展", ...

  3. 大型分布式架构详解:架构模式+敏捷性+可扩展+案例等

    大型分布式架构详解:架构模式+敏捷性+可扩展+案例等 本篇是大型分布式网站架构的技术总结篇. 主要对大型分布式架构中涉及的架构模式.高性能.高可用.可伸缩.敏捷性.可扩展等技术点进行简要总结,对大型分 ...

  4. 横向扩展 纵向扩展 数据库_理解数据库扩展模式的指南

    横向扩展 纵向扩展 数据库 There are lot of articles online describing database scalability patterns, but they ar ...

  5. canvas画布响应式_检查响应式导航:离开画布模式

    canvas画布响应式 在本教程中,我们将遍历四种模式的变体,其中导航和页面内容放在画布之外,以节省空间,直到请求. 是时候停止复制和粘贴了,让我们开始理解! 回顾一下,本系列文章的第一个重点是导航保 ...

  6. php 高级特性,PHP对象、模式与实践之高级特性分析

    本文实例讲述了PHP面向对象程序设计高级特性.分享给大家供大家参考,具体如下: 高级特性 包括: 1.静态方法和属性(通过类而不是对象来访问数据和功能) 2.抽象类和接口(设计,实现分离) 3.错误处 ...

  7. oracle主备库sync模式,Oracle 探索DG备库undo工作模式

    模拟备库出现 ORA-01555 分析备库 undo 工作模式 一: 修改主库 备库 undo 表空间 1.在主库创建undo表空间(会自动同步到备库) SYS@prod>create undo ...

  8. 在隐身模式下使用 Chrome 扩展程序

    在 Chrome 最初开始支持扩展程序的时候,是不能在隐身模式下使用扩展程序的,因为很多用户都会保存一些数据,而保存数据则违背了隐身模式的原则.但对于很多经常在隐身模式下使用 Chrome 的用户来说 ...

  9. 景深决定照相机什么特性_2018年自考《摄影技术基础》习题库及答案

    2018年自考<摄影技术基础>习题库及答案 简答: 1.景深: 答:当镜头对准某景物聚焦后,在该景物前后一定距离范围内的景物,也能在焦平面上结成比较清晰的影像.这个结像清晰景象空间的纵长距 ...

最新文章

  1. 深入理解javascript函数系列第二篇——函数参数
  2. Python中format_map与format字符串格式化的区别
  3. POJ 3070 Fibonacci(矩阵快速幂入门、模板)
  4. java8 :: 用法 (JDK8 双冒号用法)
  5. vb6.0服务器组件安装失败,win10安装vb6.0总是失败怎么办?win10 vb6.0安装不了的解决办法...
  6. linux vnc端口映射,linux服务器配置docker+vnc,随时访问远程桌面
  7. 【java学习之路】(mysql篇)003.mysql中limit、表的创建、删除、约束
  8. Java 基础(十九)代理
  9. 利用ZEBAR 软件生成ZPL 代码
  10. Type-C接口技术(一)
  11. 汽车汽油电子喷射系统
  12. Epub格式电子书格式
  13. 前端插件:雪碧图(多图压缩为一张)
  14. 新东方 词根词缀 excel_词根词缀记忆英语单词,高效,不易遗忘
  15. 2020个人所得税,税前工资 和 到手工资的相互计算源码(java)
  16. STM32F40xxx 系列芯片引脚图
  17. leetcode576. 出界的路径数
  18. 抖音 xlog 算法 bqq 字段
  19. 使用Flashbuilder/Flashbuilder-plugins搭建Flex工程每日构建(自动化构建)的方法
  20. 红海市场杀出的细分蓝海,车队管理改变商用车命运的「核武器」

热门文章

  1. 认知NumPy数学运算库
  2. AKKA Actor创建
  3. css_input[checked]复选框去掉默认样式并添加新样式
  4. ActiveMQ专题2: 持久化
  5. Android组件系列-----Activity保存状态
  6. MyEclipse在删除文件后servers报错问题解决
  7. ActiveMQ 即时通讯服务 入門指南及淺析
  8. React.js 官网入门教程 分离文件 操作无法正常显示HelloWord
  9. MFC多文档中opencv处理图像打开、保存
  10. 官网下载旧版本的Xcode