《Linux程序设计》——使用curses函数库管理基于文本的屏幕

Linux终端图形库curses curses的名字起源于"cursor optimization",即光标优化。它最早由美国伯克利大学的Bill Joy和Ken Arnold编写的,用来处理一个游戏rogue的屏幕显示。后来贝尔实验室的Mark Horton在system III Unix中重新编写了curses。现在几乎所有的Unix,Linux操作系统都带了curses函数库,curses也加入了对鼠标的支持,一些菜单和面板的处理。 阅读详情

一、curses函数库介绍

 1、用curses函数库进行编译

  1)、curses是一个函数库,所以在使用时必须在程序中包含对应的头文件、函数声明和宏定义。但对是使用curses函数库的程序进行编译时,必须在程序中包含头文件

             curses.h,并在编译命名中使用-lcurses选项来链接cueses函数库。

   2)、可以使用命令ls  -l  /usr/include/*curses.h来查看自己curses的头文件。

   3)、可用命令ls  -l  /usr/lib/lib*curses*来检查库文件。

   4)、如果发现头文件ncurses.h和curses.h都只是链接文件,而且系统中存在一个ncurses库文件则可以使用gcc  program.c  -o  program  -lcurses来编译命令。

   5)、如果curses配置并未使用ncurses库函数,则必须在程序中明确包含ncurses.h而不是curses.h来强制使用ncurses函数库,同时需要执行如下的编译命令:gcc  -I/usr

             /include/ncurses  program.c  -o  program  -lncurses。


 2、curses术语和概念

  1)、curses例程工作在屏幕、窗口、子窗口之上。屏幕就是你正在写的设备(设备通常是终端屏幕,也可能是xterm屏幕)。屏幕占据了设备上全部的可用显示面积。当然,如

            果设备是X视窗的一个终端窗口,则屏幕就是该终端窗口内所有可用的字符位置。

  2)、curses函数库用两个数据结构stdscr和curses来映射终端屏幕。

  3)、curses程序中输出字符的过程:

         I、使用curses函数刷新逻辑屏幕。

        II、要求curses用refresh函数来刷新物理屏幕。

  4)、curses函数使用的坐标都是y值(行号)在前、x值(列号)在后。每个位置不仅包含该屏幕位置处的字符u,还包含它的属性。



二、屏幕

 1、所有的curses程序必须以initscr函数开始,以endwin函数结束。

     #include<curses.h>

     WINDOW   *initscr(void);

     int  endwin(void);

     I、initscr函数在一个程序中只能调用一次。如果成功,将返回一个指向stdscr结构的指针,如果失败,就输出一条诊断错误信息并使程序退出。   

    II、endwin函数在成功时返回ok,失败时返回ERR。可以先调用函数退出curses,然后通过调用clearok(stdscr,1)和refresh函数继续curses操作。


 2、输出到屏幕

     #include<curses.h>

     int  addch(const  chtype  char_to_add);

     int  addchstr(chtype  *const  string_to_add);

     int  printw(char  *format,. . .);

     int  refresh(void);

     int  box(WINDOW  *win_ptr,  chatype  vertical_char,  chatype  horizontal_char);

     int  insch(chtype  char_to_insert);

     int  insertln(void); 

     int  delch(void);

     int  deleteln(void);

     int  beep(void);

     int  flash(void);  

     I、curses有自己的字符类型chtype,他可能比标准的char类型包含更多的二进制位。在ncurses的标准Linux版本中,chatype实际是unsigned  long类型的一个类型定义。

     II、add系列函数在光标的当前位置添加指定的字符或字符串。

     III、printw函数采用与printf函数相同的方法对字符串进行格式化,然后将其添加到光标的当前位置。

     IV、refresh函数的作用是刷新屋里屏幕,成功时返回OK,发生错误时返回ERR。

     V、box函数用来围绕一个窗口绘制方框。

     VI、insch函数插入一个字符,将已有字符向右移,但此操作对行尾的影响并未定义,具体取决于你所使用的终端。

     VII、insertln函数的作用是插入一个空白行,将现有行依次向下移一行。

     VIII、两个delete函数的作用上述两个insert函数正好相反。

     IX、beep函数可以让程序发出声音。

     X、flash函数的作用是使屏幕闪烁,但如果无法产生闪烁效果,它将会尝试在终端上发出声音。


 3、从屏幕读取

    #include<curses.h>

    chtype  inch(void);

    int  instr(char  *string);

    int  innstr(char  *string,  int  number_of_characters);

    I、以上函数可以从屏幕上读取字符。

    II、inch函数返回光标当前位置的字符以其属性字符信息。注意inch函数返回的并不是一个字符,而是一个chtype类型的变量。

    III、instr和innstr函数则将返回内容写到字符数组中。


 4、清除屏幕

     #include<curses.h>

     int  erase(void);

     int  clear(void);

     int  clrtobot(void);

     int  clrtoeol(void);

     I、erase函数在每个屏幕位置写上空白字符。

     II、clear函数的功能类似erase函数,它也是用于清屏,但其还通过在内部调用一个底层函数clearok来强制重现屏幕原文,clearok函数会强制执行清屏操作,并在下一次调

           用refresh函数时重现原文。

     III、clrtobot函数清楚当前光标位置直到屏幕结尾的所有内容。

     IV、clrtoeol函数清楚当前光标位置直到光标所处行行尾的所有内容。


 5、移动光标

     #include<curses.h>

     int  move(int  new_y,  int  new_x);

     int  leaveok(WINDOW  *window_ptr,  bool  leave_flag);

     I、move函数用来将逻辑光标的位置移到指定的地点。

     II、leaveok函数设置了一个标识,该标志用于控制在屏幕刷新后curses将物理光标放置的位置。


 6、字符属性

    #include<curses.h>

    int  attron(chtype  attribute);

    int  attroff(chtype  attribute);

    int  attrset(chtype  attribute);

    int  standout(void);

    int  standend(void);

    I、attrset函数设置curses属性。

    II、attron和attroff函数在不影响其他属性的前提下启用或关闭指定的属性。

    III、standout和standend函数提供了一种更加通用的强调或“突出”模式。在大多数终端上,它通常被映射为反白显示。

    IV、属性:A-NORMAL(标准的显示模式),A_BLINK(闪烁),A_BOLD(加粗),A_DIM(半透明),A_REVERSE(反显),A_STANDOUT(高

            亮),A_UNDERLINE(下划线)。



三、键盘

 1、键盘模式

     #include<curses.h>

     int  echo(void);

     int  noecho(void);

     int  cbreak(void);

     int  nobreak(void);

     int  raw(void);

     int  noraw(void);

     I、两个echo函数用于开启或关闭输入字符的回显功能

     II、可以通过调用cbreak函数来启动或关闭cbreak模式。在这种情况下,字符一经输入就立即传送给程序,而不像cooked模式那样首先缓存字符,直到用户按下回车键后才

           将用户输入的字符传递给程序。

     III、raw函数调用的作用是关闭特殊字符的处理,所有执行该函数调用后,再想通过输入特殊字符序列来产生信号或进行流程就不可能了。noraw函数调用同时恢复cooked模 

            式和特殊字符处理功能。


 2、键盘输入

    #include<curses.h>

    int  getch(void);

    int  getstr(char  *string);

    int  getnstr(char  *string, int  number_of_characters);

    int  scanw(char  *format, . . .);



四、窗口

 1、WINDOW结构

  1)、窗口的创建和销毁

         #include<curses.h>

         WINDOW  *newwin(int  num_of_lines,  int  num_of_cols,  int  start_y,  int  start_x);

         int  delwin(WINDOW  *window_to_delete);

        I、newwin函数的作用是创建一个新窗口,该窗口从屏幕位置(start_y,  start_x)开始,行数和列数分别由参数num_of_lines,和int  num_of_cols指定。它返回一个指向新

             窗口的指针,如果创建失败则返回null。

        II、delwin函数的作用是删除一个先前通过newwin函数创建的窗口。


 2、通用函数

     #include<curses.h>

     int  addch(const  chtype  char);

     int  waddch(WINDOW  *window_pointer,  const  chtype  char);

     int  mvaddch(int  y, int  x,const  chtype  char);

     int  mvwaddch(WINDOW  *window_pointer, int  y, int  x, const  chtype  char);

     int  printw(char  *format, . . .);

     int  wprintw(WINDOW  *window_pointer,  char  *format, . . .);

     int  mvprintw(int  x, int  y, cha  *format,. . .);

     int  mvwprintw(WINDOW  *window_pointer, int  y,int  x,char  *format);

     I、如果给函数增加了w,则必须在该函数的参数列表最前面增加一个WINDOW指针参数。

     II、如果给函数增加mv,则必须该函数的参数列表最前面增加两个参数,分别是纵坐标y和横坐标x。

     III、如果给函数增加mvw,则必须该函数的参数列表最前面增加三个参数,分别是WINDOW指针、纵坐标y和横坐标x。


 3、移动和创建窗口

    #include<curses.h>

    int  mvwin(WINDOW  *window_to_move,  int  new_y, int  new_x);

    int  wrefresh(WINDOW  *window_ptr);

    int  wclear(WINDOW  *window_ptr);

    int  werase(WINDOW  *window_ptr);

    int  touchwin(WINDOW  *window_ptr);

    int  scrollok(WINDOW  *window_ptr, bool  scroll_flag);

    int  scroll(WINDOW  *window_ptr);

    I、mvwin函数的作用是在屏幕上移动一个窗口。

    II、touchwin函数非常特殊,它的作用是通知curses函数库及其指针参数指向的窗口内容已发生改变。

    III、两个scroll函数控制窗口的卷屏。如果传递给scrollok函数的是布尔值true则允许窗口卷屏。

   

 4、优化屏幕刷新

    #include<curses.h>

    int  wnoutrefresh(WINOW  *window_ptr);

    int  doupdate(void);

    I、wnoutrefresh函数用于决定把那些字符发送到屏幕上,但它并不真正的发送这些字符,真正将更新发送到终端的工作由doupdate函数来完成。


 5、子窗口的创建和删除

    #include<curses.h>

    WINDOW  *subwin(WINDOW  *parent,  int  num_of_lines,  int  num_of_cols,  int  start_y,  int  start_x);

    int  dewin(WINDOW  *window_to_delete);

    I、子窗口与新窗口的区别:子窗口没有独立的屏幕字符存储空间,它们与其父窗口(在创建子窗口时指定)共享同一字符存储空间。

    II、子窗口最主要的用途是提供了一种能够简洁额方式来卷动另一窗口的部分内容。



六、keypad模式

 1、curses函数库提供了一个精巧的用于管理功能键的功能。对每个终端来说,他们每个功能键所对应的转义序列都被保存,通常是保存在一个terminfo结构中,而头文件

       curses.h通过一组KEY_为前缀的定义来管理逻辑键。


 2、curses在启动时会关闭转义序列与逻辑键之间的转换功能,该功能需要调用keypad函数来启用。该函数调用成功时,返回OK,否则就返回ERR。

     #include<curses.h>

     int  keypad(WINDOW  *window_ptr,  bool  key_on);

     I、将keypad参数设置为true,然后调用keypad函数来启用keypad模式。在该模式中,curses将接管按键转义序列的处理工作,都键盘操作不仅仅能够返回用户按下的键,  

         还将返回与逻辑按键对应的KEY_定义。

     II、keypad模式的限制

       A、识别escape转义序列的过程是与时间有关。

       B、为了让cursees能够区分“单独按下Escape键”和“一个以Escape字符开头的键盘转义序列”,必须等待一小段时间。

       C、curses不能处理二义性的Escape转义序列。



七、彩色显示

  1、颜色组合:必须同时定义一个字符的前景色和背景色。

 

  2、在使用curses函数库的颜色功能之前,必须检查当前终端是否支持彩色显示功能,然后对curses的颜色列成进行初始化。

      #include<curses.h>

      bool  has_colors(void);

      int  start_color(void);

      I、如果终端支持颜色显示,has_colors函数将返回true,之后,需要调用start_color函数,如果该函数成功初始化了颜色的显示功能,将返回ok。

      II、一旦以上函数被成功调用,COLOR_PAIRS将被设置为终端所能支持的颜色组合数目最大值,一般为64。变量COLORS定义可用颜色数目的最大值,一般只有8种。

     

 3、再把颜色作为属性使用之前,必须首先调用init_pair函数对准备使用的颜色组合进行初始化。对颜色属性的访问是通过COLOR_PAIR函数完成的。

    include<curses.h>

    int  init_pair(short  pair_number,   short  foreground,  short  background);

    int  COLOR_PAIR(int  pair_number);

    int  pair_content(short  pair_number,   short  *foreground,  short  *background);


 4、重新定义颜色

    #include<curses.h>

    int  init_color(short  color_number,  short  red,  short  green,   shoer  blue);

    I、这个函数将一个已有的颜色以新的亮度值重新定义,亮度值的范围从0到1000。

 


八、pad

 1、curses提供了数据结构来解决“控制尺寸大于正常窗口的的逻辑屏幕”这一问题。


  2、pad的创建

     #include<curses.h>

     WINDOW  *newpa(int  number_of_lines,  int  number_of_columns);

     I、此函数的返回值是一个指向WINDOW结构的指针。


 3、pad的刷新

    #include<curses.h>

    int  prefresh(WINDOW  *pad_ptr,  int pad_row,  int  pad_column,  int  screen_row_min,  int  screen_col_min,  int  sreen_row_max,  int  screen_col_max);

    I、此函数的作用是将pad从坐标(pad_row,pad_column)开始的区域写到屏幕上指定的显示区域,该显示区域的范围从坐标(screen_row_min,screen_col_min)到

       (sreen_row_max,screen_col_max)。

    II、curses还提供了pnoutrefresh,它与wnoutrefresh一样,都是为了更有效的更新屏幕。

Python curses 库快速入门 Python curses库是一个内置终端界面开发工具,支持窗口控制、键盘输入和颜色管理。本文介绍了环境准备(Linux/macOS直接使用,Windows需安装兼容包)、核心概念(屏幕对象、坐标系统、刷新机制)以及基础框架(初始化-操作-等待输入-清理)。重点讲解了文本显示、颜色管理、子窗口创建和键盘输入处理等核心功能,并提供了简易终端菜单的实战案例。关键注意事项包括必须刷新屏幕、坐标边界检查以及推荐使用wrapper()自动管理环境。该库适合开发交互式终端应用,如文本编辑器或命令行工具。 阅读详情

相关推荐

【Latex】【附安装文件】Miktex和TexStudio的安装与配置

这代表“构建并运行”,一般来说,我们只需要点这个按钮来运行Latex代码。保存一下代码文件,再运行一次,PDF文件会出现在与代码文件相同的文件夹下。安装完成后,你可能会跳转到一个页面中,你看到这个页面就意味着安装成功了。其实不需要你敲,你只要将下面的代码复制粘贴到你刚刚的文件中即可。成功安装MikTex后,我们需要进行更新,减少后续使用的麻烦。如果懂得将安装路径设置在你想要的盘中,你可以自己设置。双击上文的.exe文件后,你会看到如下画面。如果不懂,为避免不必要的麻烦,请直接点击“

未来就在脚下。 1万+

linux中curses

<br />相信您在网路上一定用过如 tin,elm 等工具, 这些软体有项共同的特色, 即他们能利用上下左右等方向键来控制游标的位置. 除此之外, 这些程式的画面也较为美观. 对Programming 有兴趣的朋友一定对此感到好奇, 也许他能在 PC上用Turbo C轻易地写出类似的程式, 然而, 但当他将相同的程式一字不变地移到工作站上来编译时, 却出现一堆抓也抓不完的错误. 其实, 原因很简单, 他使用的函式库可能在 UNIX 上是没有定义的. 有些在 Turbo-C 上被广泛使用的一些函式,

shi_869160的专栏 3041

Oracle到金仓数据库信创改造迁移实施规划方案

**性能测试和优化**:对金仓数据库的性能进行测试,根据业务负载情况进行必要的调优,确保系统能够稳定高效运行。- **数据兼容性**:评估Oracle数据库中的数据结构和金仓数据库的兼容性,明确需要重构的数据模型。- **性能测试**:通过对金仓数据库的性能测试,预估在实际业务环境下的表现,是否能达到业务需求。- **工具选择**:选择适合的迁移工具,如金仓数据库提供的迁移工具,能够提升迁移效率和准确性。- **全面迁移**:在初步迁移成功后,进行全面数据迁移,确保所有数据完整迁移到金仓数据库上。

hdrhdrjdididrr的博客 480

Linux curses库(ubuntu)

ubunut11.10 安装curses库: sudo apt-get install libncursesw sudo apt-get install libncursesw-dev 以下文章出处: http://blog.youkuaiyun.com/dai_weitao/article/details/1708712 相信您在网路上一定用过如 tin

梦想照旧实现 7793

别再为调试发愁!STM32CubeMX+FreeRTOS下,串口printf打印的保姆级配置指南(基于STM32F429)

本文详细介绍了在STM32CubeMX和FreeRTOS环境下实现稳定串口printf打印的配置方法。通过硬件选型、基础配置、线程安全的重定向实现以及高级调试技巧,帮助开发者解决多任务环境下的串口输出问题,提升调试效率。特别适用于STM32F429开发板用户。

weixin_42527401的博客 273

ENSP内使用wireshark进行抓包,并且解析icmp报文

前四位:54 89 98 e8 20 38 为ip报文包的mac地址也就是物理地址。一开始进行抓包是没有icmp报文的,需要我们在ensp中使用pc1请求联通pc9。协议编号后分别为:ip版本、ip首部报文长度、服务类型、ip报文总长度。最后为校验和 、源ip地址、目的ip、从08 00开始为真正的数据。我们需要实验的端口为:0/0/4,也就是抓包第三个交换机内的报文。其中显示的icmp报文就是我们需要解析的ip报文。源mac地址后跟着的就是协议编号: 08 00。根据ip报文包的结构我们进行解析。

2301_81713278的博客 2139

curses库使用

文章目录curses术语和概念屏幕键盘窗口通用函数移动和更新窗口优化屏幕刷新子窗口keypad模式彩色显示pad curses术语和概念   stdscr是指curses窗口,它与显示器的物理屏幕的尺寸完全一样。curses函数库用两个数据结构来映射终端屏幕,即stdscr和curscr。 stdscr:对应的是标准屏幕,它的工作方式与stdout相似,是curses程序中的默认输出窗口。 curscr:对应的是当前屏幕,在程序调用refresh函数之前,输出到stdscr上的内容不会显示在屏幕上。cur

健身房 2818

Power Automate Desktop实战:一键自动登录Chrome网站

本文详细介绍了如何使用Power Automate Desktop实现Chrome网站的一键自动登录,提升工作效率。从环境准备、基础配置到高级技巧与异常处理,全面解析自动化登录流程的构建与优化,特别适合需要频繁登录多个系统的用户。

weixin_29231725的博客 467

curses.h学习笔记

---------------------------------------------------------------------- curses定义的全局变量     WINDOW *stdscr;        // 默认的标准窗口     WINDOW *cu

漂流~~~~ 3699

单细胞实战之数据净化三部曲:细胞周期校正、双胞体剔除与RNA污染清理——技术解析与实战指南

本文深入解析单细胞数据分析中至关重要的数据净化步骤,即细胞周期校正、双胞体剔除与RNA污染清理。通过实战代码演示与原理剖析,指导读者如何有效识别并去除技术噪音,从而获得更纯净、可靠的数据,为后续的细胞分群、差异表达等高级分析奠定坚实基础。

weixin_29274337的博客 205

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

粒子群算法(PSO)的基本思想是模拟鸟群觅食机制,将鸟类的觅食方向分为自我认知部分和社会部分,个体自主探索群体周围空间的同时,也随着群体的主流方向前进,不断逼近最优目标。本文详解PSO算法基本概念,并给出ROS C++实现加深理解

FRIGIDWINTER的博客 2617

LINUX程序设计 使用curses函数库管理基于文本的屏幕 学习笔记

1、curses函数库 在终端输入 gcc hello.c -o hello -I/usr/include -L/usr/lib -lncurses 编译成功!   有可能linux 本身不包含curses函数库 2、清除屏幕 erase、clear、clrtobot、clrtoeol 移动光标:move 、leaveok 3、标准屏幕:stdscr

JedWong 640

AI编程工具到底是初学者的绊脚石还是垫脚石?

现在是AI时代,我们要做的,是学会拥抱AI、使用AI,成为AI的驾驭者,如果你因为害怕使用AI学不到东西,那么大可不必,因为AI必然是今后的趋势,相信会用AI在今后的求职面试中也会有很大的占比。另外我之前写了多篇有关AI编程开发工具Trae的使用技巧和教程,需要的话你可以关注公众号后通过菜单栏获取。另外我也把所有Trae相关的文章整合到了腾讯ima知识库,感兴趣的可以关注公众号以后回复。

cpp加油站的专栏 185

curses函数库简介及使用

curses函数库主要用来实现对屏幕和光标的操作,它的功能定位处于简单文本行程序和完全图形化界面之间,在目前图形化界面已经蓬勃发展的现在可能显得有些过时,但是其中很多实现思想和操作仍然值得学习和借鉴,并且curses目前仍然是linux图形化编程的选择之一

C_eeking的博客 2442

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Linux下curses函数库的详细介绍

Linux下curses函数库的详细介绍curses库介绍安装curses库函数介绍初始化和重置函数管理屏幕的函数输出到屏幕从屏幕读取清除屏幕移动光标字符属性管理键盘的函数键盘模式键盘输入管理窗口的函数窗口通用窗口函数窗口移动和更新屏幕窗口优化屏幕刷新子窗口窗口转储keypad模式彩色显示获取位置获取光标位置 curses库介绍   curses是一个在Linux/Unix下广泛应用的图形函数库,...

weixin_43855330的博客 6225

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Linux下curses函数库

1.安装   ubuntu11.10下默认没有安装curses函数库,(CentOS下默认已经安装,可以直接在usr/include下查看是否有该头文件来确定)使用   >sudo apt-get install ncurses-dev   安装curses库,这样在curses函数库的头文件和库文件就被分别安装在/usr/include/和/usr/lib/下,在编译程序时,直接使...

weixin_30242907的博客 981

使用curses管理基于文本的屏幕

出自linux程序设计 初始化与结束 正如我们所看到的,所有的curses必须与initscr开始,并且以endwin结束。下面是他们头文件的定义: #include WINDOW *initscr(void); int endwin(void);

932

《Linux程序设计》学习笔记06——curses函数库

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* S

2163

Linux笔记六(curses函数库)

使用curses函数库管理基于文本的屏幕 curses函数库用两个数据结构来映射终端屏幕,它们是 stdscr 和 curscr。 屏幕 #include <curses.h> WINDOW *initscr(void); int endwin(void); initscr函数在一个程序中 只能调用一次。如果成功它返回一个指向stdscr结构的指针,失败就输出一条诊断钷信息并使程序退...

qq_43537412的博客 395

Linux - curses函数库

curses库基本概念控制字符输入/输出的格式 termios缺点,转义处理 curses优点 提供与终端无关的字符处理方式 可以管理键盘 支持多窗体管理curses vs. ncurses 源文件包含头文件curses.h 编译时加 –lcurses选项 gcc program.c −o program −lcurses gcc −I/usr/include/ncurses progra

陆讯 2841

linux下curses的用法

转载: https://www.cnblogs.com/dandingyy/archive/2012/08/23/2651644.html 1、术语概念 curses工作在屏幕,窗口和子窗口之上。屏幕是设备全部可用显示面积(对终端是该窗口内所有可用字符位置),窗口与具体例程有关。如基本的stdscr窗口等。 curses使用两个数据结构映射终端屏幕,stdscr和curscr。stdscr...

qq_30534935的博客 959

linux程序设计,屏幕管理学习与新的Debug经验。。

这一周很快又过去了,不够这周的速度实在是太慢了,一周进度一百页,我得赶紧加快进度了。 首先说说第六章使用curses函数库管理基于文本的屏幕。这一章主要的内容都是curses函数库了,基于这个函数库,已经可以完全的控制屏幕,在屏幕上加窗口,显示,说来我之前写C的时候还只会用printf输出空格键和换行来手动计算应该输出的位置,总算有了一个工具。 curses函数都挺人性化,命名也容易记

yw8355507的专栏 561

使用 curses 函数库管理基于文本的屏幕

curses 函数库提供了终端无关的方式来编写全屏幕的基于字符的程序。curses 还可以管理键盘,提供了一种简单易用的非阻塞字符输入模式。 curses 函数库能够优化光标的移动并最小化需要对屏幕进行的刷新,从而也减少了必须向字符终端发送的字符数目。 curses 函数库有多种不同的实现版本。Linux 使用的是 ncurses(new curses),可以使用 sudo apt-get i...

weixin_30517001的博客 130

Linux下图形函数库---curses.h

1.安装   ubuntu11.10下默认没有安装curses函数库,(CentOS下默认已经安装,可以直接在usr/include下查看是否有该头文件来确定)使用   >sudo apt-get install ncurses-dev    安装curses库,这样在curses函数库的头文件和库文件就被分别安装在/usr/include/和/usr/lib/下,在编译程序时,

9158

Beginning Linux Programming 笔记(六)使用curses管理基于文本的终端

<br />上一章我们从底层去学习终端的控制,这一章我们将继续讲讲终端,但是我们会从更高的角度来谈。对于一个程序,我们是希望能够比较友好的界面给用户使用,这一章讲的就是如何使用curses去管理我们的屏幕。<br />虽说现在的UI做得都很炫,对比起来,终端使用的界面是很不友善的,而且没有什么学习价值。但是我觉得终端下面的窗口控制思想跟那些图像界面下的UI控制思想是接近的。通过这章的学习,你能够从底层理解你现在使用的友善的窗口是如何发展过来的。<br />说概念感觉是比较抽象,具体问说使用curses能做什

tigernorth的专栏 1041
上一篇: 《Linux程序设计》——终端
下一篇: 《Linux程序设计》——数据管理
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值