zoukankan      html  css  js  c++  java
  • UNIX下c语言的图形编程curses.h 函式库(2)

    ■ 应用完整□例 下面所举的例子, 即完全利用刚刚所介绍的含式来完成.这个程式可将从键 盘上读取的字元显示在萤幕上, 并且可以上下左右方向键来控制游标的位置 , 当按下 [ESC] 後, 程式即结束. 您有没有发现, 这不就是一个简单全萤幕编辑器的雏形吗? #include <curses.h> /* 引进 curses.h , 并自动引进 stdio.h */ #define StartX 1 /* 决定游标初始位置 */ #define StartY 1 void initial(); main() { int x=StartX; /* 宣告 x,y 并设定其初值 */ int y=StartY; int ch; /* 宣告 ch 为整数,配合 getch() 使用 */ initial(); /* 呼叫 initial(), 启动 curses 模式, */ /* 并完成其它设定 */ box(stdscr,'|','-'); /* 画方框 */ attron(A_REVERSE); /* 开启反白模式 */ mvaddstr(0,20,"Curses Program"); /* 在 (20,0) 处输出反白字元 */ attroff(A_REVERSE); /* 关闭反白模式 */ move(x,y); /* 将游标移至初始位置 */ do { /* 以无限回圈不断等待输入 */ ch=getch(); /* 等待自键盘输入字元 switch(ch) { /* 判断输入字元为何 */ case KEY_UP: --y; /* 判断是否"↑"键被按下 */ break; case KEY_DOWN: ++y; /* 判断是否"↓"键被按下 */ break; case KEY_RIGHT: ++x; /* 判断是否"→"键被按下 */ break; case KEY_LEFT: --x; /* 判断是否"←"键被按下 */ break; case '\r': /* 判断是否 ENTER 键被按下 */ ++y; x=0; break; case '\t': /* 判断是否 TAB 键被按下 */ x+=7; break; case 127: /* 判断是否 BACKSPACE 键被按下 */ mvaddch(y,--x,' ');/* delete 一个字元 */ break; case 27: endwin(); /* 判断是否[ESC]键被按下 */ exit(1); /* 结束 curses 模式 */ /* 结束此程式 */ default: addch(ch); /* 如果不是特殊字元, 将此字元印 出 */ x++; break; } move(y,x); /* 移动游标至现在位置 */ } while (1); } void initial() /* 自定开启 curses 函式 */ { initscr(); cbreak(); nonl(); noecho(); intrflush(stdscr,FALSE); keypad(stdscr,TRUE); refresh(); } ■ 後记 学完了上述的一些命令, 相不相信您已经可以写出一个漂亮的全萤幕编辑 器了? 事实上, curses 提供的函式不下 200 个, 可是笔者认为, 一切再 复杂的函式都可以用本文提到的一些组合变化而成, 学了太多的函式, 只 是徒增自己困扰罢了. 当然, 如果您对其它函式有兴趣, 可以自行参阅 curses 说明档. ( 方法: % man curses ) 本文不过行抛砖引玉之效, 也 希望未来能陆续出现更多同学自行创作的程式. * 任何疑问及建议, 欢迎 e-mail 至 ljh@CCCA.NCTU.edu.tw. 谢谢 ! * 注一: 请参考 /usr/share/lib/termcup /usr/share/lib/terminfo/s/sun 注二: 1.如果是 BSD 的版本, 需使用 cc [file.c] -lcurses -ltermcap 来完成 compile. 2.计中工作站不知何故将原来的 /usr/5bin/cc 更改为 /usr/5bin/cc.org 因此, 您若想在计中工作站 compile curses 程式.需以 /usr/5bin/cc. org 取代 /usr/5bin/cc , 否则 compile 可能发生错误. 3.较旧版的 curses 需同时引进 curses 和 termlib 这两个 library, 因此, 您必须使用 /usr/5bin/cc [file.c] -lcurses -ltermlib 来 compile. 注三: 根据笔者的经验, 上下左右方向键应可正常使用而不会发生问题, 但其它 如 PgUp,PgDn,功能键,Home,End 等特殊键, 很容易因机器, 键盘不同而无 法使用, 因此, 若您的程式须要在不同的机器上使用, 建议您只用方向键来 控制, 其它的特殊键少用为妙. 至於 PgUp,PgDn 一些特殊键的控制方法, 由於较为复杂, 有兴趣的同学可 参 考 tin 原始程式 curses.c 内所使用的一些方法. -- (
    类别:图形编程 查看评论
  • 相关阅读:
    Win10 UWP Tile Generator
    Win10 BackgroundTask
    UWP Tiles
    UWP Ad
    Win10 build package error collections
    Win10 八步打通 Nuget 发布打包
    Win10 UI入门 pivot multiable DataTemplate
    Win10 UI入门 导航滑动条 求UWP工作
    UWP Control Toolkit Collections 求UWP工作
    Win10 UI入门 SliderRectangle
  • 原文地址:https://www.cnblogs.com/dorothychai/p/2268171.html
Copyright © 2011-2022 走看看