首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>经验技巧>正文

Linux终端图形库 Curses简介和实例分析

http://www.oklinux.cn  2008-03-18  来源: 赛迪网 lktlks  会员收藏  游客收藏  【 】 

屏幕分物理屏幕(我们所看到的)和逻辑屏幕(在内存中的), 我们调用函数时修改的是逻辑屏幕,它不会在当前物理屏幕上显示出来.所以现在屏幕上还是什么也没有, 需要调用refresh()把我们对逻辑屏幕的改动在物理屏幕(显示器)上显示出来. 然后用getch()让屏幕暂停一下.

最后调用endwin()结束curses, 恢复原来的屏幕.

好了, 我们完成了第一个例子的分析. 是不是挺简单的?

不过不尽如人意的是屏幕还是那个样子, 没有什么色彩. 要加色彩? 那也是挺容易的: 首先用start_color()函数开启颜色模式, 然后设置我们要的颜色就行了.

curses里的颜色是配对的, 要一个背景色对一个前景色. 使用之前用init_pair()初始化.

比如init_pair(1, COLOR_BLUE, COLOR_GREEN);就定义了一组颜色, COLOR_BLUE为前景色, COLOR_GREEN为背景色. 1是它们的标记号码(供其他函数调用时使用) 我们来看一个简单的例子:

/*--------------------------------------------------------------
A simple curses color demo program
Coder: jellen
Date: 3-26-2004
-------------------------------------------------------------*/

#include 

int main()
{
initscr(); /*初始化屏幕*/
if(start_color() == OK) /*开启颜色*/
{
init_pair(1, COLOR_RED, COLOR_GREEN); /*建立一个颜色对*/
attron(COLOR_PAIR(1)); /*开启字符输出颜色*/
move(LINES/2, COLS/2);
waddstr(stdscr, "Yet another Hello, world!");
attroff(COLOR_PAIR(1)); /*关闭颜色显示*/
refresh();
}
else
{
waddstr(stdscr, "Can not init color");
refresh();
}
endwin(); /*关闭curses状态*/
return 0;
}

这个程序假如保存为color.c

那么你可以这样编译了: gcc -o color color.c -lcurses

用./color一运行个彩色的字? 呵呵, 虽然不好看, 但是说不定你自己以后可以用curses写出精美的程序。

共2页: 上一页 [1] 2 下一页

上一篇:如何使用pipeline function获得实时输出   下一篇:修改Linux系统的文件属性


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·修改Linux系统的文件属性
·Linux系统清除Grub的几种方法
·在Linux系统下玩Windows游戏
·小技巧:开启 GNOME 的窗口分组功能
·终于彻底解决了Ubuntu中上网的问题
·Ubuntu shell脚本开机总动运行的方法
·技巧分享 不让Linux系统纪录与历史命令
·Linux下星际译王取词小问题的解决
·Linux系统Xwindow的初始中鼠标箭头和分辨率的问题
·一个初学者的Linux学习之旅之Linux安装篇
·学习Linux有没有前途
·Linux下可用的Java音乐播放器:YOYOPlayer
·Skype 2.0 面向 Linux 版已经发布了
·新手学堂 Linux系统中Fdisk命令使用方法
·使用Linux的真正理由
·Thinkpad T43笔记本通过蓝牙在Ubuntu上同步Palm Treo6
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux系统设置编译器路径的几种方法介
·新手学堂 Ubuntu7.10中添加XP字体
·Thinkpad T43笔记本通过蓝牙在Ubuntu上
·新手学堂 Linux系统中Fdisk命令使用方
·Skype 2.0 面向 Linux 版已经发布了
·Linux下可用的Java音乐播放器:YOYOPla
·学习Linux有没有前途
·一个初学者的Linux学习之旅之Linux安装
·Linux系统Xwindow的初始中鼠标箭头和分
·Linux下星际译王取词小问题的解决
·技巧分享 不让Linux系统纪录与历史命令
·Ubuntu shell脚本开机总动运行的方法
  阅读排行
·Linux爱好者入门教程
·Linux操作系统下的串口通信学习笔记
·从硬盘安装RHEL 5(Red Hat Enterprise
·Vim实用技术第一部分:实用技巧
·Vmware Workstation 5.0.0使用说明
·VM中Linux虚拟机下安装VMware Tools
·新手看招:调试工具GDB基本知识全接触
·如何在Linux/FreeBSD下玩模拟器游戏
·Gentoo版Linux操作系统的前世今生
·Linux进程间通信:管道及有名管道
·探索Linux 操作系统内存模型和管理
·Linux系统中用ALSA驱动声卡流程详解
·并不绝对安全:Linux下安全十二法则
·Linux 技巧: Bash 参数和参数扩展
·Linux操作系统网络驱动程序编写详解
网摘收藏: