



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.curses程序的编译 In order to use the library, it is necessary to have certain types and variables defined. Therefore, theprogrammer must have a line: #include at the top of the program source. Compilations should have the following form: cc flags file . - -lcurses - -ltermcap2.curses的初始化与终结l 初始化与终结 语法: initscr( ); : endwin( );l 初始化后对终端特性的设置 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_ 开头. curses.h 为一些特殊键的定义如下: (更详细的详见头文件) KEY_UP 0403 KEY_DOWN 0402 KEY_LEFT 0404 KEY_RIGHT 0405 KEY_HOME 0406 Home key (upward+left arrow) KEY_BACKSPACE 0407 backspace (unreliable) KEY_F0 0410 Function keys. KEY_F(n) (KEY_F0+(n) Formula for f . KEY_NPAGE 0522 Next page KEY_PPAGE 0523 Previous page idlok( ) 使用键盘的insert和delete键删除和插入行 idcok( ) 使用键盘的insert和delete键删除和插入字符 信号中断 在initscr( )函数初始化后,对信号中断并没有屏蔽,所以对信号中断的处理尚需自己进行,以避免误操作按了CTRL_Delete键后中断程序. example void initial() initscr(); cbreak(); nonl(); noecho(); intrflush(stdscr,FALSE); keypad(stdscr,TRUE); refresh(); signal ( SIGINT, SIG_IGN ); 3.在curses中给用户提供的全局变量如下 typenamedescriptionWINDOW*curscrcurrent version of the screen (terminal screen).WINDOW*stdscrstandard screen. Most updates are usually done here.char *Def_termdefault terminal type if type cannot be determinedboolMy_termuse the terminal specification in Def - term as terminal, irrele-vant of real terminal typechar *ttytypefull name of the current LINESnumber of lines on the terminalintCOLSnumber of columns on the terminalintERRerror flag returned by routines on a OKflag returned by routines upon success.4.curses提供的库函数l 改变萤幕显示字元的属性 attron( )attroff( ) 打开(或关闭)字体的显示属性, 当使用 attron() 开启某一种特殊属性模式後, 接下来在萤幕的输出都会以该种属性出现. 直到您呼叫 attroff() 将此模式关闭. 请注意, 当您欲 attron() 开启另一种属性时, 请记得利用 attroff()先关闭原来的属性, 或直接以 attrset(A_NORMAL) 将所有特殊属性关闭.否则,curses 会将两种属性做重叠处理.常见属性如下 (其他属性详见帮助信息) A_UNDERLINE 加底线 A_REVERSE 反白 A_BLINK 闪烁 A_BOLD 高亮度 A_NORMAL 标准模式 (只能配合 attrset() 使用) attrset( ) 设置指定的属性,可用|语句来设置属性的组合,其中可设置为A_NORMAL恢复标准设置 standend( ) 关闭所有的属性设置,形同attrset( 0 ); standout( )打开高亮度属性,形同 attron(A_STANDOUT) l 窗口(WINDOW)操作 newwin( ) 用指定行和列生成一个新的窗口,当参数为0时, 采用缺省的行LINES和列COLS delwin( ) 删除newwin( )生成的窗口,对于每一个用newwin( )生成的窗口在退出curses时都必须删除 mvwin( ) 移动一个窗口的位置,使窗口的左上角在指定的位置 subwin( ) 在指定的窗口中生成一个新的子窗口,该窗口和原窗口共享内存,且该窗口只能在原窗口的范围空间 活动, 窗口的左上角指定的位置也是相对于原窗口来说的.因为新窗口跟原窗口共享内存,所以当新窗口 的内容发生变化时,在wrefresh( )原窗口前,必须调用touchwin( )来刷新原窗口. mvderwin( ) 在父窗口中移动子窗口. dupwin( ) 创建一个已经存在的窗口的副本l 刷新窗口 refresh( ) 把stdscr中的数据 显示在终端上,刷新终端显示屏 wrefresh( ) 把指定的窗口(WINDOW*)的信息显示在终端上, 刷新终端显示屏 touchwin( ) 父子窗口都有自己的WINDOW结构,其中通过结构中的WINDOW指针相关连起来(单链表结构).父窗口的WINDOW结构是与子窗口共享的,当子窗口改变时需要把改变的信息写到父窗口相应的位置上去,此时就必须调用touchwin( )函数子窗口中改变的信息写到父窗口的WINDOW结构中去.而子窗口 的数据却是独自使用,所以不存在此问题.touchwin( )把与父窗口相关连的子窗口中的信息刷新到父窗口 的WINDOW结构中去,实际上仅在WINDOW结构的某一变量置一个需要刷新的标志 touchline 把与父窗口相关连的子窗口中指定起始行及行数的信息刷新到父窗口的WINDOW结构中去 untouchwin 把父窗口中的刷新标志恢复为不需要刷新 wtouchln 强制把指定窗口的指定行及行数置为需要刷新标志 is_linetouched( ) 指定的行自上一次wrefresh( )以来被改动过,返回TRUE,否则返回FALSE is_wintouched( ) 指定的窗口自上一次wrefresh( )以来被改动过,返回TRUE,否则返回FALSEl 显示字符 addch( ) 在stdscr的当前光标位置显示一个字符 mvaddch( ) 移动到stdscr的指定位置显示一个字符 echochar( ) 在stdscr的当前光标位置显示一个字符,并refresh( )当前屏幕 addstr( ) 在stdscr的当前光标位置显示字符串 addnstr( ) 在stdscr的当前光标位置显示n个字符 mvaddstr( ) 移动到stdscr的指定位置显示字符串 mvaddnstr( ) 移动到stdscr的指定位置显示n个字符 printw( ) 类似printf在stdscr上的当前位置显示数据 insertln( ) 在当前光标位置上插入一行空行 insch( ) 在当前光标位置上插入一个字符 l 读数据 getch() 从键盘读取一个字元 (注意! 传回的是整数值) getstr() 从键盘读取一串字元 scanw( ) 类似scanf读取数据 inch( ) 从当前位置读一个字符和其属性l 光标控制及清除萤幕 move( ) 移动光标到指定位置 getyx( ) 得到当前光标位置 getparyx( ) 得到窗口左上角相对于父窗口的位置 getbegyx( ) 得到窗口左上角相对于屏幕坐标的位置 getmaxyx( ) 得到指定窗口的最大尺寸 erase( ) 拷贝空隔到窗口的每一个位置 clear( ) 拷贝空隔到窗口的每一个位置,完全清空窗口 clearok( ) 在下次调用wrefresh( )时清空屏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营养科医生工作计划
- 运输行业安全事故总结计划
- 电商行业营销推广与客户关系管理方案
- 能源行业新能源电力运营管理解决方案
- 2025年马鞍山货运从业资格证考试试题及答案
- 建筑工程招投标与合同管理 项目二任务五工作成果-资格预审评审报告
- 辽宁省沈阳市法库县2023-2024学年三年级下学期5月期中科学试题(含答案)
- 2025年全国中小学生百科知识竞赛题库及答案(450题)
- 出售协议合同标准文本
- 2024年信息系统项目管理师的能力框架分析试题及答案
- GB/T 45159.2-2024机械振动与冲击黏弹性材料动态力学性能的表征第2部分:共振法
- 2025年全球及中国财务报表审计服务行业头部企业市场占有率及排名调研报告
- 2025年浙江金华市轨道交通集团招聘笔试参考题库含答案解析
- 2023年高考化学试卷(河北)(解析卷)
- 电力平安工作规程
- 2024年HSE关键岗位人员考试复习试题附答案
- 《高大模板支撑系统实时安全监测技术规范》
- 物业防雷安全管理制度(3篇)
- 洛阳理工学院毕业论文-混合动力汽车原理前景分析
- 关于纳粹德国元首希特勒的历史资料课件
- 兰州铁路局招聘笔试真题2023
评论
0/150
提交评论