Chinaunix首页 | 论坛 | 博客
  • 博客访问: 639330
  • 博文数量: 51
  • 博客积分: 773
  • 博客等级: 军士长
  • 技术积分: 2392
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-07 21:32
文章分类
文章存档

2018年(1)

2013年(16)

2012年(34)

分类: LINUX

2012-05-15 20:07:06

在Curses编程中通过调用initscr()函数进入Curses模式,但针对不同的显示模式需要调用相应的API函数来进行设置:


一、控制类:

1.cbreak():用户输入会被放入终端程序的输入缓冲区中,直到输入回车键才将缓冲区中的内容传送给程序,也就是行缓冲模式,调用cbreak()后,会禁用行缓冲模式,用户的输入会被直接传送给程序而不用等待回车键。调用nocbreak()函数恢复行缓冲模式;

2.raw():通常如方向键、CRTL+Z等控制键会被终端程序处理,当调用raw()后,这些功能键会被终端程序传送给程序进行处理;

3.noecho():默认情况下,用户的输入会被回显在界面上,这样当你输入功能键则会在界面显示一些奇怪的字符,通过调用noecho()函数禁用回显,由程序控制页面字符的显示情况。echo()恢复回显模式;

4.keypad():这个函数启用功能键,如F1、F2和方向键等,keypad(stdscr, TRUE)启用标准显示设备stdscr上使用功能键,FALSE则关闭。stdscr是需要控制的窗口,也可以是你自己新建的WINDOW*类型的窗口;

5.halfdelay():启用半延时模式(half-delay mode),和cbreak()函数一样,用户的输入会被立即显示在屏幕上,当会等待一段时间(以0.1秒为单位),超时没有输入则返回ERR,传递的参数是一个整型参数,以0.1秒为单位。一般用于输入密码的等待超时响应;


二、输出类

1.printw(char *string):在stdscr的当前光标位置输出字符串string

2.mvprintw(int y, int x, char *string):移到坐标(y,x)处输出字符串string

3.wprintw(WINDOW* win, char *string):在窗口win的当前光标位置输出字符串string

4.mvwprintw(WINDOW* win, int y, int x, char *string):在窗口win的坐标(y,x)处输出字符串string

5.addch():输出单个字符,并且可以在输出的同时设置字符的显示属性,如addch(ch | A_BOLD | A_UNDERLINE)将输出字符ch加粗并加下划线效果输出。这些效果也可以通过attrset()、attron()和attroff()这些函数来设置。还有mvaddch()、waddch()、mvwaddch()与printw衍生函数类似

6.addstr():和addch()函数类似,只是输出的是字符串而不是单个字符,其衍生函数也和addch()函数一致,不再累赘。


三、输入类

1.getch():输入一个字符,若没有调用cbreak()则需要等待回车键才读取输入字符

2.scanw():和scanf函数类似,能够在屏幕任意位置输入字符。也有衍生函数wscanw()、mvscanw()和mvwscanw()函数。

3.getstr(str):输入一个字符串


四、输出修饰
1. attron()、attroff()、attrset():修饰输出的文字的效果,attron和attroff是搭配使用的,在输出文字前调用attron开启某种修饰效果,在输出文字后调用attroff关闭开启的修饰效果。文字修饰效果:
    A_NORMAL        普通字符输出
    A_STANDOUT     终端字符最亮
    A_UNDERLINE    下划线
    A_REVERSE         字符反白显示
    A_BLINK             闪动显示
    A_DIM                半亮显示
    A_BLOD             加亮加粗
    A_PROTECT       保护模式
    A_INVIS              空白显示模式
    attron可以对这些效果进行组合,如attron(A_REVERSE | A_BLINK)
    attron和attrset的区别是,attron只从被调用的地方开始生效,而attrset为整个窗口设置效果,并且会覆盖先前为整个窗口设置的任何修饰效果。
    standend()函数关闭所有设置的修饰,这个函数的作用和attrset(A_NORMAL)函数是相同的。

2.chgar()函数在不移动光标的情况下修饰已输出的字符的修饰效果,如chgat(-1, A_BLOD, 0, NULL)表示将光标的当前行的字符加粗,不设置颜色。其中-1表示修饰字符的个数,-1表示整行;A_BLOD是修饰效果,可以用 | 进行组合;0表示init_pair()设置的颜色,0则是不设置颜色,最后一个参数总为NULL。其衍生函数mvchgat()、wchgat()、mvwchgat()同上,只是还需要一些位置和窗口信息



阅读(2248) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~