必威体育Betway必威体育官网
当前位置:首页 > IT技术

有关curses屏幕的输出(curses笔记二)

时间:2019-07-28 09:40:00来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

curses

有关curses屏幕的输出

  除了printw和refresh两个与屏幕输出密切相关的函数以外,还有一些基本的输出有关的函数:

函数 描述
int addch(const chtype char_to_add) 在光标位置添加字符
int addchstr(chtype *const string_to_add) 在光标位置添加字符串
int printw(char *format, …) 以和printf一样的格式化方式在光标位置添加字符串
int refresh(void) 刷新物理屏幕
int box(WINDOW *win_ptr, chtype vertical_char, chtype hprizontal_char) 围绕一个窗口绘制方框
int insch(chtype char_to_insert) 在头部插入一个字符,已有字符右移
int insertln(void) 插入一个空白行,已有行下移
int delch(void) 与insch作用相反
int deleteln(void) 与insertln作用相反
int beep(void) 蜂鸣器发声
int flash(void) 屏幕闪烁

  其中出现了WINDOW和chtype两种在curses库中定义的类型。

  对于curses程序,有一个窗口的概念,其要求是无论何时都必须有一个父窗口占据了整个终端屏幕;父窗口可以用于许多子窗口,子窗口的大小则允许小于等于终端屏幕,且窗口之间是可以重叠的(这与windows窗口的概念差不多)。其中窗口在程序中被定义为WINDOW类型,WINDOW类型有一个特例被称为stdscr结构(标准窗口,就是第一个curses窗口)。要注意的地方是,stdscr对应的是逻辑屏幕,curses还有一个结构curscr对应于物理屏幕。

  initscr函数的原型为WINDOW *initscr(void),即初始化屏幕后会返回一个指向stdscr窗口的指针,在一些curses需要使用WINDOW类型的指针做一些事情,比如box函数能在某个确定的窗口画一个框。

  至于chtype就是一个比基本字符类型char位数更多的字符类型,在linux一般就是unsigned long 。

  对于文本模式的终端屏幕,就是像ubuntu系统Ctrl+Alt+F1~F6 进入的虚拟终端,初始化后的第一个窗口就会占据整个屏幕设备;而在图形化界面中,由于伪终端 (Ubuntu一般按Ctrl+Alt+T) 本身不会占据整个屏幕设备,所以第一个curses窗口也是不会占据整个设备的,仅仅占据伪终端的整个窗口。

  总之就是占据整个虚拟终端/伪终端/终端的窗口,而不一定是整个实际的屏幕设备。

  开头表格中的函数只要自己上一遍就能明白了,这里就演示一下box函数:

#include <unistd.h>
#include <stdlib.h>
#include <curses.h>

int main(int argc, char **argv)
{
    WINDOW *screen = initscr();
    box(screen, ACS_VLINE, ACS_HLINE);
    refresh();
    sleep(12);
    endwin();
    exit(EXIT_SUCCESS);
}

关于box函数:

  第一个参数就是指定的窗口,这里只有一个父窗口所以只能指定父窗口了;vertical是竖直的意思,hprizontal是水平的意思,很明显第二各参数是竖直打印用的字符,第三个参数是水平打印用的字符 。

  在curses中还提供了打印漂亮的竖直线和水平线的定义,分别是ACS_VLINE和ACS_HLINE 。

  运行结果:

在这里插入图片描述

相关阅读

线索打分:如何自动输出高价值商机?

相较于不具备正确线索打分能力的公司,有效线索打分的公司线索合格率平均高达192%,这也就意味着市场输出的高价值线索提高了192%。68

笔记本拆机教程之清理风扇灰尘图文教程(惠普HP笔记本D

我是第三次拆自己的DV6了所以拆的感觉游刃有余 套路明确。只要大家看图慢慢来 拆开不成问题的 我会在图上进行详细的文字说明希望

记一下机器学习笔记 最小均方(LMS)算法

这里是《神经网络与机器学习》第三章的笔记… 最小均方算法,即Least-Mean-Square,LMS。其提出受到感知机的启发,用的跟感知机一样的

【C++笔记】回调函数

http://www.cnblogs.com/ioleon13/archive/2010/03/02/1676621.html https://blog.csdn.net/HouQi02/article/details/52205311

Numpy学习笔记二——初始化数组的10种方法

import numpy as np #1、创建一个长度为10的数组,数组的值都是0 np.zeros(10,dtype=int) #2、创建一个3x5的浮点型数组,数组的值

分享到:

栏目导航

推荐阅读

热门阅读