ncurses库是一个Linux系统下的图形支持的函数库,使用方法可以阅读官方的手册,这里列出了里面许多有用的函数。
“ncurses.h” 包含 “stdio.h”
使用手册
$ sudo apt install libncurses5-dev
编译时添加链接:
编译命令
g++ a.cpp -o a -l ncurses
这两个函数用来关闭行缓冲,即读入后不会等待回车(好像也不会回显字符)。raw()模式读入字符不带信号,cbreak()会带信号,所以raw()可以读入’CTRL-C’,‘CTRL-Z’
回显与不回显
允许读入方向键和’F1’,‘F2’,等符号
使用
keypad(stdscr,TRUE);
ch=getch();
if(ch==KEY_F(1))
printw("F1 key pressed");
halfdelay()函数开启halfdelay模式,即在等待一段时间(你设定的)后还未读入到字符的话就执行别的语句
单个窗口输出,类似printf(),输出重定向到stdscr
printw("Hi There!");
refresh();
刷新窗口到屏幕
多窗口输出
wprintw(win,"Hi There!!!");
wrefresh(win);
第一个参数是窗口,第二个是字符串
移动到(y,x)然后打印string
移动到win窗口的(y,x然后打印)
addch():打印单个字符(带属性)
addstr():打印字符串
立即打印到光标当前位置
形如addch(ch | A_BOLD | A_UNDERLINE);
来设置属性
或用attrset(),attron(),attroff().
mvaddch(row,col,ch)
mvaddch()移动光标到row行col列然后输出字符
相当于
move(row,col);
addch(ch);
其他类似
getmaxyx(stdscr,row,col);等到行数和列数
int row,col;
getmaxyx(stdscr,row,col);
getmaxyx()是一个宏
getch() 得到一个字符
scanw() 得到一个格式后的输入,类似scanf
getstr(string) 得到字符串
这些函数若没有使用raw()或cbreak()将会等待回车
attron(ATTR);开启属性
attroff(ATTR);关闭属性
A_NORMAL 正常显示(无高亮)
A_STANDOUT 终端最好的高亮模式
A_UNDERLINE 下划线
A_REVERSE 反色(背景白了)
A_BLINK 一闪一闪的
A_DIM 半亮,没原来那么亮了
A_BOLD 加粗
A_PROTECT 保护模式
A_INVIS 看不见或闪的模式
A_ALTCHARSET 备选字符集
A_CHARTEXT 位掩码
COLOR_PAIR(n) 第n颜色对
所有的属性可以通过或运算一起使用
attrset 和 attron的区别为attrset设置属性而attron开关它,所有attrset会完全覆盖原来的属性
可以用 standend()来设置回普通模式即attrset(A_NORMAL)
attr_get()得到当前窗口的属性和颜色对
以上函数都可以在前面加’w’来设置窗口属性
不移动光标地设置一群字符的属性
-1设置为到最后一行
chgat(-1,ATTR,0,NULL);
从当前行到最后一行设置为某个属性
newwin() 函数分配窗口并且更新数据显示的结构,返回一个’WINDOW’结构体的指针
delwin() 销毁一个窗口,释放分配的内存
box()给窗口画一个边框
mousemask(mmask_t newmask , /* The events you want to listen to */
mmask *oldmmask) /* The old events mask */
Name Description
---------------------------------------------------------------------
BUTTON1_PRESSED mouse button 1 down
BUTTON1_RELEASED mouse button 1 up
BUTTON1_CLICKED mouse button 1 clicked
BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked
BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked
BUTTON2_PRESSED mouse button 2 down
BUTTON2_RELEASED mouse button 2 up
BUTTON2_CLICKED mouse button 2 clicked
BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked
BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked
BUTTON3_PRESSED mouse button 3 down
BUTTON3_RELEASED mouse button 3 up
BUTTON3_CLICKED mouse button 3 clicked
BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked
BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked
BUTTON4_PRESSED mouse button 4 down
BUTTON4_RELEASED mouse button 4 up
BUTTON4_CLICKED mouse button 4 clicked
BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked
BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked
BUTTON_SHIFT shift was down during button state change
BUTTON_CTRL control was down during button state change
BUTTON_ALT alt was down during button state change
ALL_MOUSE_EVENTS report all button state changes
REPORT_MOUSE_POSITION report mouse movement
KEY_MOUSE 为读入后的数值
getmouse()返回发生的鼠标事件
typedef struct
{
short id; /* ID to distinguish multiple devices */
int x, y, z; /* event coordinates */
mmask_t bstate; /* button state bits */
}
getmouse(&event)