- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何开始我的第一个 curses 程序?
在开始使用 curses 的一切命令之前, 您必须先利用 initscr()这个函数来开启 curses 模式. 相对的, 在结束 curses 模式前 ( 通常在您结束程序前 ) 也必须endwin()来关闭 curses 模式.
#include curses.h
main()
{
initscr();
: :
endwin();
}
这是一般 curses 程序标准的模式.
/////////////////////////////
编译:gcc -o t t.c -lcurses
■ 概述
□ initscr()
initscr()是一般curses程序必须先呼叫的函数, 一但这个函数被呼叫之后, 系统将根据终端的形态并启动 curses 模式.
□ endwin()
curses 通常以呼叫 endwin() 来结束程序. endwin() 可用来关闭 curses 模式, 或是暂时的跳离 curses 模式.如果您在程序中须要call shell ( 如呼叫 system() 函数 ) 或是需要做 system call, 就必须先以 endwin() 暂时跳离 curses 模式. 最后再以wrefresh() doupdate() 来重返 curses 模式.
□ cbreak() nocbreak()
当 cbreak 模式被开启后, 除了 DELETE 或 CTRL 等仍被视为特殊控制字符外一切输入的字符将立刻被一一读取.当处于 nocbreak 模式时, 从键盘输入的字符将被储存在 buffer 里直到输入 RETURN 或 NEWLINE.在较旧版的 curses 须呼叫 crmode(),nocrmode() 来取代 cbreak(),nocbreak()
□ nl() nonl()
用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字符 ( 如 \n ). 而输出资料时, NEWLINE 字符是否被对应为 RETURN 和 LINDFEED 系统预设是开启的.
□ echo() noecho() 此函数用来控制从键盘输入字符时是否将字符显示在终端上.系统预设是开启的.
□ intrflush(win,bf) 呼叫 intrflush 时须传入两个值: win 为一 WINDOW 型态指标, 通常传入标准输出入屏幕 stdscr
bf 为 TRUE 或 FALSE 。当 bf 为 true 时, 当输入中断字符 ( 如 break) 时, 中断的反应将较为快速.但可能会造成屏幕的错乱.
□ keypad(win,bf) 呼叫 keypad 时须传入两个值: win 为一 WINDOW 型态指标, 通常传入标准输出入屏幕 stdscr
bf 为 TRUE 或 FALSE 当开启 keypad 后, 可以使用键盘上的一些特殊字符, 如上下左右等方向键, curses 会将这些特殊字符转换成 curses.h 内定义的一些特殊键. 这些定义的特殊键通常以 KEY_ 开头.
□ refresh() 为 curses 最常呼叫的一个函数. curses 为了使屏幕输出入达最佳化, 当您呼叫屏幕输出函数企图改
变屏幕上的画面时, curses 并不会立刻对屏幕做改变, 而是等到refresh() 呼叫后, 才将刚才所做的变动一次完成. 其馀的资料将维持不变. 以尽可能送最少的字符至屏幕上. 减少屏幕重绘的时间. 如果是 initscr() 后第一次呼叫 refresh(), curses 将做清除屏幕的工作.
■ 光标的控制:move(y,x)将光标移动至 x,y 的位置 getyx(win,y,x) 得到目前光标的位置,注意是 y,x 而不是 y,x
■ 有关清除屏幕的函数:clear() erase() 将整个屏幕清除 注意配合refresh() 使用
■ 在屏幕上显示字符 echochar(ch) ,addch(ch) 显示某个字符; mvaddch(y,x,ch) 在(x,y) 上显示某个字符相当于呼叫 move(y,x)和addch(ch); addstr(str) 显示一串字串 ;mvaddstr(y,x,str) 在(x,y) 上显示一串字串,相当于呼叫 move(y,x)和addstr(str); printw(format,str) 类似 printf() , 以一定的格式输出至屏幕mvprintw(y,x,format,str) 在(x,y) 位置上做 printw 的工
原创力文档


文档评论(0)