1 curses开发包初接触
~~~~~~~~~~~~~~~~~~~~~
1.1 curses包内容
=================
* curses.h
主要控制屏幕的输入和输出,光标的操作,窗口的创建和操作等
* panel.h
类似窗口堆栈,不同窗口可以存放其中,并且可以在其中进行移动
* menu.h
主要包括创建菜单并且与之交互的函数,主要用来接受用户的选择
* form
包括创建表单以及与之交互的函数,主要用来接受用户数据输入
1.2 开始使用curses包
=====================
1.2.1 curses初始化
-------------------
* 一般情况下在其余的cuses函数被调用前就必须先调用initscr().
* stdscr和curscr的不同在于
* stdscr代表的是逻辑屏幕
* curscr代表的是物理屏幕
* wfresh函数会根据stdscr和curscr之间的差异更新物理屏幕
* 如果程序使用多个终端
* 使用newterm()代替initscr()
* 对于每个希望与之交互的终端都调用一次newterm()
* newterm()返回一个SCREEN结构用来引用某个终端
* 在需要从某个终端接受输入和输出的时候,必须通过set_term(SCREEN)来将它设置成当前终端
1.2.2 终端模式设置
-------------------
* 终端模式实际上是一系列开关的属性,它们直接影响着终端如何处理输入以及输出.
* keypad(stdscr,TRUE)
用来控制是否将键盘上的特殊字符转换成curses包中的对应特殊键
* nonl()
用来控制程序将回车键不要转换成换行符
* cbreak()
读取除了DELETE或CTRL等特殊字符以外的所有字符
* noecho()
使键盘输入的字符不需要直接在屏幕上显示
1.2.3 颜色处理
---------------
* 使用函数has_colors()判断终端是否支持彩色
* 使用init_pair(0,COLOR_GREEN,COLOR_BLACK)初始化颜色配对表,设置字符的前景色和背景色
* 使用attron(A_BLINK|COLOR_PAIR(2))设置要显示的字符如何显示
1.2.4 使用refresh和wrefresh进行屏幕更新
----------------------------------------
* refresh其实是wrefresh(stdscr)的宏定义
1.2.5 使用endwin()函数中断curses程序
-------------------------------------
* endwin()是程序最后调用的一个函数,与initscr()相呼应
* endwin()执行后,光标移动到屏幕的左下方
1.3 编译
=========
* 如果程序使用了panel,menu,form等库,-lcurses选项必须在其余的选项之后
1.4 例子
=========
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#include <curses.h> static void finish(int sig); int main() { initscr(); keypad(stdscr,TRUE); nonl(); cbreak(); noecho(); if(has_colors()) { start_color(); init_pair(0,COLOR_BLACK,COLOR_BLACK); init_pair(1,COLOR_GREEN,COLOR_BLACK); init_pair(2,COLOR_RED,COLOR_BLACK); init_pair(3,COLOR_CYAN,COLOR_BLACK); init_pair(4,COLOR_WHITE,COLOR_BLACK); init_pair(5,COLOR_MAGENTA,COLOR_BLACK); init_pair(6,COLOR_BLUE,COLOR_BLACK); init_pair(7,COLOR_YELLOW,COLOR_BLACK); } attron(A_BLINK|COLOR_PAIR(2)); move(LINES/2+1,COLS-4); addstr("Eye"); refresh(); sleep(2); move(LINES/2-3,COLS/2-3); addstr("Bulls"); refresh(); sleep(2); finish(0); } static void finish(int sig) { endwin(); exit(0); }
转载于:https://blog.51cto.com/darksun/1281711
最后
以上就是慈祥苗条最近收集整理的关于1 curses开发包初接触的全部内容,更多相关1内容请搜索靠谱客的其他文章。
发表评论 取消回复