我是靠谱客的博主 慈祥苗条,这篇文章主要介绍1 curses开发包初接触,现在分享给大家,希望可以做个参考。

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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部